From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 473537F29 for ; Thu, 6 Nov 2014 14:50:36 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP; 06 Nov 2014 05:59:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,326,1413270000"; d="scan'208";a="603456506" Received: from bricha3-mobl3.ger.corp.intel.com ([10.243.20.32]) by orsmga001.jf.intel.com with SMTP; 06 Nov 2014 05:59:52 -0800 Received: by (sSMTP sendmail emulation); Thu, 06 Nov 2014 13:59:52 +0025 Date: Thu, 6 Nov 2014 13:59:52 +0000 From: Bruce Richardson To: Qinglai Xiao Message-ID: <20141106135951.GB7252@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> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <545b6b74.a96db40a.26af.ffffe7fb@mx.google.com> 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: Thu, 06 Nov 2014 13:50:36 -0000 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