patches for DPDK stable branches
 help / color / Atom feed
From: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
To: David Hunt <david.hunt@intel.com>,
	Bruce Richardson <bruce.richardson@intel.com>
Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org
Subject: [dpdk-stable] [PATCH v5 04/15] distributor: handle worker shutdown in burst mode
Date: Thu,  8 Oct 2020 07:23:12 +0200
Message-ID: <20201008052323.11547-5-l.wojciechow@partner.samsung.com> (raw)
In-Reply-To: <CGME20201008052339eucas1p15697f457b8b96809d04f737e041af08a@eucas1p1.samsung.com>

The burst version of distributor implementation was missing proper
handling of worker shutdown. A worker processing packets received
from distributor can call rte_distributor_return_pkt() function
informing distributor that it want no more packets. Further calls to
rte_distributor_request_pkt() or rte_distributor_get_pkt() however
should inform distributor that new packets are requested again.

Lack of the proper implementation has caused that even after worker
informed about returning last packets, new packets were still sent
from distributor causing deadlocks as no one could get them on worker
side.

This patch adds handling shutdown of the worker in following way:
1) It fixes usage of RTE_DISTRIB_VALID_BUF handshake flag. This flag
was formerly unused in burst implementation and now it is used
for marking valid packets in retptr64 replacing invalid use
of RTE_DISTRIB_RETURN_BUF flag.
2) Uses RTE_DISTRIB_RETURN_BUF as a worker to distributor handshake
in retptr64 to indicate that worker has shutdown.
3) Worker that shuts down blocks also bufptr for itself with
RTE_DISTRIB_RETURN_BUF flag allowing distributor to retrieve any
in flight packets.
4) When distributor receives information about shutdown of a worker,
it: marks worker as not active; retrieves any in flight and backlog
packets and process them to different workers; unlocks bufptr64
by clearing RTE_DISTRIB_RETURN_BUF flag and allowing use in
the future if worker requests any new packages.
5) Do not allow to: send or add to backlog any packets for not
active workers. Such workers are also ignored if matched.
6) Adjust calls to handle_returns() and tags matching procedure
to react for possible activation deactivation of workers.

Fixes: 775003ad2f96 ("distributor: add new burst-capable library")
Cc: david.hunt@intel.com
Cc: stable@dpdk.org

Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
---
 lib/librte_distributor/distributor_private.h |   3 +
 lib/librte_distributor/rte_distributor.c     | 175 +++++++++++++++----
 2 files changed, 146 insertions(+), 32 deletions(-)

diff --git a/lib/librte_distributor/distributor_private.h b/lib/librte_distributor/distributor_private.h
index 489aef2ac..689fe3e18 100644
--- a/lib/librte_distributor/distributor_private.h
+++ b/lib/librte_distributor/distributor_private.h
@@ -155,6 +155,9 @@ struct rte_distributor {
 	enum rte_distributor_match_function dist_match_fn;
 
 	struct rte_distributor_single *d_single;
+
+	uint8_t active[RTE_DISTRIB_MAX_WORKERS];
+	uint8_t activesum;
 };
 
 void
diff --git a/lib/librte_distributor/rte_distributor.c b/lib/librte_distributor/rte_distributor.c
index b720abe03..115443fc0 100644
--- a/lib/librte_distributor/rte_distributor.c
+++ b/lib/librte_distributor/rte_distributor.c
@@ -51,7 +51,7 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	 * Sync with worker on GET_BUF flag.
 	 */
 	while (unlikely(__atomic_load_n(retptr64, __ATOMIC_ACQUIRE)
-			& RTE_DISTRIB_GET_BUF)) {
+			& (RTE_DISTRIB_GET_BUF | RTE_DISTRIB_RETURN_BUF))) {
 		rte_pause();
 		uint64_t t = rte_rdtsc()+100;
 
@@ -67,11 +67,11 @@ rte_distributor_request_pkt(struct rte_distributor *d,
 	for (i = count; i < RTE_DIST_BURST_SIZE; i++)
 		buf->retptr64[i] = 0;
 
-	/* Set Return bit for each packet returned */
+	/* Set VALID_BUF bit for each packet returned */
 	for (i = count; i-- > 0; )
 		buf->retptr64[i] =
 			(((int64_t)(uintptr_t)(oldpkt[i])) <<
-			RTE_DISTRIB_FLAG_BITS) | RTE_DISTRIB_RETURN_BUF;
+			RTE_DISTRIB_FLAG_BITS) | RTE_DISTRIB_VALID_BUF;
 
 	/*
 	 * Finally, set the GET_BUF  to signal to distributor that cache
@@ -97,11 +97,13 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 		return (pkts[0]) ? 1 : 0;
 	}
 
-	/* If bit is set, return
+	/* If any of below bits is set, return.
+	 * GET_BUF is set when distributor hasn't sent any packets yet
+	 * RETURN_BUF is set when distributor must retrieve in-flight packets
 	 * Sync with distributor to acquire bufptrs
 	 */
 	if (__atomic_load_n(&(buf->bufptr64[0]), __ATOMIC_ACQUIRE)
-		& RTE_DISTRIB_GET_BUF)
+		& (RTE_DISTRIB_GET_BUF | RTE_DISTRIB_RETURN_BUF))
 		return -1;
 
 	/* since bufptr64 is signed, this should be an arithmetic shift */
@@ -113,7 +115,7 @@ rte_distributor_poll_pkt(struct rte_distributor *d,
 	}
 
 	/*
-	 * so now we've got the contents of the cacheline into an  array of
+	 * so now we've got the contents of the cacheline into an array of
 	 * mbuf pointers, so toggle the bit so scheduler can start working
 	 * on the next cacheline while we're working.
 	 * Sync with distributor on GET_BUF flag. Release bufptrs.
@@ -175,7 +177,7 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 	 * Sync with worker on GET_BUF flag.
 	 */
 	while (unlikely(__atomic_load_n(retptr64, __ATOMIC_ACQUIRE)
-			& RTE_DISTRIB_GET_BUF)) {
+			& (RTE_DISTRIB_GET_BUF | RTE_DISTRIB_RETURN_BUF))) {
 		rte_pause();
 		uint64_t t = rte_rdtsc()+100;
 
@@ -187,17 +189,25 @@ rte_distributor_return_pkt(struct rte_distributor *d,
 	__atomic_thread_fence(__ATOMIC_ACQUIRE);
 	for (i = 0; i < RTE_DIST_BURST_SIZE; i++)
 		/* Switch off the return bit first */
-		buf->retptr64[i] &= ~RTE_DISTRIB_RETURN_BUF;
+		buf->retptr64[i] = 0;
 
 	for (i = num; i-- > 0; )
 		buf->retptr64[i] = (((int64_t)(uintptr_t)oldpkt[i]) <<
-			RTE_DISTRIB_FLAG_BITS) | RTE_DISTRIB_RETURN_BUF;
+			RTE_DISTRIB_FLAG_BITS) | RTE_DISTRIB_VALID_BUF;
+
+	/* Use RETURN_BUF on bufptr64 to notify distributor that
+	 * we won't read any mbufs from there even if GET_BUF is set.
+	 * This allows distributor to retrieve in-flight already sent packets.
+	 */
+	__atomic_or_fetch(&(buf->bufptr64[0]), RTE_DISTRIB_RETURN_BUF,
+		__ATOMIC_ACQ_REL);
 
-	/* set the GET_BUF but even if we got no returns.
-	 * Sync with distributor on GET_BUF flag. Release retptrs.
+	/* set the RETURN_BUF on retptr64 even if we got no returns.
+	 * Sync with distributor on RETURN_BUF flag. Release retptrs.
+	 * Notify distributor that we don't request more packets any more.
 	 */
 	__atomic_store_n(&(buf->retptr64[0]),
-		buf->retptr64[0] | RTE_DISTRIB_GET_BUF, __ATOMIC_RELEASE);
+		buf->retptr64[0] | RTE_DISTRIB_RETURN_BUF, __ATOMIC_RELEASE);
 
 	return 0;
 }
@@ -267,6 +277,59 @@ find_match_scalar(struct rte_distributor *d,
 	 */
 }
 
+/*
+ * When worker called rte_distributor_return_pkt()
+ * and passed RTE_DISTRIB_RETURN_BUF handshake through retptr64,
+ * distributor must retrieve both inflight and backlog packets assigned
+ * to the worker and reprocess them to another worker.
+ */
+static void
+handle_worker_shutdown(struct rte_distributor *d, unsigned int wkr)
+{
+	struct rte_distributor_buffer *buf = &(d->bufs[wkr]);
+	/* double BURST size for storing both inflights and backlog */
+	struct rte_mbuf *pkts[RTE_DIST_BURST_SIZE * 2];
+	unsigned int pkts_count = 0;
+	unsigned int i;
+
+	/* If GET_BUF is cleared there are in-flight packets sent
+	 * to worker which does not require new packets.
+	 * They must be retrieved and assigned to another worker.
+	 */
+	if (!(__atomic_load_n(&(buf->bufptr64[0]), __ATOMIC_ACQUIRE)
+		& RTE_DISTRIB_GET_BUF))
+		for (i = 0; i < RTE_DIST_BURST_SIZE; i++)
+			if (buf->bufptr64[i] & RTE_DISTRIB_VALID_BUF)
+				pkts[pkts_count++] = (void *)((uintptr_t)
+					(buf->bufptr64[i]
+						>> RTE_DISTRIB_FLAG_BITS));
+
+	/* Make following operations on handshake flags on bufptr64:
+	 * - set GET_BUF to indicate that distributor can overwrite buffer
+	 *     with new packets if worker will make a new request.
+	 * - clear RETURN_BUF to unlock reads on worker side.
+	 */
+	__atomic_store_n(&(buf->bufptr64[0]), RTE_DISTRIB_GET_BUF,
+		__ATOMIC_RELEASE);
+
+	/* Collect backlog packets from worker */
+	for (i = 0; i < d->backlog[wkr].count; i++)
+		pkts[pkts_count++] = (void *)((uintptr_t)
+			(d->backlog[wkr].pkts[i] >> RTE_DISTRIB_FLAG_BITS));
+
+	d->backlog[wkr].count = 0;
+
+	/* Clear both inflight and backlog tags */
+	for (i = 0; i < RTE_DIST_BURST_SIZE; i++) {
+		d->in_flight_tags[wkr][i] = 0;
+		d->backlog[wkr].tags[i] = 0;
+	}
+
+	/* Recursive call */
+	if (pkts_count > 0)
+		rte_distributor_process(d, pkts, pkts_count);
+}
+
 
 /*
  * When the handshake bits indicate that there are packets coming
@@ -285,19 +348,33 @@ handle_returns(struct rte_distributor *d, unsigned int wkr)
 
 	/* Sync on GET_BUF flag. Acquire retptrs. */
 	if (__atomic_load_n(&(buf->retptr64[0]), __ATOMIC_ACQUIRE)
-		& RTE_DISTRIB_GET_BUF) {
+		& (RTE_DISTRIB_GET_BUF | RTE_DISTRIB_RETURN_BUF)) {
 		for (i = 0; i < RTE_DIST_BURST_SIZE; i++) {
-			if (buf->retptr64[i] & RTE_DISTRIB_RETURN_BUF) {
+			if (buf->retptr64[i] & RTE_DISTRIB_VALID_BUF) {
 				oldbuf = ((uintptr_t)(buf->retptr64[i] >>
 					RTE_DISTRIB_FLAG_BITS));
 				/* store returns in a circular buffer */
 				store_return(oldbuf, d, &ret_start, &ret_count);
 				count++;
-				buf->retptr64[i] &= ~RTE_DISTRIB_RETURN_BUF;
+				buf->retptr64[i] &= ~RTE_DISTRIB_VALID_BUF;
 			}
 		}
 		d->returns.start = ret_start;
 		d->returns.count = ret_count;
+
+		/* If worker requested packets with GET_BUF, set it to active
+		 * otherwise (RETURN_BUF), set it to not active.
+		 */
+		d->activesum -= d->active[wkr];
+		d->active[wkr] = !!(buf->retptr64[0] & RTE_DISTRIB_GET_BUF);
+		d->activesum += d->active[wkr];
+
+		/* If worker returned packets without requesting new ones,
+		 * handle all in-flights and backlog packets assigned to it.
+		 */
+		if (unlikely(buf->retptr64[0] & RTE_DISTRIB_RETURN_BUF))
+			handle_worker_shutdown(d, wkr);
+
 		/* Clear for the worker to populate with more returns.
 		 * Sync with distributor on GET_BUF flag. Release retptrs.
 		 */
@@ -322,11 +399,15 @@ release(struct rte_distributor *d, unsigned int wkr)
 	unsigned int i;
 
 	handle_returns(d, wkr);
+	if (unlikely(!d->active[wkr]))
+		return 0;
 
 	/* Sync with worker on GET_BUF flag */
 	while (!(__atomic_load_n(&(d->bufs[wkr].bufptr64[0]), __ATOMIC_ACQUIRE)
 		& RTE_DISTRIB_GET_BUF)) {
 		handle_returns(d, wkr);
+		if (unlikely(!d->active[wkr]))
+			return 0;
 		rte_pause();
 	}
 
@@ -366,7 +447,7 @@ rte_distributor_process(struct rte_distributor *d,
 	int64_t next_value = 0;
 	uint16_t new_tag = 0;
 	uint16_t flows[RTE_DIST_BURST_SIZE] __rte_cache_aligned;
-	unsigned int i, j, w, wid;
+	unsigned int i, j, w, wid, matching_required;
 
 	if (d->alg_type == RTE_DIST_ALG_SINGLE) {
 		/* Call the old API */
@@ -374,11 +455,13 @@ rte_distributor_process(struct rte_distributor *d,
 			mbufs, num_mbufs);
 	}
 
+	for (wid = 0 ; wid < d->num_workers; wid++)
+		handle_returns(d, wid);
+
 	if (unlikely(num_mbufs == 0)) {
 		/* Flush out all non-full cache-lines to workers. */
 		for (wid = 0 ; wid < d->num_workers; wid++) {
 			/* Sync with worker on GET_BUF flag. */
-			handle_returns(d, wid);
 			if (__atomic_load_n(&(d->bufs[wid].bufptr64[0]),
 				__ATOMIC_ACQUIRE) & RTE_DISTRIB_GET_BUF) {
 				release(d, wid);
@@ -388,6 +471,9 @@ rte_distributor_process(struct rte_distributor *d,
 		return 0;
 	}
 
+	if (unlikely(!d->activesum))
+		return 0;
+
 	while (next_idx < num_mbufs) {
 		uint16_t matches[RTE_DIST_BURST_SIZE];
 		unsigned int pkts;
@@ -412,22 +498,30 @@ rte_distributor_process(struct rte_distributor *d,
 		for (; i < RTE_DIST_BURST_SIZE; i++)
 			flows[i] = 0;
 
-		switch (d->dist_match_fn) {
-		case RTE_DIST_MATCH_VECTOR:
-			find_match_vec(d, &flows[0], &matches[0]);
-			break;
-		default:
-			find_match_scalar(d, &flows[0], &matches[0]);
-		}
+		matching_required = 1;
 
+		for (j = 0; j < pkts; j++) {
+			if (unlikely(!d->activesum))
+				return next_idx;
+
+			if (unlikely(matching_required)) {
+				switch (d->dist_match_fn) {
+				case RTE_DIST_MATCH_VECTOR:
+					find_match_vec(d, &flows[0],
+						&matches[0]);
+					break;
+				default:
+					find_match_scalar(d, &flows[0],
+						&matches[0]);
+				}
+				matching_required = 0;
+			}
 		/*
 		 * Matches array now contain the intended worker ID (+1) of
 		 * the incoming packets. Any zeroes need to be assigned
 		 * workers.
 		 */
 
-		for (j = 0; j < pkts; j++) {
-
 			next_mb = mbufs[next_idx++];
 			next_value = (((int64_t)(uintptr_t)next_mb) <<
 					RTE_DISTRIB_FLAG_BITS);
@@ -447,12 +541,18 @@ rte_distributor_process(struct rte_distributor *d,
 			 */
 			/* matches[j] = 0; */
 
-			if (matches[j]) {
+			if (matches[j] && d->active[matches[j]-1]) {
 				struct rte_distributor_backlog *bl =
 						&d->backlog[matches[j]-1];
 				if (unlikely(bl->count ==
 						RTE_DIST_BURST_SIZE)) {
 					release(d, matches[j]-1);
+					if (!d->active[matches[j]-1]) {
+						j--;
+						next_idx--;
+						matching_required = 1;
+						continue;
+					}
 				}
 
 				/* Add to worker that already has flow */
@@ -462,11 +562,21 @@ rte_distributor_process(struct rte_distributor *d,
 				bl->pkts[idx] = next_value;
 
 			} else {
-				struct rte_distributor_backlog *bl =
-						&d->backlog[wkr];
+				struct rte_distributor_backlog *bl;
+
+				while (unlikely(!d->active[wkr]))
+					wkr = (wkr + 1) % d->num_workers;
+				bl = &d->backlog[wkr];
+
 				if (unlikely(bl->count ==
 						RTE_DIST_BURST_SIZE)) {
 					release(d, wkr);
+					if (!d->active[wkr]) {
+						j--;
+						next_idx--;
+						matching_required = 1;
+						continue;
+					}
 				}
 
 				/* Add to current worker worker */
@@ -485,9 +595,7 @@ rte_distributor_process(struct rte_distributor *d,
 						matches[w] = wkr+1;
 			}
 		}
-		wkr++;
-		if (wkr >= d->num_workers)
-			wkr = 0;
+		wkr = (wkr + 1) % d->num_workers;
 	}
 
 	/* Flush out all non-full cache-lines to workers. */
@@ -663,6 +771,9 @@ rte_distributor_create(const char *name,
 	for (i = 0 ; i < num_workers ; i++)
 		d->backlog[i].tags = &d->in_flight_tags[i][RTE_DIST_BURST_SIZE];
 
+	memset(d->active, 0, sizeof(d->active));
+	d->activesum = 0;
+
 	dist_burst_list = RTE_TAILQ_CAST(rte_dist_burst_tailq.head,
 					  rte_dist_burst_list);
 
-- 
2.17.1


  parent reply index

Thread overview: 134+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20200915193449.13310-1-l.wojciechow@partner.samsung.com>
     [not found] ` <CGME20200915193457eucas1p2adbe25c41a0e4ef16c029e7bff104503@eucas1p2.samsung.com>
2020-09-15 19:34   ` [dpdk-stable] [PATCH v1 1/6] app/test: fix deadlock in distributor test Lukasz Wojciechowski
2020-09-17 11:21     ` David Hunt
2020-09-17 14:01       ` Lukasz Wojciechowski
     [not found] ` <CGME20200915193457eucas1p2321d28b6abf69f244cd7c1e61ed0620e@eucas1p2.samsung.com>
2020-09-15 19:34   ` [dpdk-stable] [PATCH v1 2/6] app/test: synchronize statistics between lcores Lukasz Wojciechowski
2020-09-17 11:50     ` David Hunt
     [not found] ` <CGME20200915193458eucas1p1d9308e63063eda28f96eedba3a361a2b@eucas1p1.samsung.com>
2020-09-15 19:34   ` [dpdk-stable] [PATCH v1 3/6] app/test: fix freeing mbufs in distributor tests Lukasz Wojciechowski
2020-09-17 12:34     ` David Hunt
2020-09-22 12:42     ` [dpdk-stable] [dpdk-dev] " David Marchand
2020-09-23  1:55       ` Lukasz Wojciechowski
     [not found] ` <CGME20200915193459eucas1p19f5d1cbea87d7dc3bbd2638cdb96a31b@eucas1p1.samsung.com>
2020-09-15 19:34   ` [dpdk-stable] [PATCH v1 4/6] app/test: collect return mbufs in distributor test Lukasz Wojciechowski
2020-09-17 12:37     ` David Hunt
     [not found] ` <CGME20200915193500eucas1p2b079e1dcfd2d54e01a5630609b82b370@eucas1p2.samsung.com>
2020-09-15 19:34   ` [dpdk-stable] [PATCH v1 5/6] distributor: fix missing handshake synchronization Lukasz Wojciechowski
2020-09-17 13:22     ` David Hunt
     [not found] ` <CGME20200915193501eucas1p2333f0b08077c06ba04b89ce192072f9a@eucas1p2.samsung.com>
2020-09-15 19:34   ` [dpdk-stable] [PATCH v1 6/6] distributor: fix handshake deadlock Lukasz Wojciechowski
2020-09-17 13:28     ` David Hunt
     [not found] ` <20200923014713.16932-1-l.wojciechow@partner.samsung.com>
     [not found]   ` <CGME20200923014718eucas1p11fdcd774fef7b9e077e14e01c9f951d5@eucas1p1.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 1/8] app/test: fix deadlock in distributor test Lukasz Wojciechowski
     [not found]   ` <CGME20200923014719eucas1p2f26000109e86a649796e902c30e58bf0@eucas1p2.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 2/8] app/test: synchronize statistics between lcores Lukasz Wojciechowski
2020-09-23  4:30       ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
2020-09-23 12:47         ` Lukasz Wojciechowski
     [not found]   ` <CGME20200923014719eucas1p165c419cff4f265cff8add8cc818210ff@eucas1p1.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 3/8] app/test: fix freeing mbufs in distributor tests Lukasz Wojciechowski
     [not found]   ` <CGME20200923014720eucas1p2bd5887c96c24839f364810a1bbe840da@eucas1p2.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 4/8] app/test: collect return mbufs in distributor test Lukasz Wojciechowski
     [not found]   ` <CGME20200923014721eucas1p1d22ac56c9b9e4fb49ac73d72d51a7a23@eucas1p1.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 5/8] distributor: fix missing handshake synchronization Lukasz Wojciechowski
     [not found]   ` <CGME20200923014722eucas1p2c2ef63759f4b800c1b5a80094e07e384@eucas1p2.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 6/8] distributor: fix handshake deadlock Lukasz Wojciechowski
     [not found]   ` <CGME20200923014723eucas1p2a7c7210a55289b3739faff4f5ed72e30@eucas1p2.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 7/8] distributor: do not use oldpkt when not needed Lukasz Wojciechowski
     [not found]   ` <CGME20200923014724eucas1p13d3c0428a15bea26def7a4343251e4e4@eucas1p1.samsung.com>
2020-09-23  1:47     ` [dpdk-stable] [PATCH v2 8/8] distributor: align API documentation with code Lukasz Wojciechowski
     [not found]   ` <20200923132541.21417-1-l.wojciechow@partner.samsung.com>
     [not found]     ` <CGME20200923132545eucas1p10db12d91121c9afdbab338bb60c8ed37@eucas1p1.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 1/8] app/test: fix deadlock in distributor test Lukasz Wojciechowski
     [not found]     ` <CGME20200923132546eucas1p212b6eede801514b544d82d41f5b7e4b8@eucas1p2.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 2/8] app/test: synchronize statistics between lcores Lukasz Wojciechowski
     [not found]     ` <CGME20200923132547eucas1p130620b0d5f3080a7a57234838a992e0e@eucas1p1.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 3/8] app/test: fix freeing mbufs in distributor tests Lukasz Wojciechowski
     [not found]     ` <CGME20200923132548eucas1p2a54328cddb79ae5e876eb104217d585f@eucas1p2.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 4/8] app/test: collect return mbufs in distributor test Lukasz Wojciechowski
     [not found]     ` <CGME20200923132549eucas1p29fc391c3f236fa704ff800774ab851f0@eucas1p2.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 5/8] distributor: fix missing handshake synchronization Lukasz Wojciechowski
     [not found]     ` <CGME20200923132550eucas1p2ce158dd81ccc04abcab4130d8cb391f4@eucas1p2.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 6/8] distributor: fix handshake deadlock Lukasz Wojciechowski
     [not found]     ` <CGME20200923132550eucas1p1ce21011562d0a00cccfd4ae3f0be4ff9@eucas1p1.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 7/8] distributor: do not use oldpkt when not needed Lukasz Wojciechowski
     [not found]     ` <CGME20200923132551eucas1p214a5f78c61e891c5e7b6cddc038d0e2e@eucas1p2.samsung.com>
2020-09-23 13:25       ` [dpdk-stable] [PATCH v3 8/8] distributor: align API documentation with code Lukasz Wojciechowski
     [not found]     ` <20200925224209.12173-1-l.wojciechow@partner.samsung.com>
     [not found]       ` <CGME20200925224216eucas1p1e8e1d0ecab4bbbf6e43b117c1d210649@eucas1p1.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 1/8] test/distributor: fix deadlock with freezed worker Lukasz Wojciechowski
2020-09-27 23:34           ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
2020-09-30 20:22             ` Lukasz Wojciechowski
     [not found]       ` <CGME20200925224217eucas1p1bb5f73109b4aeed8f2badf311fa8dfb5@eucas1p1.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 2/8] test/distributor: synchronize lcores statistics Lukasz Wojciechowski
2020-09-29  5:49           ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
2020-10-02 11:25             ` Lukasz Wojciechowski
2020-10-08 20:47               ` Lukasz Wojciechowski
2020-10-16  5:43               ` Honnappa Nagarahalli
2020-10-16 12:43                 ` Lukasz Wojciechowski
2020-10-16 12:58                   ` Lukasz Wojciechowski
2020-10-16 15:42                     ` Honnappa Nagarahalli
2020-10-17  3:34                       ` Lukasz Wojciechowski
     [not found]       ` <CGME20200925224218eucas1p2383ff0ebdaee18b581f5f731476f05ab@eucas1p2.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 3/8] distributor: do not use oldpkt when not needed Lukasz Wojciechowski
     [not found]       ` <CGME20200925224218eucas1p221c1af87b0e4547547106503cd336afd@eucas1p2.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 4/8] test/distributor: fix freeing mbufs Lukasz Wojciechowski
     [not found]       ` <CGME20200925224219eucas1p2d61447fef421573d653d2376423ecce0@eucas1p2.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 5/8] test/distributor: collect return mbufs Lukasz Wojciechowski
     [not found]       ` <CGME20200925224220eucas1p1a44e99a1d7750d37d5aefa61f329209b@eucas1p1.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 6/8] distributor: fix missing handshake synchronization Lukasz Wojciechowski
     [not found]       ` <CGME20200925224221eucas1p151297834da32a0f7cfdffc120f57ab3a@eucas1p1.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 7/8] distributor: fix handshake deadlock Lukasz Wojciechowski
     [not found]       ` <CGME20200925224222eucas1p1b10891c21bfef6784777526af4443dde@eucas1p1.samsung.com>
2020-09-25 22:42         ` [dpdk-stable] [PATCH v4 8/8] distributor: align API documentation with code Lukasz Wojciechowski
     [not found]       ` <20201008052323.11547-1-l.wojciechow@partner.samsung.com>
     [not found]         ` <CGME20201008052337eucas1p22b9e89987caf151ba8771442385fec16@eucas1p2.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 01/15] distributor: fix missing handshake synchronization Lukasz Wojciechowski
     [not found]         ` <CGME20201008052338eucas1p2d26a8705b17d07fd24056f0aeaf3504e@eucas1p2.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 02/15] distributor: fix handshake deadlock Lukasz Wojciechowski
     [not found]         ` <CGME20201008052339eucas1p1a4e571cc3f5a277badff9d352ad7da8e@eucas1p1.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 03/15] distributor: do not use oldpkt when not needed Lukasz Wojciechowski
2020-10-08  8:13             ` David Hunt
     [not found]         ` <CGME20201008052339eucas1p15697f457b8b96809d04f737e041af08a@eucas1p1.samsung.com>
2020-10-08  5:23           ` Lukasz Wojciechowski [this message]
2020-10-08 14:26             ` [dpdk-stable] [PATCH v5 04/15] distributor: handle worker shutdown in burst mode David Hunt
2020-10-08 21:07               ` Lukasz Wojciechowski
2020-10-09 12:13                 ` David Hunt
2020-10-09 20:43                   ` Lukasz Wojciechowski
     [not found]         ` <CGME20201008052340eucas1p1451f2bf1b6475067491753274547b837@eucas1p1.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 05/15] test/distributor: fix shutdown of busy worker Lukasz Wojciechowski
     [not found]         ` <CGME20201008052341eucas1p2379b186206e5bf481e3c680de46e5c16@eucas1p2.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 06/15] test/distributor: synchronize lcores statistics Lukasz Wojciechowski
     [not found]         ` <CGME20201008052342eucas1p2376e75d9ac38f5054ca393b0ef7e663d@eucas1p2.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 07/15] distributor: fix return pkt calls in single mode Lukasz Wojciechowski
2020-10-08 14:32             ` David Hunt
     [not found]         ` <CGME20201008052342eucas1p19e8474360d1f7dacd4164b3e21e54290@eucas1p1.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 08/15] test/distributor: fix freeing mbufs Lukasz Wojciechowski
     [not found]         ` <CGME20201008052343eucas1p1649655353d6c76cdf6320a04e8d43f32@eucas1p1.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 09/15] test/distributor: collect return mbufs Lukasz Wojciechowski
     [not found]         ` <CGME20201008052344eucas1p270b04ad2c4346e6beb5f5ef844827085@eucas1p2.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 10/15] distributor: align API documentation with code Lukasz Wojciechowski
2020-10-08 14:35             ` David Hunt
     [not found]         ` <CGME20201008052345eucas1p29e14456610d4ed48c09b8cf7bd338e18@eucas1p2.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 11/15] test/distributor: replace delays with spin locks Lukasz Wojciechowski
2020-10-09 12:23             ` David Hunt
     [not found]         ` <CGME20201008052345eucas1p17a05f99986032885a0316d3419cdea2d@eucas1p1.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 12/15] distributor: fix scalar matching Lukasz Wojciechowski
2020-10-09 12:31             ` David Hunt
2020-10-09 12:35               ` David Hunt
2020-10-09 21:02                 ` Lukasz Wojciechowski
     [not found]         ` <CGME20201008052347eucas1p1570239523104a0d609c928d8b149ebdf@eucas1p1.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 14/15] distributor: fix flushing in flight packets Lukasz Wojciechowski
2020-10-09 13:10             ` David Hunt
     [not found]         ` <CGME20201008052348eucas1p183cfbe10d10bd98c7a63a34af98b80df@eucas1p1.samsung.com>
2020-10-08  5:23           ` [dpdk-stable] [PATCH v5 15/15] distributor: fix clearing returns buffer Lukasz Wojciechowski
2020-10-09 13:12             ` David Hunt
     [not found]         ` <20201009220202.20834-1-l.wojciechow@partner.samsung.com>
     [not found]           ` <CGME20201009220229eucas1p17ad627f31005ed506c5422b93ad6d112@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 01/15] distributor: fix missing handshake synchronization Lukasz Wojciechowski
     [not found]           ` <CGME20201009220231eucas1p217c48d880aaa7f15e4351f92eede01b6@eucas1p2.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 02/15] distributor: fix handshake deadlock Lukasz Wojciechowski
     [not found]           ` <CGME20201009220232eucas1p201d3b81574b7ec42ff3fb18f4bbfcbea@eucas1p2.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 03/15] distributor: do not use oldpkt when not needed Lukasz Wojciechowski
     [not found]           ` <CGME20201009220233eucas1p285b4d01402c0c8bcfd018673afeb05eb@eucas1p2.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 04/15] distributor: handle worker shutdown in burst mode Lukasz Wojciechowski
     [not found]           ` <CGME20201009220235eucas1p17ded8b5bb42f2fef159a5715ef6fbca7@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 05/15] test/distributor: fix shutdown of busy worker Lukasz Wojciechowski
     [not found]           ` <CGME20201009220236eucas1p192e34b3bbf00681ec90de296abd1a6b5@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 06/15] test/distributor: synchronize lcores statistics Lukasz Wojciechowski
     [not found]           ` <CGME20201009220238eucas1p2e86c0026064774e5b494c16c7fd384ec@eucas1p2.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 07/15] distributor: fix return pkt calls in single mode Lukasz Wojciechowski
     [not found]           ` <CGME20201009220246eucas1p1283b16f1f54c572b5952ca9334d667da@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 08/15] test/distributor: fix freeing mbufs Lukasz Wojciechowski
     [not found]           ` <CGME20201009220247eucas1p1a783663e586127cbfd406a61e13c40eb@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 09/15] test/distributor: collect return mbufs Lukasz Wojciechowski
     [not found]           ` <CGME20201009220248eucas1p156346857c1aab2340ccd7549abdce966@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 10/15] distributor: align API documentation with code Lukasz Wojciechowski
     [not found]           ` <CGME20201009220250eucas1p18587737171d82a9bde52c767ee8ed24b@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 11/15] test/distributor: replace delays with spin locks Lukasz Wojciechowski
     [not found]           ` <CGME20201009220253eucas1p14078ab159186d2c26e787b3b2ed68062@eucas1p1.samsung.com>
2020-10-09 22:01             ` [dpdk-stable] [PATCH v6 12/15] distributor: fix scalar matching Lukasz Wojciechowski
     [not found]           ` <CGME20201009220254eucas1p187bad9a066f00ee4c05ec6ca7fb4decd@eucas1p1.samsung.com>
2020-10-09 22:02             ` [dpdk-stable] [PATCH v6 14/15] distributor: fix flushing in flight packets Lukasz Wojciechowski
     [not found]           ` <CGME20201009220255eucas1p1e7a286684291e586ebb22cb0a2117e50@eucas1p1.samsung.com>
2020-10-09 22:02             ` [dpdk-stable] [PATCH v6 15/15] distributor: fix clearing returns buffer Lukasz Wojciechowski
     [not found]           ` <20201010160508.19709-1-l.wojciechow@partner.samsung.com>
     [not found]             ` <CGME20201010160515eucas1p18003d01d8217cdf04be3cba2e32f969f@eucas1p1.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 01/16] distributor: fix missing handshake synchronization Lukasz Wojciechowski
2020-10-15 23:47                 ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
2020-10-17  3:13                   ` Lukasz Wojciechowski
     [not found]             ` <CGME20201010160517eucas1p2141c0bb6097a05aa99ed8efdf5fb7512@eucas1p2.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 02/16] distributor: fix handshake deadlock Lukasz Wojciechowski
     [not found]             ` <CGME20201010160523eucas1p19287c5bf3b7e2818c730ae23f514853f@eucas1p1.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 03/16] distributor: do not use oldpkt when not needed Lukasz Wojciechowski
     [not found]             ` <CGME20201010160525eucas1p2314810086b9dd1c8cddf90eabe800363@eucas1p2.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 04/16] distributor: handle worker shutdown in burst mode Lukasz Wojciechowski
     [not found]             ` <CGME20201010160527eucas1p2f55cb0fc45bf3647234cdfa251e542fc@eucas1p2.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 05/16] test/distributor: fix shutdown of busy worker Lukasz Wojciechowski
     [not found]             ` <CGME20201010160528eucas1p2b9b8189aef51c18d116f97ccebf5719c@eucas1p2.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 06/16] test/distributor: synchronize lcores statistics Lukasz Wojciechowski
2020-10-16  5:13                 ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
2020-10-17  3:23                   ` Lukasz Wojciechowski
     [not found]             ` <CGME20201010160530eucas1p15baba6fba44a7caee8b4b0ff778a961d@eucas1p1.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 07/16] distributor: fix return pkt calls in single mode Lukasz Wojciechowski
     [not found]             ` <CGME20201010160536eucas1p2b20e729b90d66eddd03618e98d38c179@eucas1p2.samsung.com>
2020-10-10 16:04               ` [dpdk-stable] [PATCH v7 08/16] test/distributor: fix freeing mbufs Lukasz Wojciechowski
2020-10-16  5:12                 ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
2020-10-17  3:28                   ` Lukasz Wojciechowski
     [not found]             ` <CGME20201010160538eucas1p19298667f236209cfeaa4745f9bb3aae6@eucas1p1.samsung.com>
2020-10-10 16:05               ` [dpdk-stable] [PATCH v7 09/16] test/distributor: collect return mbufs Lukasz Wojciechowski
2020-10-16  4:53                 ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
2020-10-16  5:13                 ` Honnappa Nagarahalli
2020-10-17  3:29                   ` Lukasz Wojciechowski
     [not found]             ` <CGME20201010160540eucas1p2d942834b4749672c433a37a8fe520bd1@eucas1p2.samsung.com>
2020-10-10 16:05               ` [dpdk-stable] [PATCH v7 10/16] distributor: align API documentation with code Lukasz Wojciechowski
     [not found]             ` <CGME20201010160541eucas1p11d079bad2b7500f9ab927463e1eeac04@eucas1p1.samsung.com>
2020-10-10 16:05               ` [dpdk-stable] [PATCH v7 11/16] test/distributor: replace delays with spin locks Lukasz Wojciechowski
     [not found]             ` <CGME20201010160548eucas1p193e4f234da1005b91f22a8e7cb1d3226@eucas1p1.samsung.com>
2020-10-10 16:05               ` [dpdk-stable] [PATCH v7 12/16] distributor: fix scalar matching Lukasz Wojciechowski
     [not found]             ` <CGME20201010160551eucas1p171642aa2d451e501287915824bfe7c24@eucas1p1.samsung.com>
2020-10-10 16:05               ` [dpdk-stable] [PATCH v7 14/16] distributor: fix flushing in flight packets Lukasz Wojciechowski
     [not found]             ` <CGME20201010160552eucas1p2efdec872c4aea2b63af29c84e9a5b52d@eucas1p2.samsung.com>
2020-10-10 16:05               ` [dpdk-stable] [PATCH v7 15/16] distributor: fix clearing returns buffer Lukasz Wojciechowski
     [not found]             ` <20201017030701.16134-1-l.wojciechow@partner.samsung.com>
     [not found]               ` <CGME20201017030710eucas1p17fb6129fd3414b4b6b70dcd593c01a40@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 01/17] distributor: fix missing handshake synchronization Lukasz Wojciechowski
2020-10-17 21:05                   ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
     [not found]               ` <CGME20201017030711eucas1p1b70f13e4636ad7c3e842b48726ae1845@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 02/17] distributor: fix handshake deadlock Lukasz Wojciechowski
     [not found]               ` <CGME20201017030711eucas1p14855de461cd9d6a4fd3e4bac031b53e5@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 03/17] distributor: do not use oldpkt when not needed Lukasz Wojciechowski
     [not found]               ` <CGME20201017030712eucas1p1ce19efadc60ed2888dc615cbb2549bdc@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 04/17] distributor: handle worker shutdown in burst mode Lukasz Wojciechowski
     [not found]               ` <CGME20201017030713eucas1p1173c2178e647be341db2da29078c8d5d@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 05/17] test/distributor: fix shutdown of busy worker Lukasz Wojciechowski
     [not found]               ` <CGME20201017030714eucas1p292bd71a85ea6d638256c21d279c8d533@eucas1p2.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 06/17] distributor: fix return pkt calls in single mode Lukasz Wojciechowski
     [not found]               ` <CGME20201017030715eucas1p2366d1f0ce16a219b21542bb26e4588a6@eucas1p2.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 07/17] test/distributor: fix freeing mbufs Lukasz Wojciechowski
     [not found]               ` <CGME20201017030716eucas1p2911112ee3c9e0a3f3dd9a811cbafe77b@eucas1p2.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 08/17] test/distributor: synchronize lcores statistics Lukasz Wojciechowski
2020-10-17 21:11                   ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli
     [not found]               ` <CGME20201017030717eucas1p1ae327494575f851af4bdf77f3e8c83ae@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 09/17] test/distributor: collect return mbufs Lukasz Wojciechowski
     [not found]               ` <CGME20201017030718eucas1p256e1f934af12af2a6b07640c9de7a766@eucas1p2.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 10/17] distributor: align API documentation with code Lukasz Wojciechowski
     [not found]               ` <CGME20201017030719eucas1p13b13db1fbc3715e19e81bb4be4635b7d@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 11/17] test/distributor: replace delays with spin locks Lukasz Wojciechowski
     [not found]               ` <CGME20201017030720eucas1p1fe683996638c3692cae530e67271b79b@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 12/17] distributor: fix scalar matching Lukasz Wojciechowski
     [not found]               ` <CGME20201017030721eucas1p2a1032e6c78d99f903ea539e49f057a83@eucas1p2.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 14/17] distributor: fix flushing in flight packets Lukasz Wojciechowski
     [not found]               ` <CGME20201017030721eucas1p1f3307c1e4e69c65186ad8f2fb18f5f74@eucas1p1.samsung.com>
2020-10-17  3:06                 ` [dpdk-stable] [PATCH v8 15/17] distributor: fix clearing returns buffer Lukasz Wojciechowski
     [not found]               ` <CGME20201017030722eucas1p107dc8d3eb2d9ef620065deba31cf08ed@eucas1p1.samsung.com>
2020-10-17  3:07                 ` [dpdk-stable] [PATCH v8 16/17] test/distributor: ensure all packets are delivered Lukasz Wojciechowski
     [not found]               ` <CGME20201017030723eucas1p16904cabfd94afa4fe751c072077e09ae@eucas1p1.samsung.com>
2020-10-17  3:07                 ` [dpdk-stable] [PATCH v8 17/17] test/distributor: fix quitting workers Lukasz Wojciechowski
2020-10-17 21:15                   ` [dpdk-stable] [dpdk-dev] " Honnappa Nagarahalli

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201008052323.11547-5-l.wojciechow@partner.samsung.com \
    --to=l.wojciechow@partner.samsung.com \
    --cc=bruce.richardson@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=stable@dpdk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox