patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Xueming Li <xuemingl@nvidia.com>
To: Shijith Thotton <sthotton@marvell.com>
Cc: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>,
	dpdk stable <stable@dpdk.org>
Subject: patch 'eventdev/timer: fix timeout event wait behavior' has been queued to stable release 22.11.3
Date: Sun, 25 Jun 2023 14:33:56 +0800	[thread overview]
Message-ID: <20230625063544.11183-19-xuemingl@nvidia.com> (raw)
In-Reply-To: <20230625063544.11183-1-xuemingl@nvidia.com>

Hi,

FYI, your patch has been queued to stable release 22.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/27/23. So please
shout if anyone has objections.

Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.

Queued patches are on a temporary branch at:
https://git.dpdk.org/dpdk-stable/log/?h=22.11-staging

This queued commit can be viewed at:
https://git.dpdk.org/dpdk-stable/commit/?h=22.11-staging&id=ca72f7fdba88330e11575640a89bbfaacdb9d054

Thanks.

Xueming Li <xuemingl@nvidia.com>

---
From ca72f7fdba88330e11575640a89bbfaacdb9d054 Mon Sep 17 00:00:00 2001
From: Shijith Thotton <sthotton@marvell.com>
Date: Tue, 21 Mar 2023 10:50:23 +0530
Subject: [PATCH] eventdev/timer: fix timeout event wait behavior
Cc: Xueming Li <xuemingl@nvidia.com>

[ upstream commit fb9c213317b5e07918c9306f2036f8cc07126a85 ]

Improved the accuracy and consistency of timeout event wait behavior by
refactoring it. Previously, the delay function used for waiting could be
inaccurate, leading to inconsistent results. This commit updates the
wait behavior to use a timeout-based approach, enabling the wait for the
exact number of timer ticks before proceeding.

The new function timeout_event_dequeue mimics the behavior of the tested
systems closely. It dequeues timer expiry events until either the
expected number of events have been dequeued or the specified time has
elapsed. The WAIT_TICKS macro defines the waiting behavior based on the
type of timer being used (software or hardware).

Fixes: d1f3385d0076 ("test: add event timer adapter auto-test")

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Acked-by: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
---
 app/test/test_event_timer_adapter.c | 165 +++++++++++-----------------
 1 file changed, 67 insertions(+), 98 deletions(-)

diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c
index 1a440dfd10..12d5936c60 100644
--- a/app/test/test_event_timer_adapter.c
+++ b/app/test/test_event_timer_adapter.c
@@ -57,9 +57,10 @@ static uint64_t global_bkt_tck_ns;
 static uint64_t global_info_bkt_tck_ns;
 static volatile uint8_t arm_done;
 
-#define CALC_TICKS(tks)					\
-	ceil((double)(tks * global_bkt_tck_ns) / global_info_bkt_tck_ns)
+#define CALC_TICKS(tks) ceil((double)((tks) * global_bkt_tck_ns) / global_info_bkt_tck_ns)
 
+/* Wait double timeout ticks for software and an extra tick for hardware */
+#define WAIT_TICKS(tks) (using_services ? 2 * (tks) : tks + 1)
 
 static bool using_services;
 static uint32_t test_lcore1;
@@ -441,10 +442,31 @@ timdev_teardown(void)
 	rte_mempool_free(eventdev_test_mempool);
 }
 
+static inline uint16_t
+timeout_event_dequeue(struct rte_event *evs, uint64_t nb_evs, uint64_t ticks)
+{
+	uint16_t ev_cnt = 0;
+	uint64_t end_cycle;
+
+	if (using_services && nb_evs == MAX_TIMERS)
+		ticks = 2 * ticks;
+
+	end_cycle = rte_rdtsc() + ticks * global_bkt_tck_ns * rte_get_tsc_hz() / 1E9;
+
+	while (ev_cnt < nb_evs && rte_rdtsc() < end_cycle) {
+		ev_cnt += rte_event_dequeue_burst(evdev, TEST_PORT_ID, &evs[ev_cnt], nb_evs, 0);
+		rte_pause();
+	}
+
+	return ev_cnt;
+}
+
 static inline int
 test_timer_state(void)
 {
 	struct rte_event_timer *ev_tim;
+	const uint64_t max_ticks = 100;
+	uint64_t ticks, wait_ticks;
 	struct rte_event ev;
 	const struct rte_event_timer tim = {
 		.ev.op = RTE_EVENT_OP_NEW,
@@ -455,11 +477,10 @@ test_timer_state(void)
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
 	};
 
-
 	rte_mempool_get(eventdev_test_mempool, (void **)&ev_tim);
 	*ev_tim = tim;
 	ev_tim->ev.event_ptr = ev_tim;
-	ev_tim->timeout_ticks = CALC_TICKS(120);
+	ev_tim->timeout_ticks = CALC_TICKS(max_ticks + 20);
 
 	TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 0,
 			"Armed timer exceeding max_timeout.");
@@ -467,8 +488,9 @@ test_timer_state(void)
 			"Improper timer state set expected %d returned %d",
 			RTE_EVENT_TIMER_ERROR_TOOLATE, ev_tim->state);
 
+	ticks = 10;
 	ev_tim->state = RTE_EVENT_TIMER_NOT_ARMED;
-	ev_tim->timeout_ticks = CALC_TICKS(10);
+	ev_tim->timeout_ticks = CALC_TICKS(ticks);
 
 	TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 1,
 			"Failed to arm timer with proper timeout.");
@@ -477,14 +499,15 @@ test_timer_state(void)
 			RTE_EVENT_TIMER_ARMED, ev_tim->state);
 
 	if (!using_services)
-		rte_delay_us(20);
+		wait_ticks = 2 * ticks;
 	else
-		rte_delay_us(1000 + 200);
-	TEST_ASSERT_EQUAL(rte_event_dequeue_burst(evdev, 0, &ev, 1, 0), 1,
-			"Armed timer failed to trigger.");
+		wait_ticks = ticks;
+
+	TEST_ASSERT_EQUAL(timeout_event_dequeue(&ev, 1, WAIT_TICKS(wait_ticks)), 1,
+			  "Armed timer failed to trigger.");
 
 	ev_tim->state = RTE_EVENT_TIMER_NOT_ARMED;
-	ev_tim->timeout_ticks = CALC_TICKS(90);
+	ev_tim->timeout_ticks = CALC_TICKS(max_ticks - 10);
 	TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 1,
 			"Failed to arm timer with proper timeout.");
 	TEST_ASSERT_EQUAL(rte_event_timer_cancel_burst(timdev, &ev_tim, 1),
@@ -1208,8 +1231,9 @@ stat_inc_reset_ev_enq(void)
 	int ret, i, n;
 	int num_evtims = MAX_TIMERS;
 	struct rte_event_timer *evtims[num_evtims];
-	struct rte_event evs[BATCH_SIZE];
+	struct rte_event evs[num_evtims];
 	struct rte_event_timer_adapter_stats stats;
+	uint64_t ticks = 5;
 	const struct rte_event_timer init_tim = {
 		.ev.op = RTE_EVENT_OP_NEW,
 		.ev.queue_id = TEST_QUEUE_ID,
@@ -1217,7 +1241,7 @@ stat_inc_reset_ev_enq(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
+		.timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
 	};
 
 	ret = rte_mempool_get_bulk(eventdev_test_mempool, (void **)evtims,
@@ -1242,31 +1266,12 @@ stat_inc_reset_ev_enq(void)
 			  "succeeded = %d, rte_errno = %s",
 			  num_evtims, ret, rte_strerror(rte_errno));
 
-	rte_delay_ms(1000);
-
-#define MAX_TRIES num_evtims
-	int sum = 0;
-	int tries = 0;
-	bool done = false;
-	while (!done) {
-		sum += rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs,
-					       RTE_DIM(evs), 10);
-		if (sum >= num_evtims || ++tries >= MAX_TRIES)
-			done = true;
-
-		rte_delay_ms(10);
-	}
-
-	TEST_ASSERT_EQUAL(sum, num_evtims, "Expected %d timer expiry events, "
-			  "got %d", num_evtims, sum);
-
-	TEST_ASSERT(tries < MAX_TRIES, "Exceeded max tries");
-
-	rte_delay_ms(100);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
+	TEST_ASSERT_EQUAL(n, num_evtims, "Expected %d timer expiry events, got %d",
+			  num_evtims, n);
 
 	/* Make sure the eventdev is still empty */
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs),
-				      10);
+	n = timeout_event_dequeue(evs, 1, WAIT_TICKS(1));
 
 	TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected number of timer expiry "
 			  "events from event device");
@@ -1303,6 +1308,7 @@ event_timer_arm(void)
 	struct rte_event_timer_adapter *adapter = timdev;
 	struct rte_event_timer *evtim = NULL;
 	struct rte_event evs[BATCH_SIZE];
+	uint64_t ticks = 5;
 	const struct rte_event_timer init_tim = {
 		.ev.op = RTE_EVENT_OP_NEW,
 		.ev.queue_id = TEST_QUEUE_ID,
@@ -1310,7 +1316,7 @@ event_timer_arm(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
+		.timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
 	};
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
@@ -1337,10 +1343,7 @@ event_timer_arm(void)
 	TEST_ASSERT_EQUAL(rte_errno, EALREADY, "Unexpected rte_errno value "
 			  "after arming already armed timer");
 
-	/* Let timer expire */
-	rte_delay_ms(1000);
-
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
 	TEST_ASSERT_EQUAL(n, 1, "Failed to dequeue expected number of expiry "
 			  "events from event device");
 
@@ -1360,6 +1363,7 @@ event_timer_arm_double(void)
 	struct rte_event_timer_adapter *adapter = timdev;
 	struct rte_event_timer *evtim = NULL;
 	struct rte_event evs[BATCH_SIZE];
+	uint64_t ticks = 5;
 	const struct rte_event_timer init_tim = {
 		.ev.op = RTE_EVENT_OP_NEW,
 		.ev.queue_id = TEST_QUEUE_ID,
@@ -1367,7 +1371,7 @@ event_timer_arm_double(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
+		.timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
 	};
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
@@ -1387,10 +1391,7 @@ event_timer_arm_double(void)
 	TEST_ASSERT_EQUAL(rte_errno, EALREADY, "Unexpected rte_errno value "
 			  "after double-arm");
 
-	/* Let timer expire */
-	rte_delay_ms(600);
-
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
 	TEST_ASSERT_EQUAL(n, 1, "Dequeued incorrect number of expiry events - "
 			  "expected: 1, actual: %d", n);
 
@@ -1417,6 +1418,7 @@ event_timer_arm_expiry(void)
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
 	};
+	uint64_t ticks = 30;
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
 	if (evtim == NULL) {
@@ -1426,7 +1428,7 @@ event_timer_arm_expiry(void)
 
 	/* Set up an event timer */
 	*evtim = init_tim;
-	evtim->timeout_ticks = CALC_TICKS(30),	// expire in 3 secs
+	evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 3 secs */
 	evtim->ev.event_ptr = evtim;
 
 	ret = rte_event_timer_arm_burst(adapter, &evtim, 1);
@@ -1435,17 +1437,10 @@ event_timer_arm_expiry(void)
 	TEST_ASSERT_EQUAL(evtim->state, RTE_EVENT_TIMER_ARMED, "Event "
 			  "timer in incorrect state");
 
-	rte_delay_ms(2999);
-
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), ticks - 1);
 	TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected timer expiry event");
 
-	/* Delay 100 ms to account for the adapter tick window - should let us
-	 * dequeue one event
-	 */
-	rte_delay_ms(100);
-
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(1));
 	TEST_ASSERT_EQUAL(n, 1, "Dequeued incorrect number (%d) of timer "
 			  "expiry events", n);
 	TEST_ASSERT_EQUAL(evs[0].event_type, RTE_EVENT_TYPE_TIMER,
@@ -1477,6 +1472,7 @@ event_timer_arm_rearm(void)
 		.ev.event_type = RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
 	};
+	uint64_t ticks = 1;
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
 	if (evtim == NULL) {
@@ -1486,7 +1482,7 @@ event_timer_arm_rearm(void)
 
 	/* Set up a timer */
 	*evtim = init_tim;
-	evtim->timeout_ticks = CALC_TICKS(1);  // expire in 0.1 sec
+	evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 0.1 sec */
 	evtim->ev.event_ptr = evtim;
 
 	/* Arm it */
@@ -1494,10 +1490,7 @@ event_timer_arm_rearm(void)
 	TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n",
 			  rte_strerror(rte_errno));
 
-	/* Add 100ms to account for the adapter tick window */
-	rte_delay_ms(100 + 100);
-
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
 	TEST_ASSERT_EQUAL(n, 1, "Failed to dequeue expected number of expiry "
 			  "events from event device");
 
@@ -1514,10 +1507,7 @@ event_timer_arm_rearm(void)
 	TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n",
 			  rte_strerror(rte_errno));
 
-	/* Add 100ms to account for the adapter tick window */
-	rte_delay_ms(100 + 100);
-
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
 	TEST_ASSERT_EQUAL(n, 1, "Failed to dequeue expected number of expiry "
 			  "events from event device");
 
@@ -1539,7 +1529,8 @@ event_timer_arm_max(void)
 	int ret, i, n;
 	int num_evtims = MAX_TIMERS;
 	struct rte_event_timer *evtims[num_evtims];
-	struct rte_event evs[BATCH_SIZE];
+	struct rte_event evs[num_evtims];
+	uint64_t ticks = 5;
 	const struct rte_event_timer init_tim = {
 		.ev.op = RTE_EVENT_OP_NEW,
 		.ev.queue_id = TEST_QUEUE_ID,
@@ -1547,7 +1538,7 @@ event_timer_arm_max(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
+		.timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
 	};
 
 	ret = rte_mempool_get_bulk(eventdev_test_mempool, (void **)evtims,
@@ -1567,31 +1558,12 @@ event_timer_arm_max(void)
 			  "succeeded = %d, rte_errno = %s",
 			  num_evtims, ret, rte_strerror(rte_errno));
 
-	rte_delay_ms(1000);
-
-#define MAX_TRIES num_evtims
-	int sum = 0;
-	int tries = 0;
-	bool done = false;
-	while (!done) {
-		sum += rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs,
-					       RTE_DIM(evs), 10);
-		if (sum >= num_evtims || ++tries >= MAX_TRIES)
-			done = true;
-
-		rte_delay_ms(10);
-	}
-
-	TEST_ASSERT_EQUAL(sum, num_evtims, "Expected %d timer expiry events, "
-			  "got %d", num_evtims, sum);
-
-	TEST_ASSERT(tries < MAX_TRIES, "Exceeded max tries");
-
-	rte_delay_ms(100);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
+	TEST_ASSERT_EQUAL(n, num_evtims, "Expected %d timer expiry events, got %d",
+			  num_evtims, n);
 
 	/* Make sure the eventdev is still empty */
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs),
-				    10);
+	n = timeout_event_dequeue(evs, 1, WAIT_TICKS(1));
 
 	TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected number of timer expiry "
 			  "events from event device");
@@ -1711,6 +1683,7 @@ event_timer_cancel(void)
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
 	};
+	uint64_t ticks = 30;
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
 	if (evtim == NULL) {
@@ -1728,7 +1701,7 @@ event_timer_cancel(void)
 	/* Set up a timer */
 	*evtim = init_tim;
 	evtim->ev.event_ptr = evtim;
-	evtim->timeout_ticks = CALC_TICKS(30);  // expire in 3 sec
+	evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 3 sec */
 
 	/* Check that cancelling an inited but unarmed timer fails */
 	ret = rte_event_timer_cancel_burst(adapter, &evtim, 1);
@@ -1752,10 +1725,8 @@ event_timer_cancel(void)
 	TEST_ASSERT_EQUAL(evtim->state, RTE_EVENT_TIMER_CANCELED,
 			  "evtim in incorrect state");
 
-	rte_delay_ms(3000);
-
 	/* Make sure that no expiry event was generated */
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
 	TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected timer expiry event\n");
 
 	rte_mempool_put(eventdev_test_mempool, evtim);
@@ -1778,8 +1749,8 @@ event_timer_cancel_double(void)
 		.ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
 		.ev.event_type =  RTE_EVENT_TYPE_TIMER,
 		.state = RTE_EVENT_TIMER_NOT_ARMED,
-		.timeout_ticks = CALC_TICKS(5), // expire in .5 sec
 	};
+	uint64_t ticks = 30;
 
 	rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
 	if (evtim == NULL) {
@@ -1790,7 +1761,7 @@ event_timer_cancel_double(void)
 	/* Set up a timer */
 	*evtim = init_tim;
 	evtim->ev.event_ptr = evtim;
-	evtim->timeout_ticks = CALC_TICKS(30);  // expire in 3 sec
+	evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 3 sec */
 
 	ret = rte_event_timer_arm_burst(adapter, &evtim, 1);
 	TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n",
@@ -1812,10 +1783,8 @@ event_timer_cancel_double(void)
 	TEST_ASSERT_EQUAL(rte_errno, EALREADY, "Unexpected rte_errno value "
 			  "after double-cancel: rte_errno = %d", rte_errno);
 
-	rte_delay_ms(3000);
-
 	/* Still make sure that no expiry event was generated */
-	n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
+	n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
 	TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected timer expiry event\n");
 
 	rte_mempool_put(eventdev_test_mempool, evtim);
-- 
2.25.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2023-06-25 14:31:59.040054900 +0800
+++ 0018-eventdev-timer-fix-timeout-event-wait-behavior.patch	2023-06-25 14:31:58.295773900 +0800
@@ -1 +1 @@
-From fb9c213317b5e07918c9306f2036f8cc07126a85 Mon Sep 17 00:00:00 2001
+From ca72f7fdba88330e11575640a89bbfaacdb9d054 Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Xueming Li <xuemingl@nvidia.com>
+
+[ upstream commit fb9c213317b5e07918c9306f2036f8cc07126a85 ]
@@ -19 +21,0 @@
-Cc: stable@dpdk.org
@@ -24,2 +26,2 @@
- app/test/test_event_timer_adapter.c | 169 +++++++++++-----------------
- 1 file changed, 68 insertions(+), 101 deletions(-)
+ app/test/test_event_timer_adapter.c | 165 +++++++++++-----------------
+ 1 file changed, 67 insertions(+), 98 deletions(-)
@@ -28 +30 @@
-index 5e7feec1c7..510bebcf86 100644
+index 1a440dfd10..12d5936c60 100644
@@ -428,11 +429,0 @@
-@@ -1973,9 +1942,7 @@ test_timer_ticks_remaining(void)
- 		rte_delay_ms(100);
- 	}
- 
--	rte_delay_ms(100);
--
--	TEST_ASSERT_EQUAL(rte_event_dequeue_burst(evdev, 0, &ev, 1, 0), 1,
-+	TEST_ASSERT_EQUAL(timeout_event_dequeue(&ev, 1, WAIT_TICKS(1)), 1,
- 			  "Armed timer failed to trigger.");
- 	TEST_ASSERT_EQUAL(ev_tim->state, RTE_EVENT_TIMER_NOT_ARMED,
- 			  "Improper timer state set expected %d returned %d",

  parent reply	other threads:[~2023-06-25  6:37 UTC|newest]

Thread overview: 257+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-25  6:33 patch " Xueming Li
2023-06-25  6:33 ` patch 'net: fix return type of IPv4 L4 packet checksum' " Xueming Li
2023-06-25  6:33 ` patch 'kni: fix build with Linux 6.3' " Xueming Li
2023-06-25  6:33 ` patch 'examples/ip_pipeline: fix build with GCC 13' " Xueming Li
2023-06-25  6:33 ` patch 'examples/ntb: " Xueming Li
2023-06-25  6:33 ` patch 'ring: fix use after free' " Xueming Li
2023-06-25  6:33 ` patch 'vfio: fix include with musl runtime' " Xueming Li
2023-06-25  6:33 ` patch 'kernel/freebsd: fix function parameter list' " Xueming Li
2023-06-25  6:33 ` patch 'telemetry: fix autotest on Alpine' " Xueming Li
2023-06-25  6:33 ` patch 'ring: fix dequeue parameter name' " Xueming Li
2023-06-25  6:33 ` patch 'pipeline: fix double free for table stats' " Xueming Li
2023-06-25  6:33 ` patch 'test/malloc: fix missing free' " Xueming Li
2023-06-25  6:33 ` patch 'test/malloc: fix statistics checks' " Xueming Li
2023-06-25  6:33 ` patch 'eal: avoid calling cleanup twice' " Xueming Li
2023-06-25  6:33 ` patch 'ci: fix build for Arm cross compilation in GHA' " Xueming Li
2023-06-25  6:33 ` patch 'build: fix warning when getting NUMA nodes' " Xueming Li
2023-06-25  6:33 ` patch 'pci: fix comment referencing renamed function' " Xueming Li
2023-06-25  6:33 ` patch 'eal/x86: improve multiple of 64 bytes memcpy performance' " Xueming Li
2023-06-25  6:33 ` Xueming Li [this message]
2023-06-25  6:33 ` patch 'doc: fix event timer adapter guide' " Xueming Li
2023-06-25  6:33 ` patch 'event/dsw: free rings on close' " Xueming Li
2023-06-25  6:33 ` patch 'event/cnxk: fix setting attributes in empty get work' " Xueming Li
2023-06-25  6:34 ` patch 'eventdev/timer: fix buffer flush' " Xueming Li
2023-06-25  6:34 ` patch 'event/cnxk: fix nanoseconds to ticks conversion' " Xueming Li
2023-06-25  6:34 ` patch 'eal/linux: fix secondary process crash for mp hotplug' " Xueming Li
2023-06-25  6:34 ` patch 'eal/linux: fix legacy mem init with many segments' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix build warning' " Xueming Li
2023-06-25  6:34 ` patch 'net/sfc: stop misuse of Rx ingress m-port metadata on EF100' " Xueming Li
2023-06-25  6:34 ` patch 'net/tap: set locally administered bit for fixed MAC address' " Xueming Li
2023-06-25  6:34 ` patch 'net/mana: use datapath logging' " Xueming Li
2023-06-25  6:34 ` patch 'net/mana: avoid unnecessary assignments in data path' " Xueming Li
2023-06-25  6:34 ` patch 'net/mana: optimize completion queue by batch processing' " Xueming Li
2023-06-25  6:34 ` patch 'net/dpaa2: fix checksum good flags' " Xueming Li
2023-06-25  6:34 ` patch 'app/testpmd: fix GTP L2 length in checksum engine' " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix VLAN push flow action' " Xueming Li
2023-06-25  6:34 ` patch 'net/vmxnet3: fix drop of empty segments in Tx' " Xueming Li
2023-06-25  6:34 ` patch 'net/txgbe: fix use-after-free on remove' " Xueming Li
2023-06-25  6:34 ` patch 'ethdev: fix MAC address occupies two entries' " Xueming Li
2023-06-25  6:34 ` patch 'net/mana: return probing failure if no device found' " Xueming Li
2023-06-25  6:34 ` patch 'net/sfc: invalidate dangling MAE flow action FW resource IDs' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix never set MAC flow control' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix variable type mismatch' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix Rx multiple firmware reset interrupts' " Xueming Li
2023-06-25  6:34 ` patch 'ethdev: fix indirect action conversion' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix FEC mode for 200G ports' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix FEC mode check' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix missing FEC capability' " Xueming Li
2023-06-25  6:34 ` patch 'doc: fix format in flow API guide' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix RTC time on initialization' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix RTC time after reset' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: uninitialize PTP' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: extract PTP to its own header file' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix mbuf leakage when RxQ started during reset' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix mbuf leakage when RxQ started after " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix device start return value' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix uninitialized variable' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix inaccurate log' " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix redundant line break in " Xueming Li
2023-06-25  6:34 ` patch 'net/hns3: fix IMP reset trigger' " Xueming Li
2023-06-25  6:34 ` patch 'ethdev: fix calloc arguments' " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix disabling promiscuous mode' " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix IPv6 flow item' " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix TOS of IPv6 VXLAN encap flow action' " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix TOS of IPv6 GENEVE " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix TOS of IPv6 NVGRE " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix control mempool creation' " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix representor " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix flow hash table " Xueming Li
2023-06-25  6:34 ` patch 'net/nfp: fix TP flow action for UDP' " Xueming Li
2023-06-25  6:34 ` patch 'net/vmxnet3: fix return code in initializing' " Xueming Li
2023-06-25  6:34 ` patch 'doc: fix auth algos in cryptoperf app' " Xueming Li
2023-06-25  6:34 ` patch 'crypto/qat: fix stack buffer overflow in SGL loop' " Xueming Li
2023-06-25  6:34 ` patch 'crypto/scheduler: fix last element for valid args' " Xueming Li
2023-06-25  6:34 ` patch 'test/crypto: fix return value for SNOW3G' " Xueming Li
2023-06-25  6:34 ` patch 'examples/ipsec-secgw: fix zero address in ethernet header' " Xueming Li
2023-06-25  6:34 ` patch 'cryptodev: clarify error codes for symmetric session' " Xueming Li
2023-06-25  6:34 ` patch 'crypto/openssl: fix memory free' " Xueming Li
2023-06-25  6:34 ` patch 'test/crypto: fix session creation check' " Xueming Li
2023-06-25  6:34 ` patch 'crypto/ipsec_mb: fix enqueue counter for SNOW3G' " Xueming Li
2023-06-25  6:34 ` patch 'crypto/cnxk: fix IPsec CCM capabilities' " Xueming Li
2023-06-25  6:34 ` patch 'test/crypto: fix IPsec AES CCM vector' " Xueming Li
2023-06-25  6:34 ` patch 'crypto/ipsec_mb: optimize allocation in session' " Xueming Li
2023-06-25  6:35 ` patch 'vhost: fix notification stats for packed ring' " Xueming Li
2023-06-25  6:35 ` patch 'vhost: fix invalid call FD handling' " Xueming Li
2023-06-25  6:35 ` patch 'net/virtio: propagate interrupt configuration error values' " Xueming Li
2023-06-25  6:35 ` patch 'net/virtio: fix initialization to return negative errno' " Xueming Li
2023-06-25  6:35 ` patch 'net/virtio-user: fix leak when initialisation fails' " Xueming Li
2023-06-25  6:35 ` patch 'net/mlx5: enhance error log for tunnel offloading' " Xueming Li
2023-06-25  6:35 ` patch 'net/mlx5: fix matcher layout size calculation' " Xueming Li
2023-06-25  6:35 ` patch 'net/mlx5: fix VXLAN matching with zero value' " Xueming Li
2023-06-25  6:35 ` patch 'net/mlx5: forbid duplicated tag index in pattern template' " Xueming Li
2023-06-25  6:35 ` patch 'net/mlx5: fix duplicated tag index matching in SWS' " Xueming Li
2023-06-25  6:35 ` patch 'net/mlx5: fix drop action attribute validation' " Xueming Li
2023-06-25  6:35 ` patch 'mempool/cnxk: avoid hang when counting batch allocs' " Xueming Li
2023-06-25  6:35 ` patch 'common/cnxk: fix IPsec IPv6 tunnel address byte swap' " Xueming Li
2023-06-25  6:35 ` patch 'event/cnxk: fix Tx adapter data pointer' " Xueming Li
2023-06-25  6:35 ` patch 'event/cnxk: fix mempool cookies check' " Xueming Li
2023-06-25  6:35 ` patch 'common/cnxk: fix setting channel mask for SDP interfaces' " Xueming Li
2023-06-25  6:35 ` patch 'common/cnxk: fix uninitialized pointer read' " Xueming Li
2023-06-25  6:35 ` patch 'common/cnxk: fix inline device VF identification' " Xueming Li
2023-06-25  6:35 ` patch 'common/cnxk: fix receive queue with multiple mask' " Xueming Li
2023-06-25  6:35 ` patch 'net/qede: fix RSS indirection table initialization' " Xueming Li
2023-06-25  6:35 ` patch 'doc: fix typo in cnxk platform guide' " Xueming Li
2023-06-25  6:35 ` patch 'net/i40e: fix Rx data buffer size' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: " Xueming Li
2023-06-25  6:35 ` patch 'net/iavf: " Xueming Li
2023-06-25  6:35 ` patch 'net/idpf: " Xueming Li
2023-06-25  6:35 ` patch 'common/idpf: remove device stop flag' " Xueming Li
2023-06-25  6:35 ` patch 'common/idpf/base: fix control queue send and receive' " Xueming Li
2023-06-25  6:35 ` patch 'common/idpf/base: fix ITR register definitions for AVF' " Xueming Li
2023-06-25  6:35 ` patch 'common/idpf/base: fix parameters when send msg to cp' " Xueming Li
2023-06-25  6:35 ` patch 'common/idpf/base: fix memory leaks on control queue' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: fix statistics' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: fix DCF RSS initialization' " Xueming Li
2023-06-25  6:35 ` patch 'net/iavf: release large VF when closing device' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: fix DCF control thread crash' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice/base: fix incorrect defines for DCBx' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice/base: remove unreachable code' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: adjust timestamp mbuf register' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: fix timestamp enabling' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: initialize parser for double VLAN' " Xueming Li
2023-06-25  6:35 ` patch 'net/ice: fix outer UDP checksum offload' " Xueming Li
2023-06-25  6:35 ` patch 'net/iavf: fix virtchnl command called in interrupt' " Xueming Li
2023-06-25  6:35 ` patch 'test/mbuf: fix crash in a forked process' " Xueming Li
2023-06-25  6:35 ` patch 'doc: fix typo in graph guide' " Xueming Li
2023-06-25  6:35 ` patch 'doc: remove warning with Doxygen 1.9.7' " Xueming Li
2023-06-25  6:35 ` patch 'dma/dpaa2: set VFA bit for route-by-port with VF' " Xueming Li
2023-08-09 23:47 ` patch " Xueming Li
2023-08-09 23:47   ` patch 'examples/l2fwd-cat: fix external build' " Xueming Li
2023-08-09 23:47   ` patch 'examples/fips_validation: " Xueming Li
2023-08-09 23:47   ` patch 'test: add graph tests' " Xueming Li
2023-08-09 23:47   ` patch 'mbuf: fix Doxygen comment of distributor metadata' " Xueming Li
2023-08-09 23:47   ` patch 'ci: fix libabigail cache in GHA' " Xueming Li
2023-08-09 23:47   ` patch 'common/qat: fix command parameter corruption' " Xueming Li
2023-08-09 23:47   ` patch 'crypto/qat: fix sym device prototype' " Xueming Li
2023-08-09 23:47   ` patch 'crypto/openssl: fix memory leak in auth processing' " Xueming Li
2023-08-09 23:47   ` patch 'crypto/openssl: skip workaround at compilation time' " Xueming Li
2023-08-09 23:47   ` patch 'test/security: fix event inline IPsec reassembly tests' " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix IPv6 address for set flow action' " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix unneeded endian conversion' " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix endian conversion for tunnel decap action' " Xueming Li
2023-08-09 23:47   ` patch 'ethdev: update documentation for API to set FEC' " Xueming Li
2023-08-09 23:47   ` patch 'ethdev: check that at least one FEC mode is specified' " Xueming Li
2023-08-09 23:47   ` patch 'ethdev: update documentation for API to get FEC' " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix VNI of VXLAN encap action' " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix VNI of IPv4 NVGRE " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix VNI of IPv6 " Xueming Li
2023-08-09 23:47   ` patch 'net/bonding: fix startup when NUMA is not supported' " Xueming Li
2023-08-09 23:47   ` patch 'net/bonding: fix destroy dedicated queues flow' " Xueming Li
2023-08-09 23:47   ` patch 'net/txgbe/base: fix Tx with fiber hotplug' " Xueming Li
2023-08-09 23:47   ` patch 'net/txgbe: fix interrupt enable mask' " Xueming Li
2023-08-09 23:47   ` patch 'net/txgbe: adapt to MNG veto bit setting' " Xueming Li
2023-08-09 23:47   ` patch 'net/txgbe: fix to set autoneg for 1G speed' " Xueming Li
2023-08-09 23:47   ` patch 'net/txgbe: fix extended statistics' " Xueming Li
2023-08-09 23:47   ` patch 'net/ngbe: " Xueming Li
2023-08-09 23:47   ` patch 'net/ngbe: adapt to MNG veto bit setting' " Xueming Li
2023-08-09 23:47   ` patch 'net/ngbe: fix link status in no LSC mode' " Xueming Li
2023-08-09 23:47   ` patch 'net/ngbe: remove redundant codes' " Xueming Li
2023-08-09 23:47   ` patch 'app/testpmd: fix primary process not polling all queues' " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix representor name too long' " Xueming Li
2023-08-09 23:47   ` patch 'net/nfp: fix address always related with PF ID 0' " Xueming Li
2023-08-09 23:47   ` patch 'common/sfc_efx/base: fix Rx queue without RSS hash prefix' " Xueming Li
2023-08-09 23:47   ` patch 'net/iavf: fix VLAN offload with AVX512' " Xueming Li
2023-08-09 23:47   ` patch 'net/ice: fix tunnel packet Tx descriptor' " Xueming Li
2023-08-09 23:47   ` patch 'net/ixgbe: add proper memory barriers in Rx' " Xueming Li
2023-08-09 23:48   ` patch 'common/idpf: fix memory leak on AVX512 Tx queue close' " Xueming Li
2023-08-09 23:48   ` patch 'net/iavf: fix abnormal disable HW interrupt' " Xueming Li
2023-08-09 23:48   ` patch 'net/i40e: fix tunnel packet Tx descriptor' " Xueming Li
2023-08-09 23:48   ` patch 'net/e1000: fix queue number initialization' " Xueming Li
2023-08-09 23:48   ` patch 'net/ice: fix MAC type of E822 and E823' " Xueming Li
2023-08-09 23:48   ` patch 'net/ice: fix protocol agnostic offloading with big packets' " Xueming Li
2023-08-09 23:48   ` patch 'net/iavf: " Xueming Li
2023-08-09 23:48   ` patch 'net/mlx5: fix risk in NEON Rx descriptor read' " Xueming Li
2023-08-09 23:48   ` patch 'net/mlx5: fix device removal event handling' " Xueming Li
2023-08-09 23:48   ` patch 'common/mlx5: adjust fork call with new kernel API' " Xueming Li
2023-08-09 23:48   ` patch 'net/cnxk: flush SQ before configuring MTU' " Xueming Li
2023-08-09 23:48   ` patch 'net/cnxk: fix cookies check with security offload' " Xueming Li
2023-08-09 23:48   ` patch 'net/cnxk: fix flow queue index validation' " Xueming Li
2023-08-09 23:48   ` patch 'cryptodev: fix comments of modular operation parameters' " Xueming Li
2023-08-09 23:48   ` patch 'raw/ntb: avoid disabling interrupt twice' " Xueming Li
2023-08-09 23:48   ` patch 'ipc: fix file descriptor leakage with unhandled messages' " Xueming Li
2023-08-09 23:58 ` patch 'devtools: fix mailmap check for parentheses' " Xueming Li
2023-08-09 23:58   ` patch 'fib: fix adding default route' " Xueming Li
2023-08-09 23:58   ` patch 'mem: fix memsegs exhausted message' " Xueming Li
2023-08-09 23:58   ` patch 'hash: fix reading unaligned bits in Toeplitz hash' " Xueming Li
2023-08-09 23:58   ` patch 'member: fix PRNG seed reset in NitroSketch mode' " Xueming Li
2023-08-09 23:58   ` patch 'net/netvsc: fix sizeof calculation' " Xueming Li
2023-08-09 23:58   ` patch 'app/testpmd: fix checksum engine with GTP on 32-bit' " Xueming Li
2023-08-09 23:58   ` patch 'net/hns3: delete duplicate macro definition' " Xueming Li
2023-08-09 23:58   ` patch 'doc: fix kernel patch link in hns3 guide' " Xueming Li
2023-08-09 23:58   ` patch 'doc: fix syntax " Xueming Li
2023-08-09 23:58   ` patch 'doc: fix number of leading spaces " Xueming Li
2023-08-09 23:58   ` patch 'net/txgbe: fix blocking system events' " Xueming Li
2023-08-09 23:58   ` patch 'app/testpmd: revert primary process polling all queues fix' " Xueming Li
2023-08-09 23:58   ` patch 'net/hns3: fix non-zero weight for disabled TC' " Xueming Li
2023-08-09 23:58   ` patch 'app/testpmd: fix flow rule number parsing' " Xueming Li
2023-08-09 23:58   ` patch 'net/mana: fix counter overflow for posted WQE' " Xueming Li
2023-08-09 23:58   ` patch 'net/mana: fix WQE count for ringing RQ doorbell' " Xueming Li
2023-08-09 23:58   ` patch 'net/hns3: fix index to look up table in NEON Rx' " Xueming Li
2023-08-09 23:58   ` patch 'ethdev: fix potential leak in PCI probing helper' " Xueming Li
2023-08-09 23:58   ` patch 'net/mlx5: fix flow dump for modify field' " Xueming Li
2023-08-09 23:58   ` patch 'net/mlx5: fix error set in Tx representor tagging' " Xueming Li
2023-08-09 23:58   ` patch 'net/mlx5: fix return value of vport action' " Xueming Li
2023-08-09 23:58   ` patch 'net/mlx5: fix error set in control tables create' " Xueming Li
2023-08-09 23:58   ` patch 'net/mlx5: fix error set for age pool initialization' " Xueming Li
2023-08-09 23:58   ` patch 'net/mlx5: fix error in VLAN actions creation' " Xueming Li
2023-08-09 23:58   ` patch 'common/mlx5: fix obtaining IB device in LAG mode' " Xueming Li
2023-08-09 23:58   ` patch 'net/mlx5: fix profile check of meter mark' " Xueming Li
2023-08-09 23:59   ` patch 'net/mlx5: reduce counter pool name length' " Xueming Li
2023-08-09 23:59   ` patch 'net/mlx5: fix flow workspace destruction' " Xueming Li
2023-08-09 23:59   ` patch 'net/mlx5: forbid MPRQ restart' " Xueming Li
2023-08-09 23:59   ` patch 'net/mlx5: fix RSS expansion inner buffer overflow' " Xueming Li
2023-08-09 23:59   ` patch 'net/mlx5: fix query for NIC flow capability' " Xueming Li
2023-08-09 23:59   ` patch 'net/ice: fix VLAN mode parser' " Xueming Li
2023-08-09 23:59   ` patch 'net/iavf: fix VLAN insertion in vector path' " Xueming Li
2023-08-09 23:59   ` patch 'net/ice: fix 32-bit build' " Xueming Li
2023-08-09 23:59   ` patch 'net/iavf: fix tunnel TSO path selection' " Xueming Li
2023-08-09 23:59   ` patch 'net/ice: fix RSS hash key generation' " Xueming Li
2023-08-09 23:59   ` patch 'baseband/fpga_5gnr_fec: fix possible division by zero' " Xueming Li
2023-08-09 23:59   ` patch 'baseband/fpga_5gnr_fec: fix starting unconfigured queue' " Xueming Li
2023-08-09 23:59   ` patch 'crypto/qat: fix null algorithm digest placement' " Xueming Li
2023-08-10  0:06 ` Xueming Li
2023-08-10  0:06   ` patch 'common/qat: detach crypto from compress build' " Xueming Li
2023-08-10  0:06   ` patch 'test/crypto: fix PDCP-SDAP test vectors' " Xueming Li
2023-08-10  0:06   ` patch 'examples/fips_validation: fix digest length in AES-GCM' " Xueming Li
2023-08-10  0:06   ` patch 'cryptodev: fix device socket ID type' " Xueming Li
2023-08-10  0:06   ` patch 'app/crypto-perf: fix socket ID default value' " Xueming Li
2023-08-10  0:06   ` patch 'examples/ipsec-secgw: " Xueming Li
2023-08-10  0:06   ` patch 'examples/ipsec-secgw: fix TAP default MAC address' " Xueming Li
2023-08-10  0:06   ` patch 'ipsec: fix NAT-T header length' " Xueming Li
2023-08-10  0:06   ` patch 'examples/l3fwd: fix duplicate expression for default nexthop' " Xueming Li
2023-08-10  0:06   ` patch 'kni: fix build with Linux 6.5' " Xueming Li
2023-08-10  0:10 ` patch 'devtools: fix bashism in mailmap check' " Xueming Li
2023-08-10  0:10   ` patch 'doc: fix typos and wording in flow API guide' " Xueming Li
2023-08-10  0:10   ` patch 'net/i40e: fix comments' " Xueming Li
2023-08-10  0:10   ` patch 'net/iavf: fix stop ordering' " Xueming Li
2023-08-10  0:10   ` patch 'common/iavf: fix MAC type for 710 NIC' " Xueming Li
2023-08-10  0:10   ` patch 'net/ixgbe: fix Rx and Tx queue status' " Xueming Li
2023-08-10  0:10   ` patch 'net/igc: " Xueming Li
2023-08-10  0:10   ` patch 'net/e1000: " Xueming Li
2023-08-10  0:10   ` patch 'net/mlx5: fix drop action memory leak' " Xueming Li
2023-08-10  0:10   ` patch 'net/mlx5: fix LRO TCP checksum' " Xueming Li
2023-08-10  0:10   ` patch 'net/mlx5: fix MPRQ stride size for headroom' " Xueming Li
2023-08-10  0:10   ` patch 'net/mlx5: fix validation for conntrack indirect action' " Xueming Li
2023-08-10  0:10   ` patch 'net/mlx5: fix handle validation for meter mark' " Xueming Li
2023-08-10  0:10   ` patch 'app/testpmd: fix meter mark handle update' " Xueming Li
2023-08-10  0:10   ` patch 'doc: add flow template API requirements for mlx5' " Xueming Li
2023-08-10  0:10   ` patch 'doc: improve wording of cuda guide' " Xueming Li
2023-08-10  0:10   ` patch 'doc: fix description of runtime directories' " Xueming Li
2023-08-10  0:10   ` patch 'doc: update BIOS settings and supported HW for NTB' " Xueming Li
2023-08-10  0:10   ` patch 'doc: fix link to flow capabilities from bnxt guide' " Xueming Li
2023-08-10  0:10   ` patch 'net/mana: fix Tx queue statistics' " Xueming Li
2023-08-10  0:10   ` patch 'net/ngbe: fix RSS offload capability' " Xueming Li
2023-08-10  0:10   ` patch 'test/bonding: fix include of standard header' " Xueming Li
2023-08-10  0:10   ` patch 'net/nfp: fix Tx descriptor free logic of NFD3' " Xueming Li
2023-08-10  0:10   ` patch 'net/nfp: fix offloading flows' " Xueming Li
2023-08-10  0:10   ` patch 'common/cnxk: fix CPT backpressure disable on LBK' " Xueming Li

Reply instructions:

You may reply publicly 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=20230625063544.11183-19-xuemingl@nvidia.com \
    --to=xuemingl@nvidia.com \
    --cc=erik.g.carrillo@intel.com \
    --cc=stable@dpdk.org \
    --cc=sthotton@marvell.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).