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 4C6187F2D for ; Mon, 10 Nov 2014 13:57:02 +0100 (CET) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP; 10 Nov 2014 05:06:45 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.07,352,1413270000"; d="scan'208";a="634424242" Received: from bricha3-mobl3.ger.corp.intel.com ([10.243.20.42]) by orsmga002.jf.intel.com with SMTP; 10 Nov 2014 05:06:42 -0800 Received: by (sSMTP sendmail emulation); Mon, 10 Nov 2014 13:06:41 +0025 Date: Mon, 10 Nov 2014 13:06:41 +0000 From: Bruce Richardson To: Qinglai Xiao Message-ID: <20141110130641.GA12532@bricha3-MOBL3> References: <1415623967-52488-1-git-send-email-jigsaw@gmail.com> <1415623967-52488-2-git-send-email-jigsaw@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1415623967-52488-2-git-send-email-jigsaw@gmail.com> Organization: Intel Shannon Ltd. User-Agent: Mutt/1.5.23 (2014-03-12) Cc: dev@dpdk.org Subject: Re: [dpdk-dev] [PATCH v2 1/2] Add new union field usr in mbuf->hash. 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: Mon, 10 Nov 2014 12:57:04 -0000 On Mon, Nov 10, 2014 at 02:52:46PM +0200, Qinglai Xiao wrote: > This field is added for librte_distributor. User of librte_distributor > is advocated to set value of mbuf->hash.usr before calling > rte_distributor_process. The value of usr is the tag which stands as > identifier of flow. > > Signed-off-by: Qinglai Xiao Acked-by: Bruce Richardson > --- > app/test/test_distributor.c | 18 +++++++++--------- > app/test/test_distributor_perf.c | 4 ++-- > lib/librte_distributor/rte_distributor.c | 2 +- > lib/librte_mbuf/rte_mbuf.h | 1 + > 4 files changed, 13 insertions(+), 12 deletions(-) > > diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c > index ce06436..9e8c06d 100644 > --- a/app/test/test_distributor.c > +++ b/app/test/test_distributor.c > @@ -120,7 +120,7 @@ sanity_test(struct rte_distributor *d, struct rte_mempool *p) > /* now set all hash values in all buffers to zero, so all pkts go to the > * one worker thread */ > for (i = 0; i < BURST; i++) > - bufs[i]->hash.rss = 0; > + bufs[i]->hash.usr = 0; > > rte_distributor_process(d, bufs, BURST); > rte_distributor_flush(d); > @@ -142,7 +142,7 @@ sanity_test(struct rte_distributor *d, struct rte_mempool *p) > if (rte_lcore_count() >= 3) { > clear_packet_count(); > for (i = 0; i < BURST; i++) > - bufs[i]->hash.rss = (i & 1) << 8; > + bufs[i]->hash.usr = (i & 1) << 8; > > rte_distributor_process(d, bufs, BURST); > rte_distributor_flush(d); > @@ -167,7 +167,7 @@ sanity_test(struct rte_distributor *d, struct rte_mempool *p) > * so load gets distributed */ > clear_packet_count(); > for (i = 0; i < BURST; i++) > - bufs[i]->hash.rss = i; > + bufs[i]->hash.usr = i; > > rte_distributor_process(d, bufs, BURST); > rte_distributor_flush(d); > @@ -199,7 +199,7 @@ sanity_test(struct rte_distributor *d, struct rte_mempool *p) > return -1; > } > for (i = 0; i < BIG_BATCH; i++) > - many_bufs[i]->hash.rss = i << 2; > + many_bufs[i]->hash.usr = i << 2; > > for (i = 0; i < BIG_BATCH/BURST; i++) { > rte_distributor_process(d, &many_bufs[i*BURST], BURST); > @@ -280,7 +280,7 @@ sanity_test_with_mbuf_alloc(struct rte_distributor *d, struct rte_mempool *p) > while (rte_mempool_get_bulk(p, (void *)bufs, BURST) < 0) > rte_distributor_process(d, NULL, 0); > for (j = 0; j < BURST; j++) { > - bufs[j]->hash.rss = (i+j) << 1; > + bufs[j]->hash.usr = (i+j) << 1; > rte_mbuf_refcnt_set(bufs[j], 1); > } > > @@ -359,7 +359,7 @@ sanity_test_with_worker_shutdown(struct rte_distributor *d, > /* now set all hash values in all buffers to zero, so all pkts go to the > * one worker thread */ > for (i = 0; i < BURST; i++) > - bufs[i]->hash.rss = 0; > + bufs[i]->hash.usr = 0; > > rte_distributor_process(d, bufs, BURST); > /* at this point, we will have processed some packets and have a full > @@ -372,7 +372,7 @@ sanity_test_with_worker_shutdown(struct rte_distributor *d, > return -1; > } > for (i = 0; i < BURST; i++) > - bufs[i]->hash.rss = 0; > + bufs[i]->hash.usr = 0; > > /* get worker zero to quit */ > zero_quit = 1; > @@ -416,7 +416,7 @@ test_flush_with_worker_shutdown(struct rte_distributor *d, > /* now set all hash values in all buffers to zero, so all pkts go to the > * one worker thread */ > for (i = 0; i < BURST; i++) > - bufs[i]->hash.rss = 0; > + bufs[i]->hash.usr = 0; > > rte_distributor_process(d, bufs, BURST); > /* at this point, we will have processed some packets and have a full > @@ -488,7 +488,7 @@ quit_workers(struct rte_distributor *d, struct rte_mempool *p) > zero_quit = 0; > quit = 1; > for (i = 0; i < num_workers; i++) > - bufs[i]->hash.rss = i << 1; > + bufs[i]->hash.usr = i << 1; > rte_distributor_process(d, bufs, num_workers); > > rte_mempool_put_bulk(p, (void *)bufs, num_workers); > diff --git a/app/test/test_distributor_perf.c b/app/test/test_distributor_perf.c > index b04864c..48ee344 100644 > --- a/app/test/test_distributor_perf.c > +++ b/app/test/test_distributor_perf.c > @@ -159,7 +159,7 @@ perf_test(struct rte_distributor *d, struct rte_mempool *p) > } > /* ensure we have different hash value for each pkt */ > for (i = 0; i < BURST; i++) > - bufs[i]->hash.rss = i; > + bufs[i]->hash.usr = i; > > start = rte_rdtsc(); > for (i = 0; i < (1< @@ -198,7 +198,7 @@ quit_workers(struct rte_distributor *d, struct rte_mempool *p) > > quit = 1; > for (i = 0; i < num_workers; i++) > - bufs[i]->hash.rss = i << 1; > + bufs[i]->hash.usr = i << 1; > rte_distributor_process(d, bufs, num_workers); > > rte_mempool_put_bulk(p, (void *)bufs, num_workers); > diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c > index 656ee5c..3dfec4a 100644 > --- a/lib/librte_distributor/rte_distributor.c > +++ b/lib/librte_distributor/rte_distributor.c > @@ -289,7 +289,7 @@ rte_distributor_process(struct rte_distributor *d, > * use the zero-value to indicate that no packet is > * being processed by a worker. > */ > - new_tag = (next_mb->hash.rss | 1); > + new_tag = (next_mb->hash.usr | 1); > > uint32_t match = 0; > unsigned i; > diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h > index e8f9bfc..f5f8658 100644 > --- a/lib/librte_mbuf/rte_mbuf.h > +++ b/lib/librte_mbuf/rte_mbuf.h > @@ -185,6 +185,7 @@ struct rte_mbuf { > uint16_t id; > } fdir; /**< Filter identifier if FDIR enabled */ > uint32_t sched; /**< Hierarchical scheduler */ > + uint32_t usr; /**< User defined tags. See @rte_distributor_process */ > } hash; /**< hash information */ > > /* second cache line - fields only used in slow path or on TX */ > -- > 1.7.1 >