patches for DPDK stable branches
 help / color / mirror / Atom feed
From: Xueming Li <xuemingl@nvidia.com>
To: Dengdui Huang <huangdengdui@huawei.com>
Cc: Jie Hai <haijie1@huawei.com>, dpdk stable <stable@dpdk.org>
Subject: patch 'net/hns3: refactor send mailbox function' has been queued to stable release 23.11.1
Date: Tue, 5 Mar 2024 17:47:05 +0800	[thread overview]
Message-ID: <20240305094757.439387-85-xuemingl@nvidia.com> (raw)
In-Reply-To: <20240305094757.439387-1-xuemingl@nvidia.com>

Hi,

FYI, your patch has been queued to stable release 23.11.1

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 03/31/24. 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=23.11-staging

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

Thanks.

Xueming Li <xuemingl@nvidia.com>

---
From 1be4ad59be7f6d3cea9c6e4536339178714c2cfc Mon Sep 17 00:00:00 2001
From: Dengdui Huang <huangdengdui@huawei.com>
Date: Fri, 8 Dec 2023 14:55:07 +0800
Subject: [PATCH] net/hns3: refactor send mailbox function
Cc: Xueming Li <xuemingl@nvidia.com>

[ upstream commit c9bd98d84587dbc0dddb8964ad3d7d54818aca01 ]

The 'hns3_send_mbx_msg' function has following problem:
1. the name is vague, missing caller indication
2. too many input parameters because the filling messages
   are placed in commands the send command.

Therefore, a common interface is encapsulated to fill in
the mailbox message before sending it.

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

Signed-off-by: Dengdui Huang <huangdengdui@huawei.com>
Signed-off-by: Jie Hai <haijie1@huawei.com>
---
 drivers/net/hns3/hns3_ethdev_vf.c | 141 ++++++++++++++++++------------
 drivers/net/hns3/hns3_mbx.c       |  50 ++++-------
 drivers/net/hns3/hns3_mbx.h       |   8 +-
 drivers/net/hns3/hns3_rxtx.c      |  18 ++--
 4 files changed, 116 insertions(+), 101 deletions(-)

diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c
index 19e734ca8d..b0d0c29df1 100644
--- a/drivers/net/hns3/hns3_ethdev_vf.c
+++ b/drivers/net/hns3/hns3_ethdev_vf.c
@@ -91,11 +91,13 @@ hns3vf_add_uc_mac_addr(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
 {
 	/* mac address was checked by upper level interface */
 	char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_UNICAST,
-				HNS3_MBX_MAC_VLAN_UC_ADD, mac_addr->addr_bytes,
-				RTE_ETHER_ADDR_LEN, false, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_UNICAST,
+			 HNS3_MBX_MAC_VLAN_UC_ADD);
+	memcpy(req.data, mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN);
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
 				      mac_addr);
@@ -110,12 +112,13 @@ hns3vf_remove_uc_mac_addr(struct hns3_hw *hw, struct rte_ether_addr *mac_addr)
 {
 	/* mac address was checked by upper level interface */
 	char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_UNICAST,
-				HNS3_MBX_MAC_VLAN_UC_REMOVE,
-				mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN,
-				false, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_UNICAST,
+			 HNS3_MBX_MAC_VLAN_UC_REMOVE);
+	memcpy(req.data, mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN);
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
 				       mac_addr);
@@ -134,6 +137,7 @@ hns3vf_set_default_mac_addr(struct rte_eth_dev *dev,
 	struct rte_ether_addr *old_addr;
 	uint8_t addr_bytes[HNS3_TWO_ETHER_ADDR_LEN]; /* for 2 MAC addresses */
 	char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

 	/*
@@ -146,9 +150,10 @@ hns3vf_set_default_mac_addr(struct rte_eth_dev *dev,
 	memcpy(&addr_bytes[RTE_ETHER_ADDR_LEN], old_addr->addr_bytes,
 	       RTE_ETHER_ADDR_LEN);

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_UNICAST,
-				HNS3_MBX_MAC_VLAN_UC_MODIFY, addr_bytes,
-				HNS3_TWO_ETHER_ADDR_LEN, true, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_UNICAST,
+			 HNS3_MBX_MAC_VLAN_UC_MODIFY);
+	memcpy(req.data, addr_bytes, HNS3_TWO_ETHER_ADDR_LEN);
+	ret = hns3vf_mbx_send(hw, &req, true, NULL, 0);
 	if (ret) {
 		/*
 		 * The hns3 VF PMD depends on the hns3 PF kernel ethdev
@@ -185,12 +190,13 @@ hns3vf_add_mc_mac_addr(struct hns3_hw *hw,
 		       struct rte_ether_addr *mac_addr)
 {
 	char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_MULTICAST,
-				HNS3_MBX_MAC_VLAN_MC_ADD,
-				mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN, false,
-				NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_MULTICAST,
+			 HNS3_MBX_MAC_VLAN_MC_ADD);
+	memcpy(req.data, mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN);
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
 				      mac_addr);
@@ -206,12 +212,13 @@ hns3vf_remove_mc_mac_addr(struct hns3_hw *hw,
 			  struct rte_ether_addr *mac_addr)
 {
 	char mac_str[RTE_ETHER_ADDR_FMT_SIZE];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_MULTICAST,
-				HNS3_MBX_MAC_VLAN_MC_REMOVE,
-				mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN, false,
-				NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_MULTICAST,
+			 HNS3_MBX_MAC_VLAN_MC_REMOVE);
+	memcpy(req.data, mac_addr->addr_bytes, RTE_ETHER_ADDR_LEN);
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret) {
 		hns3_ether_format_addr(mac_str, RTE_ETHER_ADDR_FMT_SIZE,
 				       mac_addr);
@@ -348,7 +355,6 @@ hns3vf_bind_ring_with_vector(struct hns3_hw *hw, uint16_t vector_id,
 			     bool mmap, enum hns3_ring_type queue_type,
 			     uint16_t queue_id)
 {
-#define HNS3_RING_VERCTOR_DATA_SIZE	14
 	struct hns3_vf_to_pf_msg req = {0};
 	const char *op_str;
 	int ret;
@@ -365,8 +371,7 @@ hns3vf_bind_ring_with_vector(struct hns3_hw *hw, uint16_t vector_id,
 	req.ring_param[0].ring_type = queue_type;
 	req.ring_param[0].tqp_index = queue_id;
 	op_str = mmap ? "Map" : "Unmap";
-	ret = hns3_send_mbx_msg(hw, req.code, 0, (uint8_t *)&req.vector_id,
-				HNS3_RING_VERCTOR_DATA_SIZE, false, NULL, 0);
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret)
 		hns3_err(hw, "%s TQP %u fail, vector_id is %u, ret = %d.",
 			 op_str, queue_id, req.vector_id, ret);
@@ -452,10 +457,12 @@ cfg_err:
 static int
 hns3vf_config_mtu(struct hns3_hw *hw, uint16_t mtu)
 {
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_MTU, 0, (const uint8_t *)&mtu,
-				sizeof(mtu), true, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_MTU, 0);
+	memcpy(req.data, &mtu, sizeof(mtu));
+	ret = hns3vf_mbx_send(hw, &req, true, NULL, 0);
 	if (ret)
 		hns3_err(hw, "Failed to set mtu (%u) for vf: %d", mtu, ret);

@@ -646,12 +653,13 @@ hns3vf_get_push_lsc_cap(struct hns3_hw *hw)
 	uint16_t val = HNS3_PF_PUSH_LSC_CAP_NOT_SUPPORTED;
 	uint16_t exp = HNS3_PF_PUSH_LSC_CAP_UNKNOWN;
 	struct hns3_vf *vf = HNS3_DEV_HW_TO_VF(hw);
+	struct hns3_vf_to_pf_msg req;

 	__atomic_store_n(&vf->pf_push_lsc_cap, HNS3_PF_PUSH_LSC_CAP_UNKNOWN,
 			 __ATOMIC_RELEASE);

-	(void)hns3_send_mbx_msg(hw, HNS3_MBX_GET_LINK_STATUS, 0, NULL, 0, false,
-				NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_GET_LINK_STATUS, 0);
+	(void)hns3vf_mbx_send(hw, &req, false, NULL, 0);

 	while (remain_ms > 0) {
 		rte_delay_ms(HNS3_POLL_RESPONE_MS);
@@ -746,12 +754,13 @@ hns3vf_check_tqp_info(struct hns3_hw *hw)
 static int
 hns3vf_get_port_base_vlan_filter_state(struct hns3_hw *hw)
 {
+	struct hns3_vf_to_pf_msg req;
 	uint8_t resp_msg;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_VLAN,
-				HNS3_MBX_GET_PORT_BASE_VLAN_STATE, NULL, 0,
-				true, &resp_msg, sizeof(resp_msg));
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_VLAN,
+			 HNS3_MBX_GET_PORT_BASE_VLAN_STATE);
+	ret = hns3vf_mbx_send(hw, &req, true, &resp_msg, sizeof(resp_msg));
 	if (ret) {
 		if (ret == -ETIME) {
 			/*
@@ -792,10 +801,12 @@ hns3vf_get_queue_info(struct hns3_hw *hw)
 {
 #define HNS3VF_TQPS_RSS_INFO_LEN	6
 	uint8_t resp_msg[HNS3VF_TQPS_RSS_INFO_LEN];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_GET_QINFO, 0, NULL, 0, true,
-				resp_msg, HNS3VF_TQPS_RSS_INFO_LEN);
+	hns3vf_mbx_setup(&req, HNS3_MBX_GET_QINFO, 0);
+	ret = hns3vf_mbx_send(hw, &req, true,
+			      resp_msg, HNS3VF_TQPS_RSS_INFO_LEN);
 	if (ret) {
 		PMD_INIT_LOG(ERR, "Failed to get tqp info from PF: %d", ret);
 		return ret;
@@ -833,10 +844,11 @@ hns3vf_get_basic_info(struct hns3_hw *hw)
 {
 	uint8_t resp_msg[HNS3_MBX_MAX_RESP_DATA_SIZE];
 	struct hns3_basic_info *basic_info;
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_GET_BASIC_INFO, 0, NULL, 0,
-				true, resp_msg, sizeof(resp_msg));
+	hns3vf_mbx_setup(&req, HNS3_MBX_GET_BASIC_INFO, 0);
+	ret = hns3vf_mbx_send(hw, &req, true, resp_msg, sizeof(resp_msg));
 	if (ret) {
 		hns3_err(hw, "failed to get basic info from PF, ret = %d.",
 				ret);
@@ -856,10 +868,11 @@ static int
 hns3vf_get_host_mac_addr(struct hns3_hw *hw)
 {
 	uint8_t host_mac[RTE_ETHER_ADDR_LEN];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_GET_MAC_ADDR, 0, NULL, 0,
-				true, host_mac, RTE_ETHER_ADDR_LEN);
+	hns3vf_mbx_setup(&req, HNS3_MBX_GET_MAC_ADDR, 0);
+	ret = hns3vf_mbx_send(hw, &req, true, host_mac, RTE_ETHER_ADDR_LEN);
 	if (ret) {
 		hns3_err(hw, "Failed to get mac addr from PF: %d", ret);
 		return ret;
@@ -908,6 +921,7 @@ static void
 hns3vf_request_link_info(struct hns3_hw *hw)
 {
 	struct hns3_vf *vf = HNS3_DEV_HW_TO_VF(hw);
+	struct hns3_vf_to_pf_msg req;
 	bool send_req;
 	int ret;

@@ -919,8 +933,8 @@ hns3vf_request_link_info(struct hns3_hw *hw)
 	if (!send_req)
 		return;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_GET_LINK_STATUS, 0, NULL, 0, false,
-				NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_GET_LINK_STATUS, 0);
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret) {
 		hns3_err(hw, "failed to fetch link status, ret = %d", ret);
 		return;
@@ -964,16 +978,18 @@ hns3vf_update_link_status(struct hns3_hw *hw, uint8_t link_status,
 static int
 hns3vf_vlan_filter_configure(struct hns3_adapter *hns, uint16_t vlan_id, int on)
 {
-	struct hns3_mbx_vlan_filter vlan_filter = {0};
+	struct hns3_mbx_vlan_filter *vlan_filter;
+	struct hns3_vf_to_pf_msg req = {0};
 	struct hns3_hw *hw = &hns->hw;

-	vlan_filter.is_kill = on ? 0 : 1;
-	vlan_filter.proto = rte_cpu_to_le_16(RTE_ETHER_TYPE_VLAN);
-	vlan_filter.vlan_id =  rte_cpu_to_le_16(vlan_id);
+	req.code = HNS3_MBX_SET_VLAN;
+	req.subcode = HNS3_MBX_VLAN_FILTER;
+	vlan_filter = (struct hns3_mbx_vlan_filter *)req.data;
+	vlan_filter->is_kill = on ? 0 : 1;
+	vlan_filter->proto = rte_cpu_to_le_16(RTE_ETHER_TYPE_VLAN);
+	vlan_filter->vlan_id = rte_cpu_to_le_16(vlan_id);

-	return hns3_send_mbx_msg(hw, HNS3_MBX_SET_VLAN, HNS3_MBX_VLAN_FILTER,
-				(uint8_t *)&vlan_filter, sizeof(vlan_filter),
-				 true, NULL, 0);
+	return hns3vf_mbx_send(hw, &req, true, NULL, 0);
 }

 static int
@@ -1002,6 +1018,7 @@ hns3vf_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on)
 static int
 hns3vf_en_vlan_filter(struct hns3_hw *hw, bool enable)
 {
+	struct hns3_vf_to_pf_msg req;
 	uint8_t msg_data;
 	int ret;

@@ -1009,9 +1026,10 @@ hns3vf_en_vlan_filter(struct hns3_hw *hw, bool enable)
 		return 0;

 	msg_data = enable ? 1 : 0;
-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_VLAN,
-			HNS3_MBX_ENABLE_VLAN_FILTER, &msg_data,
-			sizeof(msg_data), true, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_VLAN,
+			 HNS3_MBX_ENABLE_VLAN_FILTER);
+	memcpy(req.data, &msg_data, sizeof(msg_data));
+	ret = hns3vf_mbx_send(hw, &req, true, NULL, 0);
 	if (ret)
 		hns3_err(hw, "%s vlan filter failed, ret = %d.",
 				enable ? "enable" : "disable", ret);
@@ -1022,12 +1040,15 @@ hns3vf_en_vlan_filter(struct hns3_hw *hw, bool enable)
 static int
 hns3vf_en_hw_strip_rxvtag(struct hns3_hw *hw, bool enable)
 {
+	struct hns3_vf_to_pf_msg req;
 	uint8_t msg_data;
 	int ret;

 	msg_data = enable ? 1 : 0;
-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_SET_VLAN, HNS3_MBX_VLAN_RX_OFF_CFG,
-				&msg_data, sizeof(msg_data), false, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_VLAN,
+			 HNS3_MBX_VLAN_RX_OFF_CFG);
+	memcpy(req.data, &msg_data, sizeof(msg_data));
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret)
 		hns3_err(hw, "vf %s strip failed, ret = %d.",
 				enable ? "enable" : "disable", ret);
@@ -1171,11 +1192,13 @@ hns3vf_dev_configure_vlan(struct rte_eth_dev *dev)
 static int
 hns3vf_set_alive(struct hns3_hw *hw, bool alive)
 {
+	struct hns3_vf_to_pf_msg req;
 	uint8_t msg_data;

 	msg_data = alive ? 1 : 0;
-	return hns3_send_mbx_msg(hw, HNS3_MBX_SET_ALIVE, 0, &msg_data,
-				 sizeof(msg_data), false, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_SET_ALIVE, 0);
+	memcpy(req.data, &msg_data, sizeof(msg_data));
+	return hns3vf_mbx_send(hw, &req, false, NULL, 0);
 }

 static void
@@ -1183,11 +1206,12 @@ hns3vf_keep_alive_handler(void *param)
 {
 	struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)param;
 	struct hns3_adapter *hns = eth_dev->data->dev_private;
+	struct hns3_vf_to_pf_msg req;
 	struct hns3_hw *hw = &hns->hw;
 	int ret;

-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_KEEP_ALIVE, 0, NULL, 0,
-				false, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_KEEP_ALIVE, 0);
+	ret = hns3vf_mbx_send(hw, &req, false, NULL, 0);
 	if (ret)
 		hns3_err(hw, "VF sends keeping alive cmd failed(=%d)",
 			 ret);
@@ -1326,9 +1350,11 @@ err_init_hardware:
 static int
 hns3vf_clear_vport_list(struct hns3_hw *hw)
 {
-	return hns3_send_mbx_msg(hw, HNS3_MBX_HANDLE_VF_TBL,
-				 HNS3_MBX_VPORT_LIST_CLEAR, NULL, 0, false,
-				 NULL, 0);
+	struct hns3_vf_to_pf_msg req;
+
+	hns3vf_mbx_setup(&req, HNS3_MBX_HANDLE_VF_TBL,
+			 HNS3_MBX_VPORT_LIST_CLEAR);
+	return hns3vf_mbx_send(hw, &req, false, NULL, 0);
 }

 static int
@@ -1797,12 +1823,13 @@ hns3vf_wait_hardware_ready(struct hns3_adapter *hns)
 static int
 hns3vf_prepare_reset(struct hns3_adapter *hns)
 {
+	struct hns3_vf_to_pf_msg req;
 	struct hns3_hw *hw = &hns->hw;
 	int ret;

 	if (hw->reset.level == HNS3_VF_FUNC_RESET) {
-		ret = hns3_send_mbx_msg(hw, HNS3_MBX_RESET, 0, NULL,
-					0, true, NULL, 0);
+		hns3vf_mbx_setup(&req, HNS3_MBX_RESET, 0);
+		ret = hns3vf_mbx_send(hw, &req, true, NULL, 0);
 		if (ret)
 			return ret;
 	}
diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c
index c90f5d59ba..43195ff184 100644
--- a/drivers/net/hns3/hns3_mbx.c
+++ b/drivers/net/hns3/hns3_mbx.c
@@ -24,6 +24,14 @@ static const struct errno_respcode_map err_code_map[] = {
 	{95, -EOPNOTSUPP},
 };

+void
+hns3vf_mbx_setup(struct hns3_vf_to_pf_msg *req, uint8_t code, uint8_t subcode)
+{
+	memset(req, 0, sizeof(struct hns3_vf_to_pf_msg));
+	req->code = code;
+	req->subcode = subcode;
+}
+
 static int
 hns3_resp_to_errno(uint16_t resp_code)
 {
@@ -118,45 +126,24 @@ hns3_mbx_prepare_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode)
 }

 int
-hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
-		  const uint8_t *msg_data, uint8_t msg_len, bool need_resp,
-		  uint8_t *resp_data, uint16_t resp_len)
+hns3vf_mbx_send(struct hns3_hw *hw,
+		struct hns3_vf_to_pf_msg *req, bool need_resp,
+		uint8_t *resp_data, uint16_t resp_len)
 {
-	struct hns3_mbx_vf_to_pf_cmd *req;
+	struct hns3_mbx_vf_to_pf_cmd *cmd;
 	struct hns3_cmd_desc desc;
-	bool is_ring_vector_msg;
 	int ret;

-	req = (struct hns3_mbx_vf_to_pf_cmd *)desc.data;
-
-	/* first two bytes are reserved for code & subcode */
-	if (msg_len > HNS3_MBX_MSG_MAX_DATA_SIZE) {
-		hns3_err(hw,
-			 "VF send mbx msg fail, msg len %u exceeds max payload len %d",
-			 msg_len, HNS3_MBX_MSG_MAX_DATA_SIZE);
-		return -EINVAL;
-	}
-
 	hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_MBX_VF_TO_PF, false);
-	req->msg.code = code;
-	is_ring_vector_msg = (code == HNS3_MBX_MAP_RING_TO_VECTOR) ||
-			     (code == HNS3_MBX_UNMAP_RING_TO_VECTOR) ||
-			     (code == HNS3_MBX_GET_RING_VECTOR_MAP);
-	if (!is_ring_vector_msg)
-		req->msg.subcode = subcode;
-	if (msg_data) {
-		if (is_ring_vector_msg)
-			memcpy(&req->msg.vector_id, msg_data, msg_len);
-		else
-			memcpy(&req->msg.data, msg_data, msg_len);
-	}
+	cmd = (struct hns3_mbx_vf_to_pf_cmd *)desc.data;
+	cmd->msg = *req;

 	/* synchronous send */
 	if (need_resp) {
-		req->mbx_need_resp |= HNS3_MBX_NEED_RESP_BIT;
+		cmd->mbx_need_resp |= HNS3_MBX_NEED_RESP_BIT;
 		rte_spinlock_lock(&hw->mbx_resp.lock);
-		hns3_mbx_prepare_resp(hw, code, subcode);
-		req->match_id = hw->mbx_resp.match_id;
+		hns3_mbx_prepare_resp(hw, req->code, req->subcode);
+		cmd->match_id = hw->mbx_resp.match_id;
 		ret = hns3_cmd_send(hw, &desc, 1);
 		if (ret) {
 			rte_spinlock_unlock(&hw->mbx_resp.lock);
@@ -165,7 +152,8 @@ hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
 			return ret;
 		}

-		ret = hns3_get_mbx_resp(hw, code, subcode, resp_data, resp_len);
+		ret = hns3_get_mbx_resp(hw, req->code, req->subcode,
+					resp_data, resp_len);
 		rte_spinlock_unlock(&hw->mbx_resp.lock);
 	} else {
 		/* asynchronous send */
diff --git a/drivers/net/hns3/hns3_mbx.h b/drivers/net/hns3/hns3_mbx.h
index 09780fcebd..2952b96ab6 100644
--- a/drivers/net/hns3/hns3_mbx.h
+++ b/drivers/net/hns3/hns3_mbx.h
@@ -208,7 +208,9 @@ struct hns3_pf_rst_done_cmd {

 struct hns3_hw;
 void hns3_dev_handle_mbx_msg(struct hns3_hw *hw);
-int hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
-		      const uint8_t *msg_data, uint8_t msg_len, bool need_resp,
-		      uint8_t *resp_data, uint16_t resp_len);
+void hns3vf_mbx_setup(struct hns3_vf_to_pf_msg *req,
+		      uint8_t code, uint8_t subcode);
+int hns3vf_mbx_send(struct hns3_hw *hw,
+		    struct hns3_vf_to_pf_msg *req_msg, bool need_resp,
+		    uint8_t *resp_data, uint16_t resp_len);
 #endif /* HNS3_MBX_H */
diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c
index 09b7e90c70..9087bcffed 100644
--- a/drivers/net/hns3/hns3_rxtx.c
+++ b/drivers/net/hns3/hns3_rxtx.c
@@ -686,13 +686,12 @@ tqp_reset_fail:
 static int
 hns3vf_reset_tqp(struct hns3_hw *hw, uint16_t queue_id)
 {
-	uint8_t msg_data[2];
+	struct hns3_vf_to_pf_msg req;
 	int ret;

-	memcpy(msg_data, &queue_id, sizeof(uint16_t));
-
-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
-				 sizeof(msg_data), true, NULL, 0);
+	hns3vf_mbx_setup(&req, HNS3_MBX_QUEUE_RESET, 0);
+	memcpy(req.data, &queue_id, sizeof(uint16_t));
+	ret = hns3vf_mbx_send(hw, &req, true, NULL, 0);
 	if (ret)
 		hns3_err(hw, "fail to reset tqp, queue_id = %u, ret = %d.",
 			 queue_id, ret);
@@ -769,15 +768,14 @@ static int
 hns3vf_reset_all_tqps(struct hns3_hw *hw)
 {
 #define HNS3VF_RESET_ALL_TQP_DONE	1U
+	struct hns3_vf_to_pf_msg req;
 	uint8_t reset_status;
-	uint8_t msg_data[2];
 	int ret;
 	uint16_t i;

-	memset(msg_data, 0, sizeof(msg_data));
-	ret = hns3_send_mbx_msg(hw, HNS3_MBX_QUEUE_RESET, 0, msg_data,
-				sizeof(msg_data), true, &reset_status,
-				sizeof(reset_status));
+	hns3vf_mbx_setup(&req, HNS3_MBX_QUEUE_RESET, 0);
+	ret = hns3vf_mbx_send(hw, &req, true,
+			      &reset_status, sizeof(reset_status));
 	if (ret) {
 		hns3_err(hw, "fail to send rcb reset mbx, ret = %d.", ret);
 		return ret;
--
2.34.1

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2024-03-05 17:39:33.547637285 +0800
+++ 0084-net-hns3-refactor-send-mailbox-function.patch	2024-03-05 17:39:30.833566495 +0800
@@ -1 +1 @@
-From c9bd98d84587dbc0dddb8964ad3d7d54818aca01 Mon Sep 17 00:00:00 2001
+From 1be4ad59be7f6d3cea9c6e4536339178714c2cfc Mon Sep 17 00:00:00 2001
@@ -4,0 +5,3 @@
+Cc: Xueming Li <xuemingl@nvidia.com>
+
+[ upstream commit c9bd98d84587dbc0dddb8964ad3d7d54818aca01 ]
@@ -15 +17,0 @@
-Cc: stable@dpdk.org

  parent reply	other threads:[~2024-03-05  9:55 UTC|newest]

Thread overview: 263+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-05  9:45 patches have " Xueming Li
2024-03-05  9:45 ` patch 'buildtools/cmdline: fix generated code for IP addresses' has " Xueming Li
2024-03-05  9:45 ` patch 'buildtools/cmdline: fix IP address initializer' " Xueming Li
2024-03-05  9:45 ` patch 'hash: remove some dead code' " Xueming Li
2024-03-05  9:45 ` patch 'regexdev: fix logtype register' " Xueming Li
2024-03-05  9:45 ` patch 'lib: use dedicated logtypes and macros' " Xueming Li
2024-03-05  9:45 ` patch 'lib: add newline in logs' " Xueming Li
2024-03-05  9:45 ` patch 'lib: remove redundant newline from " Xueming Li
2024-03-05  9:45 ` patch 'dma/dpaa2: fix logtype register' " Xueming Li
2024-03-05  9:45 ` patch 'net/i40e: remove redundant judgment in flow parsing' " Xueming Li
2024-03-05  9:45 ` patch 'net/iavf: fix memory leak on security context error' " Xueming Li
2024-03-05  9:45 ` patch 'net/ixgbe: fix memoy leak after device init failure' " Xueming Li
2024-03-05  9:45 ` patch 'net/ice: fix link update' " Xueming Li
2024-03-05  9:45 ` patch 'net/ice: fix tunnel TSO capabilities' " Xueming Li
2024-03-05  9:45 ` patch 'net/iavf: fix no polling mode switching' " Xueming Li
2024-03-05  9:45 ` patch 'net/iavf: fix crash on VF start' " Xueming Li
2024-03-05  9:45 ` patch 'net/ice: fix memory leaks' " Xueming Li
2024-03-05  9:45 ` patch 'kernel/freebsd: fix module build on FreeBSD 14' " Xueming Li
2024-03-05  9:45 ` patch 'build: fix reasons conflict' " Xueming Li
2024-03-05  9:46 ` patch 'app/graph: fix build reason' " Xueming Li
2024-03-05  9:46 ` patch 'telemetry: fix connected clients count' " Xueming Li
2024-03-05  9:46 ` patch 'telemetry: fix empty JSON dictionaries' " Xueming Li
2024-03-05  9:46 ` patch 'gro: fix reordering of packets' " Xueming Li
2024-03-05  9:46 ` patch 'ci: update versions of actions in GHA' " Xueming Li
2024-03-05  9:46 ` patch 'eal/x86: add AMD vendor check for TSC calibration' " Xueming Li
2024-03-05 11:17   ` Tummala, Sivaprasad
2024-03-05  9:46 ` patch 'doc: remove cmdline polling mode deprecation notice' " Xueming Li
2024-03-05  9:46 ` patch 'eal: verify strdup return' " Xueming Li
2024-03-05  9:46 ` patch 'bus/dpaa: " Xueming Li
2024-03-05  9:46 ` patch 'bus/fslmc: " Xueming Li
2024-03-05  9:46 ` patch 'bus/vdev: " Xueming Li
2024-03-05  9:46 ` patch 'dma/idxd: " Xueming Li
2024-03-05  9:46 ` patch 'event/cnxk: " Xueming Li
2024-03-05  9:46 ` patch 'net/failsafe: fix memory leak in args parsing' " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: verify strdup return' " Xueming Li
2024-03-05  9:46 ` patch 'app/dumpcap: " Xueming Li
2024-03-05  9:46 ` patch 'app/pdump: " Xueming Li
2024-03-05  9:46 ` patch 'app/crypto-perf: " Xueming Li
2024-03-05  9:46 ` patch 'app/dma-perf: " Xueming Li
2024-03-05  9:46 ` patch 'app/testpmd: " Xueming Li
2024-03-05  9:46 ` patch 'test: " Xueming Li
2024-03-05  9:46 ` patch 'examples/qos_sched: fix memory leak in args parsing' " Xueming Li
2024-03-05  9:46 ` patch 'examples/vhost: verify strdup return' " Xueming Li
2024-03-05  9:46 ` patch 'pipeline: fix calloc parameters' " Xueming Li
2024-03-05  9:46 ` patch 'eventdev: " Xueming Li
2024-03-05  9:46 ` patch 'dmadev: " Xueming Li
2024-03-05  9:46 ` patch 'rawdev: " Xueming Li
2024-03-05  9:46 ` patch 'common/mlx5: " Xueming Li
2024-03-05  9:46 ` patch 'net/bnx2x: " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: " Xueming Li
2024-03-05  9:46 ` patch 'net/sfc: " Xueming Li
2024-03-05  9:46 ` patch 'build: fix linker warnings about undefined symbols' " Xueming Li
2024-03-05  9:46 ` patch 'build: link static libs with whole-archive in subproject' " Xueming Li
2024-03-05  9:46 ` patch 'rcu: use atomic operation on acked token' " Xueming Li
2024-03-05  9:46 ` patch 'rcu: fix acked token in debug log' " Xueming Li
2024-03-05  9:46 ` patch 'net: fix TCP/UDP checksum with padding data' " Xueming Li
2024-03-05  9:46 ` patch 'vhost: fix virtqueue access check in datapath' " Xueming Li
2024-03-05  9:46 ` patch 'vhost: fix virtqueue access check in VDUSE setup' " Xueming Li
2024-03-05  9:46 ` patch 'vhost: fix virtqueue access check in vhost-user " Xueming Li
2024-03-05  9:46 ` patch 'net/virtio: remove duplicate queue xstats' " Xueming Li
2024-03-05  9:46 ` patch 'vhost: fix deadlock during vDPA SW live migration' " Xueming Li
2024-03-05  9:46 ` patch 'vdpa/mlx5: fix queue enable drain CQ' " Xueming Li
2024-03-05  9:46 ` patch 'vhost: fix memory leak in Virtio Tx split path' " Xueming Li
2024-03-05  9:46 ` patch 'cryptodev: remove unused extern variable' " Xueming Li
2024-03-05  9:46 ` patch 'examples/ipsec-secgw: fix width of variables' " Xueming Li
2024-03-05  9:46 ` patch 'common/cnxk: fix memory leak in CPT init' " Xueming Li
2024-03-05  9:46 ` patch 'crypto/cnxk: fix CN9K ECDH public key verification' " Xueming Li
2024-03-05  9:46 ` patch 'app/crypto-perf: fix next segment mbuf' " Xueming Li
2024-03-05  9:46 ` patch 'app/crypto-perf: fix data comparison' " Xueming Li
2024-03-05  9:46 ` patch 'app/crypto-perf: fix encrypt operation verification' " Xueming Li
2024-03-05  9:46 ` patch 'event/cnxk: fix dequeue timeout configuration' " Xueming Li
2024-03-05  9:46 ` patch 'test/event: skip test if no driver is present' " Xueming Li
2024-03-05  9:46 ` patch 'doc: fix commands in eventdev test tool guide' " Xueming Li
2024-03-05  9:46 ` patch 'ethdev: fix NVGRE encap flow action description' " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: fix resource leak for device initialization' " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: fix resource leak for CoreNIC firmware' " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: fix resource leak for PF initialization' " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: fix resource leak for flower firmware' " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: fix resource leak for exit of CoreNIC " Xueming Li
2024-03-05  9:46 ` patch 'net/nfp: fix resource leak for exit of flower " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: fix resource leak for VF' " Xueming Li
2024-03-05  9:47 ` patch 'net/af_xdp: fix memzone leak on config failure' " Xueming Li
2024-03-05  9:47 ` patch 'net/memif: fix crash with Tx burst larger than 255' " Xueming Li
2024-03-05  9:47 ` patch 'net/hns3: refactor VF mailbox message struct' " Xueming Li
2024-03-05  9:47 ` patch 'net/hns3: refactor PF " Xueming Li
2024-03-05  9:47 ` Xueming Li [this message]
2024-03-05  9:47 ` patch 'net/hns3: refactor handle mailbox function' " Xueming Li
2024-03-05  9:47 ` patch 'net/hns3: fix VF multiple count on one reset' " Xueming Li
2024-03-05  9:47 ` patch 'net/hns3: fix disable command with firmware' " Xueming Li
2024-03-05  9:47 ` patch 'net/hns3: fix reset level comparison' " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: fix Rx memory leak' " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: fix Rx descriptor' " Xueming Li
2024-03-05  9:47 ` patch 'net/hns3: remove QinQ insert support for VF' " Xueming Li
2024-03-05  9:47 ` patch 'doc: add --latencystats option in testpmd guide' " Xueming Li
2024-03-05  9:47 ` patch 'app/testpmd: hide --bitrate-stats in help if disabled' " Xueming Li
2024-03-05  9:47 ` patch 'net/vmxnet3: fix initialization on FreeBSD' " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: fix device close' " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: fix device resource freeing' " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: free switch domain ID on close' " Xueming Li
2024-03-05  9:47 ` patch 'net/mana: prevent values overflow returned from RDMA layer' " Xueming Li
2024-03-05  9:47 ` patch 'drivers/net: fix buffer overflow for packet types list' " Xueming Li
2024-03-05  9:47 ` patch 'app/testpmd: fix crash in multi-process forwarding' " Xueming Li
2024-03-05  9:47 ` patch 'net/ionic: fix missing volatile type for cqe pointers' " Xueming Li
2024-03-05  9:47 ` patch 'net/ionic: fix RSS query' " Xueming Li
2024-03-05  9:47 ` patch 'net/ionic: fix device close' " Xueming Li
2024-03-05  9:47 ` patch 'net/bonding: fix flow count query' " Xueming Li
2024-03-05  9:47 ` patch 'net/mana: fix memory leak on MR allocation' " Xueming Li
2024-03-05  9:47 ` patch 'net/mana: handle MR cache expansion failure' " Xueming Li
2024-03-05  9:47 ` patch 'common/sfc_efx/base: use C11 static assert' " Xueming Li
2024-03-05  9:47 ` patch 'net/memif: fix extra mbuf refcnt update in zero copy Tx' " Xueming Li
2024-03-05  9:47 ` patch 'net/softnic: fix include of log library' " Xueming Li
2024-03-05  9:47 ` patch 'net/gve: fix DQO for chained descriptors' " Xueming Li
2024-03-05  9:47 ` patch 'net: add macros for VLAN metadata parsing' " Xueming Li
2024-03-05  9:47 ` patch 'net/netvsc: fix " Xueming Li
2024-03-05  9:47 ` patch 'net/bnxt: fix array overflow' " Xueming Li
2024-03-05  9:47 ` patch 'net/bnxt: fix 50G and 100G forced speed' " Xueming Li
2024-03-05  9:47 ` patch 'net/bnxt: fix speed change from 200G to 25G on Thor' " Xueming Li
2024-03-05  9:47 ` patch 'net/bnxt: fix backward firmware compatibility' " Xueming Li
2024-03-05  9:47 ` patch 'net/bnxt: modify locking for representor Tx' " Xueming Li
2024-03-05  9:47 ` patch 'net/bnxt: fix deadlock in ULP timer callback' " Xueming Li
2024-03-05  9:47 ` patch 'ml/cnxk: fix xstats calculation' " Xueming Li
2024-03-05  9:47 ` patch 'net/cnxk: fix flow RSS configuration' " Xueming Li
2024-03-05  9:47 ` patch 'net/thunderx: fix DMAC control register update' " Xueming Li
2024-03-05  9:47 ` patch 'common/cnxk: fix mbox region copy' " Xueming Li
2024-03-05  9:47 ` patch 'common/cnxk: fix VLAN check for inner header' " Xueming Li
2024-03-05  9:47 ` patch 'net/cnxk: fix aged flow query' " Xueming Li
2024-03-05  9:47 ` patch 'net/mlx5: fix jump action validation' " Xueming Li
2024-03-05  9:47 ` patch 'net/mlx5: fix flow tag modification' " Xueming Li
2024-03-05  9:47 ` patch 'net/mlx5/hws: fix ESP flow matching validation' " Xueming Li
2024-03-05  9:47 ` patch 'net/mlx5: fix GENEVE TLV option management' " Xueming Li
2024-03-05  9:47 ` patch 'common/mlx5: fix duplicate read of general capabilities' " Xueming Li
2024-03-05  9:47 ` patch 'common/mlx5: fix query sample info capability' " Xueming Li
2024-03-05  9:47 ` patch 'net/mlx5: remove GENEVE options length limitation' " Xueming Li
2024-03-05  9:47 ` patch 'net/mlx5: fix GENEVE option item translation' " Xueming Li
2024-03-05  9:47 ` patch 'net/mlx5: fix stats query crash in secondary process' " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: fix NFD3 metadata " Xueming Li
2024-03-05  9:47 ` patch 'net/nfp: fix NFDk " Xueming Li
2024-03-05  9:47 ` patch 'app/testpmd: fix GRO packets flush on timeout' " Xueming Li
2024-04-13 12:48 ` patch " Xueming Li
2024-04-13 12:48   ` patch 'doc: fix configuration in baseband 5GNR driver guide' " Xueming Li
2024-04-13 12:48   ` patch 'event/dlb2: remove superfluous memcpy' " Xueming Li
2024-04-13 12:48   ` patch 'test/event: fix crash in Tx adapter freeing' " Xueming Li
2024-04-13 12:48   ` patch 'eventdev: improve Doxygen comments on configure struct' " Xueming Li
2024-04-13 12:48   ` patch 'eventdev: fix Doxygen processing of vector " Xueming Li
2024-04-13 12:48   ` patch 'eventdev/crypto: fix enqueueing' " Xueming Li
2024-04-13 12:48   ` patch 'app/crypto-perf: fix copy segment size' " Xueming Li
2024-04-13 12:48   ` patch 'app/crypto-perf: fix out-of-place mbuf " Xueming Li
2024-04-13 12:48   ` patch 'app/crypto-perf: add missing op resubmission' " Xueming Li
2024-04-13 12:48   ` patch 'doc: fix typos in cryptodev overview' " Xueming Li
2024-04-13 12:48   ` patch 'common/qat: fix legacy flag' " Xueming Li
2024-04-13 12:48   ` patch 'vhost: fix VDUSE device destruction failure' " Xueming Li
2024-04-13 12:48   ` patch 'net/af_xdp: fix leak on XSK configuration " Xueming Li
2024-04-13 12:48   ` patch 'app/testpmd: fix flow modify tag typo' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix modify flex item' " Xueming Li
2024-04-13 12:48   ` patch 'app/testpmd: return if no packets in GRO heavy weight mode' " Xueming Li
2024-04-13 12:48   ` patch 'app/testpmd: fix async flow create failure handling' " Xueming Li
2024-04-13 12:48   ` patch 'net/tap: do not overwrite flow API errors' " Xueming Li
2024-04-13 12:48   ` patch 'net/tap: fix traffic control handle calculation' " Xueming Li
2024-04-13 12:48   ` patch 'net/bnxt: fix null pointer dereference' " Xueming Li
2024-04-13 12:48   ` patch 'net/ixgbevf: fix RSS init for x550 NICs' " Xueming Li
2024-04-13 12:48   ` patch 'net/iavf: remove error logs for VLAN offloading' " Xueming Li
2024-04-13 12:48   ` patch 'net/ixgbe: increase VF reset timeout' " Xueming Li
2024-04-13 12:48   ` patch 'net/i40e: remove incorrect 16B descriptor read block' " Xueming Li
2024-04-13 12:48   ` patch 'net/iavf: " Xueming Li
2024-04-13 12:48   ` patch 'net/ice: " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: fix inline device pointer check' " Xueming Li
2024-04-13 12:48   ` patch 'net/cnxk: fix Rx packet format check condition' " Xueming Li
2024-04-13 12:48   ` patch 'net/bnx2x: fix warnings about memcpy lengths' " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: remove CN9K inline IPsec FP opcodes' " Xueming Li
2024-04-13 12:48   ` patch 'net/cnxk: fix buffer size configuration' " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: fix Tx MTU " Xueming Li
2024-04-13 12:48   ` patch 'net/cnxk: fix MTU limit' " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: fix RSS RETA configuration' " Xueming Li
2024-04-13 12:48   ` patch 'net/cnxk: fix indirect mbuf handling in Tx' " Xueming Li
2024-04-13 12:48   ` patch 'net/cnxk: add cookies check for multi-segment offload' " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: fix mbox struct attributes' " Xueming Li
2024-04-13 12:48   ` patch 'net/cnxk: fix mbuf fields in multi-segment Tx' " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: fix link config for SDP' " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: remove dead code' " Xueming Li
2024-04-13 12:48   ` patch 'common/cnxk: fix possible out-of-bounds access' " Xueming Li
2024-04-13 12:48   ` patch 'net/cnxk: improve Tx performance for SW mbuf free' " Xueming Li
2024-04-13 12:48   ` patch 'doc: fix aging poll frequency option in cnxk guide' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5/hws: skip item when inserting rules by index' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5/hws: check not supported fields in VXLAN' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5/hws: fix VLAN item in non-relaxed mode' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix use after free when releasing Tx queues' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix error packets drop in regular Rx' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: prevent querying aged flows on uninit port' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5/hws: fix VLAN inner type' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix condition of LACP miss flow' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix conntrack action handle representation' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix connection tracking action validation' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix HWS registers initialization' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5/hws: enable multiple integrity items' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix VLAN handling in meter split' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix parameters verification in HWS table create' " Xueming Li
2024-04-13 12:48   ` patch 'net/mlx5: fix flow counter cache starvation' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix counters map in bonding mode' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix flow action template expansion' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: remove device status check in flow creation' " Xueming Li
2024-04-13 12:49   ` patch 'test: fix probing in secondary process' " Xueming Li
2024-04-13 12:49   ` patch 'bus/vdev: fix devargs " Xueming Li
2024-04-13 12:49   ` patch 'config: fix CPU instruction set for cross-build' " Xueming Li
2024-04-13 12:49   ` patch 'test/mbuf: fix external mbuf case with assert enabled' " Xueming Li
2024-04-13 12:49   ` patch 'test: assume C source files are UTF-8 encoded' " Xueming Li
2024-04-13 12:49   ` patch 'test: do not count skipped tests as executed' " Xueming Li
2024-04-13 12:49   ` patch 'examples/packet_ordering: fix Rx with reorder mode disabled' " Xueming Li
2024-04-13 12:49   ` patch 'examples/l3fwd: fix Rx over not ready port' " Xueming Li
2024-04-13 12:49   ` patch 'dts: fix smoke tests driver regex' " Xueming Li
2024-04-13 12:49   ` patch 'examples/l3fwd: fix Rx queue configuration' " Xueming Li
2024-04-13 12:49   ` patch 'net/virtio: fix vDPA device init advertising control queue' " Xueming Li
2024-04-13 12:49   ` patch 'build: pass cflags in subproject' " Xueming Li
2024-04-13 12:49   ` patch 'examples/ipsec-secgw: fix cryptodev to SA mapping' " Xueming Li
2024-04-13 12:49   ` patch 'crypto/qat: fix crash with CCM null AAD pointer' " Xueming Li
2024-04-13 12:49   ` patch 'net/hns3: enable PFC for all user priorities' " Xueming Li
2024-04-13 12:49   ` patch 'doc: add traffic manager in features table' " Xueming Li
2024-04-13 12:49   ` patch 'app/testpmd: fix async indirect action list creation' " Xueming Li
2024-04-13 12:49   ` patch 'doc: add link speeds configuration in features table' " Xueming Li
2024-04-13 12:49   ` patch 'net/nfp: fix getting firmware VNIC version' " Xueming Li
2024-04-13 12:49   ` patch 'net/nfp: fix IPsec data endianness' " Xueming Li
2024-04-13 12:49   ` patch 'net/ena: fix fast mbuf free' " Xueming Li
2024-04-13 12:49   ` patch 'net/ena/base: limit exponential backoff' " Xueming Li
2024-04-13 12:49   ` patch 'net/ena/base: restructure interrupt handling' " Xueming Li
2024-04-13 12:49   ` patch 'net/nfp: fix switch domain free check' " Xueming Li
2024-04-13 12:49   ` patch 'net/nfp: fix initialization failure flow' " Xueming Li
2024-04-13 12:49   ` patch 'app/testpmd: fix --stats-period option check' " Xueming Li
2024-04-13 12:49   ` patch 'app/testpmd: fix burst option parsing' " Xueming Li
2024-04-13 12:49   ` patch 'app/testpmd: fix error message for invalid option' " Xueming Li
2024-04-13 12:49   ` patch 'net/hns3: support new device' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix HWS meter actions availability' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix sync meter processing in HWS' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix indirect action async job initialization' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix non-masked indirect list meter translation' " Xueming Li
2024-04-13 12:49   ` patch 'doc: update link to Windows DevX in mlx5 guide' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix VLAN ID in flow modify' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix meter policy priority' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: remove duplication of L3 flow item validation' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix IP-in-IP tunnels recognition' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix DR context release ordering' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5/hws: fix direct index insert on depend WQE' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix template clean up of FDB control flow rule' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix flow configure validation' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: prevent ioctl failure log flooding' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix age position in hairpin split' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix drop action release timing' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix warning about copy length' " Xueming Li
2024-04-13 12:49   ` patch 'net/bnxt: fix number of Tx queues being created' " Xueming Li
2024-04-13 12:49   ` patch 'examples/ipsec-secgw: fix Rx queue ID in Rx callback' " Xueming Li
2024-04-13 12:49   ` patch 'doc: fix default IP fragments maximum in programmer guide' " Xueming Li
2024-04-13 12:49   ` patch 'net/nfp: fix uninitialized variable' " Xueming Li
2024-04-13 12:49   ` patch 'app/testpmd: fix auto-completion for indirect action list' " Xueming Li
2024-04-13 12:49   ` patch 'net/ena: fix mbuf double free in fast free mode' " Xueming Li
2024-04-13 12:49   ` patch 'net/vmxnet3: ignore Rx queue interrupt setup on FreeBSD' " Xueming Li
2024-04-13 12:49   ` patch 'net/igc: fix timesync disable' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5/hws: fix memory access in L3 decapsulation' " Xueming Li
2024-04-13 12:49   ` patch 'net/mlx5: fix sync flow meter action' " Xueming Li
2024-04-13 12:49   ` patch 'doc: fix typo in profiling guide' " Xueming Li
2024-04-13 12:50   ` patch 'doc: fix typo in packet framework " Xueming Li
2024-04-13 12:50   ` patch 'test/power: fix typo in error message' " Xueming Li
2024-04-13 12:50   ` patch 'test/cfgfile: fix typo in error messages' " Xueming Li
2024-04-13 12:50   ` patch 'examples/ipsec-secgw: fix typo in error message' " Xueming Li
2024-04-13 12:50   ` patch 'dts: strip whitespaces from stdout and stderr' " Xueming Li
2024-04-13 12:50   ` patch 'net/ena/base: fix metrics excessive memory consumption' " 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=20240305094757.439387-85-xuemingl@nvidia.com \
    --to=xuemingl@nvidia.com \
    --cc=haijie1@huawei.com \
    --cc=huangdengdui@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).