From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id EE7382E89 for ; Fri, 7 Nov 2014 10:35:53 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga103.jf.intel.com with ESMTP; 07 Nov 2014 01:43:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,331,1413270000"; d="scan'208";a="633200265" Received: from bricha3-mobl3.ger.corp.intel.com ([10.243.20.32]) by orsmga002.jf.intel.com with SMTP; 07 Nov 2014 01:45:22 -0800 Received: by (sSMTP sendmail emulation); Fri, 07 Nov 2014 09:45:21 +0025 Date: Fri, 7 Nov 2014 09:45:21 +0000 From: Bruce Richardson To: jigsaw Message-ID: <20141107094521.GB4628@bricha3-MOBL3> References: <1415194237-1219-1-git-send-email-jigsaw@gmail.com> <20141106092228.GA3056@bricha3-MOBL3> <9190772.1rnKUO3oNV@xps13> <545b6b74.a96db40a.26af.ffffe7fb@mx.google.com> <20141106135951.GB7252@bricha3-MOBL3> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] =?utf-8?b?562U5aSNOiAgW1BBVENIXSBBZGQgdXNlciBkZWZpbmVk?= =?utf-8?q?_tag_calculation_callback_tolibrte=5Fdistributor=2E?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 07 Nov 2014 09:35:54 -0000 On Thu, Nov 06, 2014 at 09:52:25PM +0200, jigsaw wrote: > Hi Bruce, > > Actually IMHO it is good to leave the freedom to user to decide how to > interpret the tag value, i.e. remove the OR 1 bit. > If the tag value is zero, then we assume the programmer know what he is > doing. Of course this shall be clearly documented in the comment/doxgen. > > > thx & > rgds, > -qinglai I don't believe that will work. If a tag value of zero is ever passed in, then it will start matching against cores which are not doing any processing. Then it will get queued up to get sent to those cores, and so never get processed. We need a bit somewhere inside the tag to permanently set - though it can be configurable. /Bruce > > On Thu, Nov 6, 2014 at 8:01 PM, jigsaw wrote: > > > Hi Bruce, > > > > In my use case, unfortunately the tag is not hash. And the tag can be on > > either low or high bits, depending on configuration. > > I wonder if it is possible to let the user to decide which bit to mask, > > i.e. to add another param to rte_distributor_create to define the mask. > > > > thx & > > rgds, > > -qinglai > > > > On Thu, Nov 6, 2014 at 3:59 PM, Bruce Richardson < > > bruce.richardson@intel.com> wrote: > > > >> On Thu, Nov 06, 2014 at 02:36:09PM +0200, Qinglai Xiao wrote: > >> > Hi Bruce, > >> > > >> > There is a subtle case in which tag values are 2 and 3, respectively. > >> Then these two tags cannot be distinguished. There should be a better way > >> so as to handle this situation. > >> > >> It's not just in that, case, it's in any case where a pair of tags differ > >> by > >> only a single bit. I've been assuming that the tag is likely to be a hash > >> value in most cases - given that it's only 32-bit - in which case it just > >> doesn't > >> matter which bit we chose to permanently set to 1, but if there are > >> scenarios > >> where it's likely that the low bits are used but the high ones not so, we > >> can > >> look to change which bit is set to 1. Either way, the distributor just > >> uses a > >> 31-bit tag rather than a 32-bit one. > >> > >> /Bruce > >> > >> > > >> > thx & > >> > rgds > >> > -qinglai > >> > > >> > -----原始邮件----- > >> > 发件人: "Thomas Monjalon" > >> > 发送时间: ‎2014/‎11/‎6 12:36 > >> > 收件人: "Bruce Richardson" > >> > 抄送: "dev@dpdk.org" ; "jigsaw" > >> > 主题: Re: [dpdk-dev] [PATCH] Add user defined tag calculation callback > >> tolibrte_distributor. > >> > > >> > 2014-11-06 09:22, Bruce Richardson: > >> > > On Wed, Nov 05, 2014 at 07:24:13PM +0200, jigsaw wrote: > >> > > > > >> http://dpdk.org/browse/dpdk/tree/lib/librte_distributor/rte_distributor.c#n285 > >> > > > > >> > > > new_tag = (next_mb->hash.rss | 1); > >> > > > > >> > > > Why the logical OR is needed? > >> > > > >> > > That's needed to ensure that we never track a tag with an actual > >> value of zero. > >> > > We instead always force the low bit to be 1, so that we can use zero > >> as an > >> > > "empty" value. > >> > > >> > Bruce, could you check how this code may be better commented please? > >> > This discussion shows that the distributor library probably needs more > >> > explanations in the code or doxygen. > >> > > >> > Thanks > >> > -- > >> > Thomas > >> > > > >