patches for DPDK stable branches
 help / color / mirror / Atom feed
From: luca.boccassi@gmail.com
To: Dengdui Huang <huangdengdui@huawei.com>
Cc: Jie Hai <haijie1@huawei.com>, Huisong Li <lihuisong@huawei.com>,
	dpdk stable <stable@dpdk.org>
Subject: patch 'net/hns3: fix mailbox sync' has been queued to stable release 20.11.10
Date: Wed, 15 Nov 2023 11:45:07 +0000	[thread overview]
Message-ID: <20231115114515.2355140-8-luca.boccassi@gmail.com> (raw)
In-Reply-To: <20231115114515.2355140-1-luca.boccassi@gmail.com>

Hi,

FYI, your patch has been queued to stable release 20.11.10

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/17/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://github.com/bluca/dpdk-stable

This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/b7c87c9536d1cbf2278bee5c92f3d1040d4801d7

Thanks.

Luca Boccassi

---
From b7c87c9536d1cbf2278bee5c92f3d1040d4801d7 Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Sat, 11 Nov 2023 09:59:14 +0800
Subject: [PATCH] net/hns3: fix mailbox sync

[ upstream commit be3590f54d0e415c23d4ed6ea55d967139c3ad10 ]

Currently, hns3 VF driver uses the following points to match
the response and request message for the mailbox synchronous
message between VF and PF.
1. req_msg_data which is consist of message code and subcode,
   is used to match request and response.
2. head means the number of send success for VF.
3. tail means the number of receive success for VF.
4. lost means the number of send timeout for VF.
And 'head', 'tail' and 'lost' are dynamically updated during
the communication.

Now there is a issue that all sync mailbox message will
send failure forever at the flollowing case:
1. VF sends the message A
    then head=UINT32_MAX-1, tail=UINT32_MAX-3, lost=2.
2. VF sends the message B
    then head=UINT32_MAX, tail=UINT32_MAX-2, lost=2.
3. VF sends the message C, the message will be timeout because
   it can't get the response within 500ms.
   then head=0, tail=0, lost=2
   note: tail is assigned to head if tail > head according to
   current code logic. From now on, all subsequent sync milbox
   messages fail to be sent.

It's very complicated to use the fields 'lost','tail','head'.
The code and subcode of the request sync mailbox are used as the
matching code of the message, which is used to match the response
message for receiving the synchronization response.

This patch drops these fields and uses the following solution
to solve this issue:
In the handling response message process, using the req_msg_data
of the request and response message to judge whether the sync
mailbox message has been received.

Fixes: 463e748964f5 ("net/hns3: support mailbox")

Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Signed-off-by: Jie Hai <haijie1@huawei.com>
Acked-by: Huisong Li <lihuisong@huawei.com>
---
 drivers/net/hns3/hns3_cmd.c |  3 --
 drivers/net/hns3/hns3_mbx.c | 81 ++++++-------------------------------
 drivers/net/hns3/hns3_mbx.h | 10 -----
 3 files changed, 13 insertions(+), 81 deletions(-)

diff --git a/drivers/net/hns3/hns3_cmd.c b/drivers/net/hns3/hns3_cmd.c
index eb9590eb17..9e875fc245 100644
--- a/drivers/net/hns3/hns3_cmd.c
+++ b/drivers/net/hns3/hns3_cmd.c
@@ -565,9 +565,6 @@ hns3_cmd_init(struct hns3_hw *hw)
 	hw->cmq.csq.next_to_use = 0;
 	hw->cmq.crq.next_to_clean = 0;
 	hw->cmq.crq.next_to_use = 0;
-	hw->mbx_resp.head = 0;
-	hw->mbx_resp.tail = 0;
-	hw->mbx_resp.lost = 0;
 	hns3_cmd_init_regs(hw);
 
 	rte_spinlock_unlock(&hw->cmq.crq.lock);
diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index 63ec11b838..1e2fb63d8d 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -40,23 +40,6 @@ hns3_resp_to_errno(uint16_t resp_code)
 	return -EIO;
 }
 
-static void
-hns3_mbx_proc_timeout(struct hns3_hw *hw, uint16_t code, uint16_t subcode)
-{
-	if (hw->mbx_resp.matching_scheme ==
-	    HNS3_MBX_RESP_MATCHING_SCHEME_OF_ORIGINAL) {
-		hw->mbx_resp.lost++;
-		hns3_err(hw,
-			 "VF could not get mbx(%u,%u) head(%u) tail(%u) "
-			 "lost(%u) from PF",
-			 code, subcode, hw->mbx_resp.head, hw->mbx_resp.tail,
-			 hw->mbx_resp.lost);
-		return;
-	}
-
-	hns3_err(hw, "VF could not get mbx(%u,%u) from PF", code, subcode);
-}
-
 static int
 hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
 		  uint8_t *resp_data, uint16_t resp_len)
@@ -66,7 +49,6 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
 	struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
 	struct hns3_mbx_resp_status *mbx_resp;
 	uint32_t wait_time = 0;
-	bool received;
 
 	if (resp_len > HNS3_MBX_MAX_RESP_DATA_SIZE) {
 		hns3_err(hw, "VF mbx response len(=%u) exceeds maximum(=%d)",
@@ -91,20 +73,14 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
 		hns3_dev_handle_mbx_msg(hw);
 		rte_delay_us(HNS3_WAIT_RESP_US);
 
-		if (hw->mbx_resp.matching_scheme ==
-		    HNS3_MBX_RESP_MATCHING_SCHEME_OF_ORIGINAL)
-			received = (hw->mbx_resp.head ==
-				    hw->mbx_resp.tail + hw->mbx_resp.lost);
-		else
-			received = hw->mbx_resp.received_match_resp;
-		if (received)
+		if (hw->mbx_resp.received_match_resp)
 			break;
 
 		wait_time += HNS3_WAIT_RESP_US;
 	}
 	hw->mbx_resp.req_msg_data = 0;
 	if (wait_time >= HNS3_MAX_RETRY_US) {
-		hns3_mbx_proc_timeout(hw, code, subcode);
+		hns3_err(hw, "VF could not get mbx(%u,%u) from PF", code, subcode);
 		return -ETIME;
 	}
 	rte_io_rmb();
@@ -130,7 +106,6 @@ hns3_mbx_prepare_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode)
 	 * we get the exact scheme which is used.
 	 */
 	hw->mbx_resp.req_msg_data = (uint32_t)code << 16 | subcode;
-	hw->mbx_resp.head++;
 
 	/* Update match_id and ensure the value of match_id is not zero */
 	hw->mbx_resp.match_id++;
@@ -183,7 +158,6 @@ hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
 		req->match_id = hw->mbx_resp.match_id;
 		ret = hns3_cmd_send(hw, &desc, 1);
 		if (ret) {
-			hw->mbx_resp.head--;
 			rte_spinlock_unlock(&hw->mbx_resp.lock);
 			hns3_err(hw, "VF failed(=%d) to send mbx message to PF",
 				 ret);
@@ -260,41 +234,10 @@ hns3_mbx_handler(struct hns3_hw *hw)
 	}
 }
 
-/*
- * Case1: receive response after timeout, req_msg_data
- *        is 0, not equal resp_msg, do lost--
- * Case2: receive last response during new send_mbx_msg,
- *	  req_msg_data is different with resp_msg, let
- *	  lost--, continue to wait for response.
- */
-static void
-hns3_update_resp_position(struct hns3_hw *hw, uint32_t resp_msg)
-{
-	struct hns3_mbx_resp_status *resp = &hw->mbx_resp;
-	uint32_t tail = resp->tail + 1;
-
-	if (tail > resp->head)
-		tail = resp->head;
-	if (resp->req_msg_data != resp_msg) {
-		if (resp->lost)
-			resp->lost--;
-		hns3_warn(hw, "Received a mismatched response req_msg(%x) "
-			  "resp_msg(%x) head(%u) tail(%u) lost(%u)",
-			  resp->req_msg_data, resp_msg, resp->head, tail,
-			  resp->lost);
-	} else if (tail + resp->lost > resp->head) {
-		resp->lost--;
-		hns3_warn(hw, "Received a new response again resp_msg(%x) "
-			  "head(%u) tail(%u) lost(%u)", resp_msg,
-			  resp->head, tail, resp->lost);
-	}
-	rte_io_wmb();
-	resp->tail = tail;
-}
-
 static void
 hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)
 {
+#define HNS3_MBX_RESP_CODE_OFFSET 16
 	struct hns3_mbx_resp_status *resp = &hw->mbx_resp;
 	uint32_t msg_data;
 
@@ -304,12 +247,6 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)
 		 * match_id to its response. So VF could use the match_id
 		 * to match the request.
 		 */
-		if (resp->matching_scheme !=
-		    HNS3_MBX_RESP_MATCHING_SCHEME_OF_MATCH_ID) {
-			resp->matching_scheme =
-				HNS3_MBX_RESP_MATCHING_SCHEME_OF_MATCH_ID;
-			hns3_info(hw, "detect mailbox support match id!");
-		}
 		if (req->match_id == resp->match_id) {
 			resp->resp_status = hns3_resp_to_errno(req->msg[3]);
 			memcpy(resp->additional_info, &req->msg[4],
@@ -325,11 +262,19 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)
 	 * support copy request's match_id to its response. So VF follows the
 	 * original scheme to process.
 	 */
+	msg_data = (uint32_t)req->msg[1] << HNS3_MBX_RESP_CODE_OFFSET | req->msg[2];
+	if (resp->req_msg_data != msg_data) {
+		hns3_warn(hw,
+			"received response tag (%u) is mismatched with requested tag (%u)",
+			msg_data, resp->req_msg_data);
+		return;
+	}
+
 	resp->resp_status = hns3_resp_to_errno(req->msg[3]);
 	memcpy(resp->additional_info, &req->msg[4],
 	       HNS3_MBX_MAX_RESP_DATA_SIZE);
-	msg_data = (uint32_t)req->msg[1] << 16 | req->msg[2];
-	hns3_update_resp_position(hw, msg_data);
+	rte_io_wmb();
+	resp->received_match_resp = true;
 }
 
 static void
diff --git a/drivers/net/hns3/hns3_mbx.h b/drivers/net/hns3/hns3_mbx.h
index c61afc2f8e..9ae9822ff5 100644
--- a/drivers/net/hns3/hns3_mbx.h
+++ b/drivers/net/hns3/hns3_mbx.h
@@ -83,21 +83,11 @@ enum hns3_mbx_link_fail_subcode {
 #define HNS3_MBX_MAX_MSG_SIZE	16
 #define HNS3_MBX_MAX_RESP_DATA_SIZE	8
 
-enum {
-	HNS3_MBX_RESP_MATCHING_SCHEME_OF_ORIGINAL = 0,
-	HNS3_MBX_RESP_MATCHING_SCHEME_OF_MATCH_ID
-};
-
 struct hns3_mbx_resp_status {
 	rte_spinlock_t lock; /* protects against contending sync cmd resp */
 
-	uint8_t matching_scheme;
-
 	/* The following fields used in the matching scheme for original */
 	uint32_t req_msg_data;
-	uint32_t head;
-	uint32_t tail;
-	uint32_t lost;
 
 	/* The following fields used in the matching scheme for match_id */
 	uint16_t match_id;
-- 
2.39.2

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2023-11-15 11:44:13.938018102 +0000
+++ 0008-net-hns3-fix-mailbox-sync.patch	2023-11-15 11:44:13.554387206 +0000
@@ -1 +1 @@
-From be3590f54d0e415c23d4ed6ea55d967139c3ad10 Mon Sep 17 00:00:00 2001
+From b7c87c9536d1cbf2278bee5c92f3d1040d4801d7 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit be3590f54d0e415c23d4ed6ea55d967139c3ad10 ]
+
@@ -42 +43,0 @@
-Cc: stable@dpdk.org
@@ -54 +55 @@
-index a5c4c11dc8..2c1664485b 100644
+index eb9590eb17..9e875fc245 100644
@@ -57 +58 @@
-@@ -731,9 +731,6 @@ hns3_cmd_init(struct hns3_hw *hw)
+@@ -565,9 +565,6 @@ hns3_cmd_init(struct hns3_hw *hw)
@@ -68 +69 @@
-index 8e0a58aa02..f1743c195e 100644
+index 63ec11b838..1e2fb63d8d 100644
@@ -95 +96 @@
-@@ -67,7 +50,6 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
+@@ -66,7 +49,6 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
@@ -103 +104 @@
-@@ -93,20 +75,14 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
+@@ -91,20 +73,14 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
@@ -120 +121 @@
- 	if (wait_time >= mbx_time_limit) {
+ 	if (wait_time >= HNS3_MAX_RETRY_US) {
@@ -126 +127 @@
-@@ -132,7 +108,6 @@ hns3_mbx_prepare_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode)
+@@ -130,7 +106,6 @@ hns3_mbx_prepare_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode)
@@ -134 +135 @@
-@@ -185,7 +160,6 @@ hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
+@@ -183,7 +158,6 @@ hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
@@ -142,2 +143,2 @@
-@@ -254,41 +228,10 @@ hns3_handle_asserting_reset(struct hns3_hw *hw,
- 	hns3_schedule_reset(HNS3_DEV_HW_TO_ADAPTER(hw));
+@@ -260,41 +234,10 @@ hns3_mbx_handler(struct hns3_hw *hw)
+ 	}
@@ -185 +186 @@
-@@ -298,12 +241,6 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)
+@@ -304,12 +247,6 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)
@@ -198 +199 @@
-@@ -319,11 +256,19 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)
+@@ -325,11 +262,19 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)
@@ -221 +222 @@
-index c378783c6c..4a328802b9 100644
+index c61afc2f8e..9ae9822ff5 100644
@@ -224 +225,2 @@
-@@ -93,21 +93,11 @@ enum hns3_mbx_link_fail_subcode {
+@@ -83,21 +83,11 @@ enum hns3_mbx_link_fail_subcode {
+ #define HNS3_MBX_MAX_MSG_SIZE	16
@@ -226 +227,0 @@
- #define HNS3_MBX_DEF_TIME_LIMIT_MS	500

  parent reply	other threads:[~2023-11-15 11:45 UTC|newest]

Thread overview: 111+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-18 23:58 patch 'mempool: fix default ops for an empty mempool' " luca.boccassi
2023-10-18 23:58 ` patch 'rawdev: fix device class in log message' " luca.boccassi
2023-10-18 23:58 ` patch 'net/bonding: fix header for C++' " luca.boccassi
2023-10-18 23:58 ` patch 'net/hns3: fix VF default MAC modified when set failed' " luca.boccassi
2023-10-18 23:58 ` patch 'net/hns3: fix error code for multicast resource' " luca.boccassi
2023-10-18 23:58 ` patch 'net/hns3: fix flushing multicast MAC address' " luca.boccassi
2023-10-18 23:58 ` patch 'app/test: fix reference to master in bonding test' " luca.boccassi
2023-10-18 23:58 ` patch 'net/hns3: fix order in NEON Rx' " luca.boccassi
2023-10-18 23:58 ` patch 'random: initialize state for unregistered non-EAL threads' " luca.boccassi
2023-10-18 23:58 ` patch 'bus/dpaa: fix build with asserts for GCC 13' " luca.boccassi
2023-10-18 23:59 ` patch 'hash: align SSE lookup to scalar implementation' " luca.boccassi
2023-10-18 23:59 ` patch 'net/netvsc: increase VSP response timeout to 60 seconds' " luca.boccassi
2023-10-18 23:59 ` patch 'net/txgbe: add Tx queue maximum limit' " luca.boccassi
2023-10-18 23:59 ` patch 'net/txgbe: reconfigure MAC Rx when link update' " luca.boccassi
2023-10-18 23:59 ` patch 'net/txgbe: keep link down after device close' " luca.boccassi
2023-10-18 23:59 ` patch 'net/txgbe: check process type in close operation' " luca.boccassi
2023-10-18 23:59 ` patch 'net/tap: use MAC address parse API instead of local parser' " luca.boccassi
2023-10-18 23:59 ` patch 'app/testpmd: fix help string' " luca.boccassi
2023-10-18 23:59 ` patch 'cryptodev: add missing doc for security context' " luca.boccassi
2023-10-18 23:59 ` patch 'doc: replace code blocks with includes in security guide' " luca.boccassi
2023-10-18 23:59 ` patch 'test/crypto: fix IV in some vectors' " luca.boccassi
2023-10-18 23:59 ` patch 'test/crypto: skip some synchronous tests with CPU crypto' " luca.boccassi
2023-10-19 10:22   ` Power, Ciara
2023-10-19 10:28   ` Power, Ciara
2023-10-18 23:59 ` patch 'test/crypto: fix typo in asym tests' " luca.boccassi
2023-10-18 23:59 ` patch 'bus/pci: fix device ID log' " luca.boccassi
2023-10-18 23:59 ` patch 'test/event: fix crypto null device creation' " luca.boccassi
2023-10-18 23:59 ` patch 'event/sw: remove obsolete comment' " luca.boccassi
2023-10-18 23:59 ` patch 'event/sw: fix ordering corruption with op release' " luca.boccassi
2023-10-18 23:59 ` patch 'net/i40e: fix FDIR queue receives broadcast packets' " luca.boccassi
2023-10-18 23:59 ` patch 'net/iavf: fix VLAN offload strip flag' " luca.boccassi
2023-10-18 23:59 ` patch 'net/i40e: fix buffer leak on Rx reconfiguration' " luca.boccassi
2023-10-18 23:59 ` patch 'net/iavf: fix port stats clearing' " luca.boccassi
2023-10-18 23:59 ` patch 'net/ice: fix initial link status' " luca.boccassi
2023-10-18 23:59 ` patch 'net/iavf: remove log from Tx prepare function' " luca.boccassi
2023-10-18 23:59 ` patch 'net/iavf: fix TSO with big segments' " luca.boccassi
2023-10-18 23:59 ` patch 'net/ice: remove log from Tx prepare function' " luca.boccassi
2023-10-18 23:59 ` patch 'net/ice: fix TSO with big segments' " luca.boccassi
2023-10-18 23:59 ` patch 'net/mlx5: fix leak in sysfs port name translation' " luca.boccassi
2023-10-18 23:59 ` patch 'fib: fix adding default route overwriting entire table' " luca.boccassi
2023-10-18 23:59 ` patch 'fib6: fix adding default route as first route' " luca.boccassi
2023-10-18 23:59 ` patch 'net/bonding: fix link status callback stop' " luca.boccassi
2023-10-18 23:59 ` patch 'app/procinfo: remove unnecessary rte_malloc' " luca.boccassi
2023-11-08 19:24   ` patch 'malloc: remove return from void functions' " luca.boccassi
2023-11-08 19:25     ` patch 'eventdev: fix device pointer for vdev-based devices' " luca.boccassi
2023-11-08 19:25     ` patch 'eventdev: fix missing driver names in info struct' " luca.boccassi
2023-11-08 19:25     ` patch 'net/virtio: fix missing next flag in Tx packed ring' " luca.boccassi
2023-11-08 19:25     ` patch 'net/virtio: fix link state interrupt vector setting' " luca.boccassi
2023-11-08 19:25     ` patch 'vhost: fix missing vring call check on virtqueue access' " luca.boccassi
2023-11-08 19:25     ` patch 'vhost: fix missing " luca.boccassi
2023-11-08 19:25     ` patch 'ethdev: fix function name in comment' " luca.boccassi
2023-11-08 19:25     ` patch 'app/testpmd: fix early exit from signal' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: fix unchecked Rx free threshold' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: fix crash for NEON and SVE' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: fix double stats for IMP and global reset' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: remove reset log in secondary' " luca.boccassi
2023-11-08 19:25     ` patch 'test/bonding: remove unreachable statement' " luca.boccassi
2023-11-08 19:25     ` patch 'test/bonding: add missing check' " luca.boccassi
2023-11-08 19:25     ` patch 'net/bonding: fix possible overrun' " luca.boccassi
2023-11-08 19:25     ` patch 'net/txgbe: add proper memory barriers in Rx' " luca.boccassi
2023-11-08 19:25     ` patch 'ethdev: fix 32-bit build with GCC 13' " luca.boccassi
2023-11-08 19:25     ` patch 'net/enic: avoid extra unlock in MTU set' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: fix setting DCB capability' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: fix some return values' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: fix some error logs' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: keep set/get algo key functions local' " luca.boccassi
2023-11-08 19:25     ` patch 'net/hns3: fix uninitialized hash algo value' " luca.boccassi
2023-11-08 19:25     ` patch 'net/tap: fix L4 checksum offloading' " luca.boccassi
2023-11-08 19:25     ` patch 'net/tap: fix IPv4 " luca.boccassi
2023-11-08 19:25     ` patch 'app/procinfo: fix RSS info' " luca.boccassi
2023-11-08 19:25     ` patch 'app/procinfo: adjust format of " luca.boccassi
2023-11-08 19:25     ` patch 'net/nfp: fix link status interrupt' " luca.boccassi
2023-11-08 19:25     ` patch 'net/nfp: fix DMA error after abnormal exit' " luca.boccassi
2023-11-08 19:25     ` patch 'net/tap: fix RSS for fragmented packets' " luca.boccassi
2023-11-08 19:25     ` patch 'common/mlx5: fix controller index parsing' " luca.boccassi
2023-11-08 19:25     ` patch 'net/ice: fix L1 check interval' " luca.boccassi
2023-11-08 19:25     ` patch 'net/ice: fix DCF port statistics' " luca.boccassi
2023-11-08 19:25     ` patch 'crypto/nitrox: fix panic with high number of segments' " luca.boccassi
2023-11-08 19:25     ` patch 'net/iavf: fix Tx preparation' " luca.boccassi
2023-11-08 19:25     ` patch 'net/ice: " luca.boccassi
2023-11-15 11:45       ` patch 'event/dlb2: fix name check in self-test' " luca.boccassi
2023-11-15 11:45         ` patch 'test/bbdev: fix Python script subprocess' " luca.boccassi
2023-11-15 11:45         ` patch 'test/bbdev: assert failed test for queue configure' " luca.boccassi
2023-11-15 11:45         ` patch 'event/dlb2: fix missing queue ordering capability flag' " luca.boccassi
2023-11-15 11:45         ` patch 'meter: fix RFC4115 trTCM API Doxygen' " luca.boccassi
2023-11-15 11:45         ` patch 'app/testpmd: remove useless check in TSO command' " luca.boccassi
2023-11-15 11:45         ` patch 'test/bonding: fix uninitialized RSS configuration' " luca.boccassi
2023-11-15 11:45         ` luca.boccassi [this message]
2023-11-15 11:45         ` patch 'app/testpmd: fix tunnel TSO capability check' " luca.boccassi
2023-11-15 11:45         ` patch 'app/testpmd: add explicit check for tunnel TSO' " luca.boccassi
2023-11-15 11:45         ` patch 'app/testpmd: fix tunnel TSO configuration' " luca.boccassi
2023-11-15 11:45         ` patch 'net/mlx5: fix hairpin queue unbind' " luca.boccassi
2023-11-15 11:45         ` patch 'net/mlx5: fix hairpin queue states' " luca.boccassi
2023-11-15 11:45         ` patch 'net/mlx5: fix multi-segment Tx inline data length' " luca.boccassi
2023-11-15 11:45         ` patch 'net/mlx5: zero UDP checksum over IPv4 in encapsulation' " luca.boccassi
2023-11-15 11:45         ` patch 'net/mlx5: fix MPRQ stride size check' " luca.boccassi
2023-11-23 16:17           ` patch 'net/txgbe: fix out of bound access' " luca.boccassi
2023-11-23 16:17             ` patch 'doc: update features in hns3 guide' " luca.boccassi
2023-11-23 16:17             ` patch 'doc: update versions recommendations for i40e and ice' " luca.boccassi
2023-11-23 16:17             ` patch 'examples/ipsec-secgw: fix partial overflow' " luca.boccassi
2023-11-23 16:17             ` patch 'eal/windows: fix build with recent MinGW' " luca.boccassi
2023-11-23 16:17             ` patch 'pdump: fix error number on IPC response' " luca.boccassi
2023-11-23 16:17             ` patch 'examples/ethtool: fix pause configuration' " luca.boccassi
2023-11-23 16:17             ` patch 'test/hash: fix creation error log' " luca.boccassi
2023-11-23 16:17             ` patch 'app/pipeline: add sigint handler' " luca.boccassi
2023-11-29  2:32               ` patch 'doc: remove restriction on ixgbe vector support' " luca.boccassi
2023-11-29  2:32                 ` patch 'doc: fix some ordered lists' " luca.boccassi
2023-11-29  2:32                 ` patch 'doc: remove number of commands in vDPA guide' " luca.boccassi
2023-11-29  2:32                 ` patch 'mempool: fix get function documentation' " luca.boccassi
2023-11-29  2:32                 ` patch 'mempool: clarify enqueue/dequeue ops " luca.boccassi
2023-11-29  2:32                 ` patch 'ethdev: fix ESP packet type description' " luca.boccassi

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=20231115114515.2355140-8-luca.boccassi@gmail.com \
    --to=luca.boccassi@gmail.com \
    --cc=haijie1@huawei.com \
    --cc=huangdengdui@huawei.com \
    --cc=lihuisong@huawei.com \
    --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
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).