All of lore.kernel.org
 help / color / mirror / Atom feed
From: liujie5@linkdatatechnology.com
To: stephen@networkplumber.org
Cc: dev@dpdk.org, Jie Liu <liujie5@linkdatatechnology.com>
Subject: [PATCH v9 25/48] net/sxe2: add ACL engine event statistics support
Date: Wed,  2 Sep 2026 10:00:46 +0800	[thread overview]
Message-ID: <20260902020046.76752-1-liujie5@linkdatatechnology.com> (raw)
In-Reply-To: <20260901031006.3686638-1-liujie5@linkdatatechnology.com>

From: Jie Liu <liujie5@linkdatatechnology.com>

Add statistics support for the ACL flow engine to track packet hits
and bytes, enabling flow aging and traffic monitoring for ACL rules.

- Add acl-stat-type devarg to configure the statistics type
- Implement sxe2_drv_flow_acl_get_stat_id/free_stat/query_stat
- Handle the ACL engine in flow create/destroy/query paths
- Add fnav_hw_res and acl_hw_res count resources

Cc: stephen@networkplumber.org
Signed-off-by: Jie Liu <liujie5@linkdatatechnology.com>
---
 doc/guides/nics/sxe2.rst                  | 11 +++
 drivers/net/sxe2/sxe2_cmd_chnl.c          | 71 ++++++++++++++++++
 drivers/net/sxe2/sxe2_cmd_chnl.h          |  7 ++
 drivers/net/sxe2/sxe2_drv_cmd.h           |  7 ++
 drivers/net/sxe2/sxe2_dump.c              |  2 +
 drivers/net/sxe2/sxe2_ethdev.c            | 23 ++++--
 drivers/net/sxe2/sxe2_ethdev.h            |  1 +
 drivers/net/sxe2/sxe2_flow.c              | 90 ++++++++++++++++++-----
 drivers/net/sxe2/sxe2_flow_define.h       |  5 +-
 drivers/net/sxe2/sxe2_flow_parse_action.c | 28 ++++---
 10 files changed, 209 insertions(+), 36 deletions(-)

diff --git a/doc/guides/nics/sxe2.rst b/doc/guides/nics/sxe2.rst
index 8278a5f108..c5b400a8ba 100644
--- a/doc/guides/nics/sxe2.rst
+++ b/doc/guides/nics/sxe2.rst
@@ -98,6 +98,17 @@ Runtime Configuration
 
   Default value is 3 (count both packets and bytes).
 
+- ``acl-stat-type`` parameter [int]
+
+  This parameter controls the ACL flow engine statistics type
+  used for flow rule hit counting (via ``rte_flow_query``).
+
+  - 1: Only count the number of packets.
+  - 2: Only count the number of bytes.
+  - 3: Count both packets and bytes (default).
+
+  Default value is 3 (count both packets and bytes).
+
 - ``drv-sw-stats`` parameter [int]
 
   This parameter controls whether per-packet software statistics (SW stats)
diff --git a/drivers/net/sxe2/sxe2_cmd_chnl.c b/drivers/net/sxe2/sxe2_cmd_chnl.c
index 3229c72597..3a55528c44 100644
--- a/drivers/net/sxe2/sxe2_cmd_chnl.c
+++ b/drivers/net/sxe2/sxe2_cmd_chnl.c
@@ -1829,6 +1829,77 @@ int32_t sxe2_drv_flow_fnav_query_stat(struct sxe2_adapter *adapter,
 	return ret;
 }
 
+int32_t sxe2_drv_flow_acl_get_stat_id(struct sxe2_adapter *adapter, uint32_t *stat_id)
+{
+	struct sxe2_drv_flow_fnav_get_stat_id_req req = { 0 };
+	struct sxe2_drv_flow_fnav_get_stat_id_resp resp = { 0 };
+	struct sxe2_drv_cmd_params cmd             = { 0 };
+	struct sxe2_common_device *cdev = adapter->cdev;
+	int32_t ret                                 = -1;
+
+	sxe2_drv_cmd_params_fill(adapter, &cmd, SXE2_DRV_CMD_FLOW_ACL_STAT_ALLOC,
+				&req, sizeof(req),
+				&resp, sizeof(resp));
+	ret = sxe2_drv_cmd_exec(cdev, &cmd);
+	if (ret) {
+		PMD_DEV_LOG_ERR(adapter, DRV, "Failed to get acl stat id, ret: %d.", ret);
+		goto l_end;
+	}
+	*stat_id = resp.stat_id;
+
+l_end:
+	return ret;
+}
+
+int32_t sxe2_drv_flow_acl_free_stat(struct sxe2_adapter *adapter, uint32_t stat_id)
+{
+	struct sxe2_drv_flow_fnav_free_stat_id_req req = { 0 };
+	struct sxe2_drv_cmd_params cmd             = { 0 };
+	struct sxe2_common_device *cdev = adapter->cdev;
+	int32_t ret                                 = -1;
+
+	req.stat_id = stat_id;
+	sxe2_drv_cmd_params_fill(adapter, &cmd, SXE2_DRV_CMD_FLOW_ACL_STAT_FREE,
+				&req, sizeof(req),
+				NULL, 0);
+	ret = sxe2_drv_cmd_exec(cdev, &cmd);
+	if (ret) {
+		PMD_DEV_LOG_ERR(adapter, DRV, "Failed to free acl stat id, ret: %d.", ret);
+		goto l_end;
+	}
+
+l_end:
+	return ret;
+}
+
+int32_t sxe2_drv_flow_acl_query_stat(struct sxe2_adapter *adapter,
+				     struct sxe2_flow_cid_mgr *mgr)
+{
+	struct sxe2_drv_flow_fnav_query_stat_req req = { 0 };
+	struct sxe2_drv_flow_fnav_query_stat_resp resp = { 0 };
+	struct sxe2_drv_cmd_params cmd             = { 0 };
+	struct sxe2_common_device *cdev = adapter->cdev;
+	int32_t ret                                 = -1;
+
+	req.stat_id = mgr->stat_index;
+	req.stat_ctrl = mgr->count_type;
+	req.is_clear = 1;
+
+	sxe2_drv_cmd_params_fill(adapter, &cmd, SXE2_DRV_CMD_FLOW_ACL_STAT_QUERY,
+				 &req, sizeof(req), &resp, sizeof(resp));
+	ret = sxe2_drv_cmd_exec(cdev, &cmd);
+	if (ret) {
+		PMD_DEV_LOG_ERR(adapter, DRV, "Failed to query ACL stat, stat id: %u, ret: %d.",
+				req.stat_id, ret);
+		goto l_end;
+	}
+	mgr->hits += resp.stat_hits;
+	mgr->bytes += resp.stat_bytes;
+
+l_end:
+	return ret;
+}
+
 int32_t sxe2_drv_srcvsi_prune_config(struct sxe2_adapter *adapter,
 			uint16_t *vsi_list, uint16_t vsi_cnt, bool set)
 {
diff --git a/drivers/net/sxe2/sxe2_cmd_chnl.h b/drivers/net/sxe2/sxe2_cmd_chnl.h
index cfea1a1f0e..7d07068bfc 100644
--- a/drivers/net/sxe2/sxe2_cmd_chnl.h
+++ b/drivers/net/sxe2/sxe2_cmd_chnl.h
@@ -161,6 +161,13 @@ int32_t sxe2_drv_flow_fnav_free_stat(struct sxe2_adapter *adapter, uint32_t stat
 int32_t sxe2_drv_flow_fnav_query_stat(struct sxe2_adapter *adapter,
 		struct sxe2_flow_cid_mgr *mgr);
 
+int32_t sxe2_drv_flow_acl_get_stat_id(struct sxe2_adapter *adapter, uint32_t *stat_id);
+
+int32_t sxe2_drv_flow_acl_free_stat(struct sxe2_adapter *adapter, uint32_t stat_id);
+
+int32_t sxe2_drv_flow_acl_query_stat(struct sxe2_adapter *adapter,
+			struct sxe2_flow_cid_mgr *mgr);
+
 int32_t sxe2_drv_srcvsi_prune_config(struct sxe2_adapter *adapter,
 		uint16_t *vsi_list, uint16_t vsi_cnt, bool set);
 
diff --git a/drivers/net/sxe2/sxe2_drv_cmd.h b/drivers/net/sxe2/sxe2_drv_cmd.h
index 03ef3b315d..01fd813ed1 100644
--- a/drivers/net/sxe2/sxe2_drv_cmd.h
+++ b/drivers/net/sxe2/sxe2_drv_cmd.h
@@ -824,6 +824,13 @@ enum sxe2_drv_cmd_code {
 	SXE2_DRV_CMD_OPT_EEP_GET =
 		SXE2_MK_DRV_CMD(SXE2_DRV_CMD_MODULE_OPT, 1),
 
+	SXE2_DRV_CMD_FLOW_ACL_STAT_QUERY =
+		SXE2_MK_DRV_CMD(SXE2_DRV_CMD_MODULE_ACL, 1),
+	SXE2_DRV_CMD_FLOW_ACL_STAT_ALLOC =
+		SXE2_MK_DRV_CMD(SXE2_DRV_CMD_MODULE_ACL, 2),
+	SXE2_DRV_CMD_FLOW_ACL_STAT_FREE =
+		SXE2_MK_DRV_CMD(SXE2_DRV_CMD_MODULE_ACL, 3),
+
 };
 
 #endif /* SXE2_DRV_CMD_H */
diff --git a/drivers/net/sxe2/sxe2_dump.c b/drivers/net/sxe2/sxe2_dump.c
index 590219f502..31f7d6ba61 100644
--- a/drivers/net/sxe2/sxe2_dump.c
+++ b/drivers/net/sxe2/sxe2_dump.c
@@ -80,12 +80,14 @@ sxe2_dump_dev_args_info(FILE *file, struct rte_eth_dev *dev)
 		"\t  -- no_sched_mode: %s\n"
 		"\t  -- flow-duplicate-pattern: %u\n"
 		"\t  -- fnav-stat-type: %u\n"
+		"\t  -- acl-stat-type: %u\n"
 		"\t  -- sched_layer_mode: %u\n"
 		"\t  -- rx_low_latency: %s\n"
 		"\t  -- function-flow-direct: %s\n",
 		adapter->devargs.no_sched_mode ? "On" : "Off",
 		adapter->devargs.flow_dup_pattern_mode,
 		adapter->devargs.fnav_stat_type,
+		adapter->devargs.acl_stat_type,
 		adapter->devargs.sched_layer_mode,
 		adapter->devargs.rx_low_latency ? "On" : "Off",
 		adapter->devargs.func_flow_direct_en ? "On" : "Off");
diff --git a/drivers/net/sxe2/sxe2_ethdev.c b/drivers/net/sxe2/sxe2_ethdev.c
index c5f6bc8af4..ea589c7eaa 100644
--- a/drivers/net/sxe2/sxe2_ethdev.c
+++ b/drivers/net/sxe2/sxe2_ethdev.c
@@ -72,6 +72,7 @@ static const struct rte_pci_id pci_id_sxe2_tbl[] = {
 #define SXE2_DEVARG_FLOW_DUP_PATTERN_MODE "flow-duplicate-pattern"
 #define SXE2_DEVARG_FUNC_FLOW_DIRCT "function-flow-direct"
 #define SXE2_DEVARG_FNAV_STAT_TYPE "fnav-stat-type"
+#define SXE2_DEVARG_ACL_STAT_TYPE "acl-stat-type"
 #define SXE2_DEVARG_NO_SCHED_MODE "no-sched-mode"
 #define SXE2_DEVARG_SCHED_LAYER_MODE "sched-layer-mode"
 #define SXE2_DEVARG_RX_LOW_LATENCY "rx-low-latency"
@@ -981,11 +982,11 @@ sxe2_buffer_split_supported_hdr_ptypes_get(struct rte_eth_dev *dev __rte_unused,
 	return ptypes;
 }
 
-static int32_t sxe2_parse_fnav_stat_type(const char *key, const char *value, void *args)
+static int32_t sxe2_parse_stat_type(const char *key, const char *value, void *args)
 {
 	int32_t ret = -EINVAL;
 	uint8_t *num = (uint8_t *)args;
-	unsigned long fnav_stat_type;
+	unsigned long stat_type;
 	char *endptr = NULL;
 
 	if (value == NULL || args == NULL) {
@@ -993,19 +994,19 @@ static int32_t sxe2_parse_fnav_stat_type(const char *key, const char *value, voi
 		goto l_end;
 	}
 	errno = 0;
-	fnav_stat_type = strtoul(value, &endptr, 10);
+	stat_type = strtoul(value, &endptr, 10);
 	if (errno != 0 || endptr == value || *endptr != '\0') {
 		PMD_LOG_WARN(INIT, "%s: \"%s\" is not a valid int value.",
 			key, value);
 		goto l_end;
 	}
-	if (fnav_stat_type > SXE2_FNAV_STAT_ENA_ALL ||
-		fnav_stat_type == SXE2_FNAV_STAT_ENA_NONE) {
+	if (stat_type > SXE2_FNAV_STAT_ENA_ALL ||
+		stat_type == SXE2_FNAV_STAT_ENA_NONE) {
 		PMD_LOG_ERR(INIT, "%s: \"%s\" out of range [1-3].",
 			key, value);
 		goto l_end;
 	}
-	*num = (uint8_t)fnav_stat_type;
+	*num = (uint8_t)stat_type;
 	ret = 0;
 l_end:
 	return ret;
@@ -1187,13 +1188,20 @@ static int32_t sxe2_args_parse(struct rte_eth_dev *dev, struct sxe2_dev_kvargs_i
 	if (kvargs == NULL)
 		goto l_end;
 	ret = sxe2_kvargs_process(kvargs, SXE2_DEVARG_FNAV_STAT_TYPE,
-				 &sxe2_parse_fnav_stat_type,
+				 &sxe2_parse_stat_type,
 				 &adapter->devargs.fnav_stat_type);
 	if (ret) {
 		PMD_DEV_LOG_ERR(adapter, INIT, "Failed to parse fnav stat type, ret:%d", ret);
 		goto l_end;
 	}
 
+	ret = sxe2_kvargs_process(kvargs, SXE2_DEVARG_ACL_STAT_TYPE,
+				 &sxe2_parse_stat_type, &adapter->devargs.acl_stat_type);
+	if (ret) {
+		PMD_DEV_LOG_ERR(adapter, INIT, "Failed to parse acl stat type, ret:%d", ret);
+		goto l_end;
+	}
+
 	ret = sxe2_kvargs_process(kvargs, SXE2_DEVARG_NO_SCHED_MODE,
 				 &sxe2_parse_bool,
 				 &adapter->devargs.no_sched_mode);
@@ -2364,6 +2372,7 @@ RTE_PMD_REGISTER_PARAM_STRING(net_sxe2,
 	"flow-duplicate-pattern=<0|1|2> "
 	"function-flow-direct=<0|1> "
 	"fnav-stat-type=<1|2|3> "
+	"acl-stat-type=<1|2|3> "
 	"no-sched-mode=<0|1> "
 	"sched-layer-mode=<0-3> "
 	"rx-low-latency=<0|1>");
diff --git a/drivers/net/sxe2/sxe2_ethdev.h b/drivers/net/sxe2/sxe2_ethdev.h
index e818578319..e9f78fe57f 100644
--- a/drivers/net/sxe2/sxe2_ethdev.h
+++ b/drivers/net/sxe2/sxe2_ethdev.h
@@ -135,6 +135,7 @@ struct sxe2_devargs {
 	uint8_t flow_dup_pattern_mode;
 	uint8_t func_flow_direct_en;
 	uint8_t fnav_stat_type;
+	uint8_t acl_stat_type;
 	uint8_t no_sched_mode;
 	uint8_t sched_layer_mode;
 	uint8_t rx_low_latency;
diff --git a/drivers/net/sxe2/sxe2_flow.c b/drivers/net/sxe2/sxe2_flow.c
index cd39385340..52e332cb10 100644
--- a/drivers/net/sxe2/sxe2_flow.c
+++ b/drivers/net/sxe2/sxe2_flow.c
@@ -1204,13 +1204,24 @@ static int32_t sxe2_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *e
 int32_t sxe2_flow_get_filter_cid(struct sxe2_adapter *adapter, struct sxe2_flow *flow)
 {
 	int32_t ret = 0;
-	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list =
-				&adapter->flow_ctxt.hw_res.flow_cid_mgr_list;
+	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list = NULL;
 	uint32_t stat_index;
 	uint32_t user_id;
 	uint32_t driver_id;
 	struct sxe2_flow_cid_mgr *temp = NULL;
 	struct sxe2_flow_cid_mgr *mgr = NULL;
+	uint32_t count_type;
+
+	if (flow->engine_type == SXE2_FLOW_ENGINE_FNAV) {
+		cid_mgr_list = &adapter->flow_ctxt.fnav_hw_res.flow_cid_mgr_list;
+		count_type = adapter->flow_ctxt.fnav_hw_res.count_type;
+	} else if (flow->engine_type == SXE2_FLOW_ENGINE_ACL) {
+		cid_mgr_list = &adapter->flow_ctxt.acl_hw_res.flow_cid_mgr_list;
+		count_type = adapter->flow_ctxt.acl_hw_res.count_type;
+	} else {
+		ret = -ENOTSUP;
+		goto l_end;
+	}
 
 	if (sxe2_test_bit(SXE2_FLOW_ACTION_COUNT, flow->action.act_types)) {
 		user_id = flow->action.count.user_id;
@@ -1233,7 +1244,10 @@ int32_t sxe2_flow_get_filter_cid(struct sxe2_adapter *adapter, struct sxe2_flow
 				goto l_end;
 			}
 
-			ret = sxe2_drv_flow_fnav_get_stat_id(adapter, &stat_index);
+			if (flow->engine_type == SXE2_FLOW_ENGINE_FNAV)
+				ret = sxe2_drv_flow_fnav_get_stat_id(adapter, &stat_index);
+			else if (flow->engine_type == SXE2_FLOW_ENGINE_ACL)
+				ret = sxe2_drv_flow_acl_get_stat_id(adapter, &stat_index);
 			if (ret) {
 				PMD_LOG_ERR(DRV, "Failed to alloc fw count id.");
 				rte_free(mgr);
@@ -1244,7 +1258,7 @@ int32_t sxe2_flow_get_filter_cid(struct sxe2_adapter *adapter, struct sxe2_flow
 			mgr->user_id = user_id;
 			mgr->driver_id = driver_id;
 			mgr->stat_index = stat_index;
-			mgr->count_type = adapter->flow_ctxt.hw_res.count_type;
+			mgr->count_type = count_type;
 		}
 		flow->action.count.stat_index = mgr->stat_index;
 		flow->action.count.stat_ctrl = mgr->count_type;
@@ -1260,13 +1274,26 @@ int32_t sxe2_flow_free_mgr(struct sxe2_adapter *adapter,
 		       struct rte_flow_error *error)
 {
 	int32_t ret = 0;
-	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list =
-				&adapter->flow_ctxt.hw_res.flow_cid_mgr_list;
+	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list = NULL;
 	struct sxe2_flow_cid_mgr *mgr = *mgr_ptr;
 	uint32_t user_id = flow->action.count.user_id;
-	if (user_id == 0) {
-		TAILQ_REMOVE(cid_mgr_list, mgr, next);
-		ret = sxe2_drv_flow_fnav_free_stat(adapter, mgr->stat_index);
+
+	if (user_id == 0 && mgr) {
+		if (flow->engine_type == SXE2_FLOW_ENGINE_ACL) {
+			cid_mgr_list = &adapter->flow_ctxt.acl_hw_res.flow_cid_mgr_list;
+			TAILQ_REMOVE(cid_mgr_list, mgr, next);
+			ret = sxe2_drv_flow_acl_free_stat(adapter, mgr->stat_index);
+		} else if (flow->engine_type == SXE2_FLOW_ENGINE_FNAV) {
+			cid_mgr_list = &adapter->flow_ctxt.fnav_hw_res.flow_cid_mgr_list;
+			TAILQ_REMOVE(cid_mgr_list, mgr, next);
+			ret = sxe2_drv_flow_fnav_free_stat(adapter, mgr->stat_index);
+		} else {
+			PMD_LOG_ERR(DRV,
+				"Failed to free flow count, unknown engine type: %d.",
+				flow->engine_type);
+			ret = -ENOTSUP;
+			return ret;
+		}
 		if (ret) {
 			rte_flow_error_set(error, EIO,
 				RTE_FLOW_ERROR_TYPE_ACTION, NULL,
@@ -1287,13 +1314,19 @@ int32_t sxe2_flow_query_mgr(struct sxe2_adapter *adapter,
 			struct rte_flow_error *error)
 {
 	int32_t ret = 0;
-	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list =
-				&adapter->flow_ctxt.hw_res.flow_cid_mgr_list;
+	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list = NULL;
 	struct sxe2_flow_cid_mgr *temp = NULL;
 	struct sxe2_flow_cid_mgr *mgr = NULL;
 	uint32_t user_id = flow->action.count.user_id;
 	uint32_t driver_id = flow->action.count.driver_id;
 
+	if (flow->engine_type == SXE2_FLOW_ENGINE_ACL)
+		cid_mgr_list = &adapter->flow_ctxt.acl_hw_res.flow_cid_mgr_list;
+	else if (flow->engine_type == SXE2_FLOW_ENGINE_FNAV)
+		cid_mgr_list = &adapter->flow_ctxt.fnav_hw_res.flow_cid_mgr_list;
+	else
+		goto l_end;
+
 	TAILQ_FOREACH(temp, cid_mgr_list, next) {
 		if (temp->user_id == user_id &&
 			temp->driver_id == driver_id) {
@@ -1310,7 +1343,15 @@ int32_t sxe2_flow_query_mgr(struct sxe2_adapter *adapter,
 		ret = -EINVAL;
 		goto l_end;
 	}
-	ret = sxe2_drv_flow_fnav_query_stat(adapter, mgr);
+
+	if (flow->engine_type == SXE2_FLOW_ENGINE_ACL) {
+		ret = sxe2_drv_flow_acl_query_stat(adapter, mgr);
+	} else if (flow->engine_type == SXE2_FLOW_ENGINE_FNAV) {
+		ret = sxe2_drv_flow_fnav_query_stat(adapter, mgr);
+	} else {
+		PMD_LOG_ERR(DRV, "query flow engine neither FNAV nor ACL");
+		ret = -ENOTSUP;
+	}
 	if (ret) {
 		rte_flow_error_set(error, EINVAL,
 			RTE_FLOW_ERROR_TYPE_ITEM, NULL,
@@ -1461,12 +1502,18 @@ int32_t sxe2_flow_init(struct rte_eth_dev *dev)
 	struct sxe2_adapter *adapter = SXE2_DEV_PRIVATE_TO_ADAPTER(dev);
 	int32_t ret = 0;
 	TAILQ_INIT(&adapter->flow_ctxt.rte_flow_list);
-	TAILQ_INIT(&adapter->flow_ctxt.hw_res.flow_cid_mgr_list);
+	TAILQ_INIT(&adapter->flow_ctxt.fnav_hw_res.flow_cid_mgr_list);
+	TAILQ_INIT(&adapter->flow_ctxt.acl_hw_res.flow_cid_mgr_list);
 	if (adapter->devargs.fnav_stat_type)
-		adapter->flow_ctxt.hw_res.count_type =
+		adapter->flow_ctxt.fnav_hw_res.count_type =
 			adapter->devargs.fnav_stat_type;
 	else
-		adapter->flow_ctxt.hw_res.count_type = SXE2_FNAV_STAT_ENA_ALL;
+		adapter->flow_ctxt.fnav_hw_res.count_type = SXE2_FNAV_STAT_ENA_ALL;
+
+	if (adapter->devargs.acl_stat_type)
+		adapter->flow_ctxt.acl_hw_res.count_type = adapter->devargs.acl_stat_type;
+	else
+		adapter->flow_ctxt.acl_hw_res.count_type = SXE2_FNAV_STAT_ENA_ALL;
 
 	adapter->flow_ctxt.fnav_inited = 1;
 	rte_spinlock_init(&adapter->flow_ctxt.flow_list_lock);
@@ -1485,13 +1532,13 @@ int32_t sxe2_flow_uninit(struct rte_eth_dev *dev)
 	struct rte_flow_error error;
 	struct sxe2_flow_cid_mgr *mgr = NULL;
 	struct sxe2_flow_cid_mgr *temp = NULL;
-	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list =
-						&adapter->flow_ctxt.hw_res.flow_cid_mgr_list;
+	struct sxe2_flow_cid_mgr_list_t *cid_mgr_list = NULL;
 
 	ret = sxe2_flow_flush(dev, &error);
 	if (ret)
 		PMD_LOG_ERR(DRV, "Failed to flush flow, ret: %d.", ret);
 
+	cid_mgr_list = &adapter->flow_ctxt.fnav_hw_res.flow_cid_mgr_list;
 	TAILQ_FOREACH_SAFE(mgr, cid_mgr_list, next, temp) {
 		TAILQ_REMOVE(cid_mgr_list, mgr, next);
 		ret = sxe2_drv_flow_fnav_free_stat(adapter, mgr->stat_index);
@@ -1500,5 +1547,14 @@ int32_t sxe2_flow_uninit(struct rte_eth_dev *dev)
 				"Failed to free fnav stat id, ret: %d.", ret);
 		rte_free(mgr);
 	}
+
+	cid_mgr_list = &adapter->flow_ctxt.acl_hw_res.flow_cid_mgr_list;
+	TAILQ_FOREACH_SAFE(mgr, cid_mgr_list, next, temp) {
+		TAILQ_REMOVE(cid_mgr_list, mgr, next);
+		ret = sxe2_drv_flow_acl_free_stat(adapter, mgr->stat_index);
+		if (ret)
+			PMD_LOG_ERR(DRV, "Failed to free acl stat id, ret: %d.", ret);
+		rte_free(mgr);
+	}
 	return ret;
 }
diff --git a/drivers/net/sxe2/sxe2_flow_define.h b/drivers/net/sxe2/sxe2_flow_define.h
index 8a5d871978..d04499f5cb 100644
--- a/drivers/net/sxe2/sxe2_flow_define.h
+++ b/drivers/net/sxe2/sxe2_flow_define.h
@@ -100,7 +100,7 @@ TAILQ_HEAD(rte_flow_list_t, rte_flow);
 
 struct sxe2_flow_cid_mgr {
 	TAILQ_ENTRY(sxe2_flow_cid_mgr) next;
-	uint16_t stat_index;
+	uint32_t stat_index;
 	uint32_t user_id;
 	uint32_t driver_id;
 	uint32_t count_type;
@@ -118,7 +118,8 @@ struct sxe2_flow_count_resource {
 struct sxe2_flow_context {
 	struct rte_flow_list_t rte_flow_list;
 	rte_spinlock_t flow_list_lock;
-	struct sxe2_flow_count_resource hw_res;
+	struct sxe2_flow_count_resource fnav_hw_res;
+	struct sxe2_flow_count_resource acl_hw_res;
 	uint16_t tunnel_port_list[SXE2_FLOW_UDP_TUNNEL_MAX];
 	uint32_t fnav_inited;
 };
diff --git a/drivers/net/sxe2/sxe2_flow_parse_action.c b/drivers/net/sxe2/sxe2_flow_parse_action.c
index a9559e2d7e..03ada4e8a6 100644
--- a/drivers/net/sxe2/sxe2_flow_parse_action.c
+++ b/drivers/net/sxe2/sxe2_flow_parse_action.c
@@ -953,7 +953,8 @@ static int32_t sxe2_flow_check_actions(struct rte_eth_dev *dev __rte_unused, str
 		}
 	}
 
-	if (engine_type == SXE2_FLOW_ENGINE_FNAV) {
+	if (engine_type == SXE2_FLOW_ENGINE_FNAV ||
+		engine_type == SXE2_FLOW_ENGINE_ACL) {
 		if (vsi_num) {
 			flow->action.q_region.q_index = 0;
 			flow->action.q_region.region = 7;
@@ -980,6 +981,7 @@ int32_t sxe2_flow_parse_action(struct rte_eth_dev *dev,
 	uint8_t action_num[SXE2_FLOW_ACTION_MAX] = {0};
 	enum sxe2_flow_engine_type engine_type = flow->engine_type;
 	struct sxe2_adapter *adapter = SXE2_DEV_PRIVATE_TO_ADAPTER(dev);
+	struct sxe2_flow_count_resource *hw_res = NULL;
 
 	sxe2_flow_action_pre(flow);
 
@@ -988,7 +990,8 @@ int32_t sxe2_flow_parse_action(struct rte_eth_dev *dev,
 		case RTE_FLOW_ACTION_TYPE_VOID:
 			break;
 		case RTE_FLOW_ACTION_TYPE_PASSTHRU:
-			if (engine_type == SXE2_FLOW_ENGINE_FNAV) {
+			if (engine_type == SXE2_FLOW_ENGINE_FNAV ||
+				engine_type == SXE2_FLOW_ENGINE_ACL) {
 				sxe2_set_bit(SXE2_FLOW_ACTION_PASSTHRU, flow->action.act_types);
 				action_num[SXE2_FLOW_ACTION_PASSTHRU]++;
 			} else {
@@ -1035,14 +1038,9 @@ int32_t sxe2_flow_parse_action(struct rte_eth_dev *dev,
 			break;
 		case RTE_FLOW_ACTION_TYPE_COUNT:
 			if (engine_type == SXE2_FLOW_ENGINE_FNAV) {
-				sxe2_set_bit(SXE2_FLOW_ACTION_COUNT, flow->action.act_types);
-				act_count = action->conf;
-				flow->action.count.user_id = act_count->id;
-				flow->action.count.driver_id = 0;
-				if (flow->action.count.user_id == 0)
-					flow->action.count.driver_id =
-						++adapter->flow_ctxt.hw_res.global_index;
-				action_num[SXE2_FLOW_ACTION_COUNT]++;
+				hw_res = &adapter->flow_ctxt.fnav_hw_res;
+			} else if (engine_type == SXE2_FLOW_ENGINE_ACL) {
+				hw_res = &adapter->flow_ctxt.acl_hw_res;
 			} else {
 				rte_flow_error_set(error, ENOTSUP,
 					RTE_FLOW_ERROR_TYPE_ACTION, action,
@@ -1052,6 +1050,16 @@ int32_t sxe2_flow_parse_action(struct rte_eth_dev *dev,
 				ret = -EINVAL;
 				goto l_end;
 			}
+			sxe2_set_bit(SXE2_FLOW_ACTION_COUNT, flow->action.act_types);
+			act_count = action->conf;
+			flow->action.count.user_id =
+				(act_count == NULL) ? 0 : act_count->id;
+			flow->action.count.driver_id = 0;
+			if (flow->action.count.user_id == 0) {
+				flow->action.count.driver_id =
+					++hw_res->global_index;
+			}
+			action_num[SXE2_FLOW_ACTION_COUNT]++;
 			break;
 		case RTE_FLOW_ACTION_TYPE_RSS:
 			if (engine_type == SXE2_FLOW_ENGINE_RSS) {
-- 
2.52.0


  parent reply	other threads:[~2026-09-02  2:00 UTC|newest]

Thread overview: 378+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-18  2:15 [PATCH v1 00/13] net/sxe2: fix bugs liujie5
2026-08-18  2:15 ` [PATCH v1 01/13] net/sxe2: add Rx queue buffer split fill support liujie5
2026-08-18  2:15 ` [PATCH v1 02/13] net/sxe2: update switchdev repr VSI ID display format liujie5
2026-08-18  2:15 ` [PATCH v1 03/13] net/sxe2: add ACL engine event statistics support liujie5
2026-08-18  2:15 ` [PATCH v1 04/13] net/sxe2: enhance device cap and res management liujie5
2026-08-18  2:15 ` [PATCH v1 05/13] net/sxe2: improve representor device initialization liujie5
2026-08-18  2:15 ` [PATCH v1 06/13] net/sxe2: refactor flow tunnel port handling liujie5
2026-08-18  2:15 ` [PATCH v1 07/13] net/sxe2: validate IPsec key length against maximum limit liujie5
2026-08-18  2:15 ` [PATCH v1 08/13] net/sxe2: enhance repr event handling and MP code liujie5
2026-08-18  2:15 ` [PATCH v1 09/13] net/sxe2: optimize vectorized Tx/Rx path liujie5
2026-08-18  2:15 ` [PATCH v1 10/13] common/sxe2: allow munmap during kernel reset liujie5
2026-08-18  2:15 ` [PATCH v1 11/13] net/sxe2: clean up duplicate function declarations liujie5
2026-08-18  2:15 ` [PATCH v1 12/13] net/sxe2: clean up structure definitions liujie5
2026-08-18  2:15 ` [PATCH v1 13/13] doc/sxe2: add acl-stat-type parameter documentation liujie5
2026-08-26  8:53   ` [PATCH v3 00/51] net/sxe2: add Stars SXE2 net driver with fixes liujie5
2026-08-26 17:07     ` Stephen Hemminger
2026-08-26  8:53   ` [PATCH v3 01/51] common/sxe2: fix null pointer in class driver remove liujie5
2026-08-26  8:53   ` [PATCH v3 02/51] common/sxe2: allow munmap during kernel reset liujie5
2026-08-26  8:53   ` [PATCH v3 03/51] net/sxe2: fix VF PCI device ID liujie5
2026-08-26  8:54   ` [PATCH v3 04/51] net/sxe2: fix MSIX register width in PF map table liujie5
2026-08-26  8:54   ` [PATCH v3 05/51] net/sxe2: restore pf and port index caps assignment liujie5
2026-08-26  8:54   ` [PATCH v3 06/51] net/sxe2: fix VSI lifecycle management liujie5
2026-08-26  8:54   ` [PATCH v3 07/51] net/sxe2: initialize stats in representor device init liujie5
2026-08-26  8:54   ` [PATCH v3 08/51] net/sxe2: use base device name for representor naming liujie5
2026-08-26  8:54   ` [PATCH v3 09/51] net/sxe2: propagate LSC event to VF representors liujie5
2026-08-26  8:54   ` [PATCH v3 10/51] net/sxe2: validate IPsec key length against maximum limit liujie5
2026-08-26  8:54   ` [PATCH v3 11/51] net/sxe2: rename representor VSI ID fields liujie5
2026-08-26  8:54   ` [PATCH v3 12/51] net/sxe2: clean up duplicate function declarations liujie5
2026-08-26  8:54   ` [PATCH v3 13/51] net/sxe2: fix null VSI dereference in device info liujie5
2026-08-26  8:55   ` [PATCH v3 14/51] net/sxe2: fill MAC and queue counts " liujie5
2026-08-26  8:55   ` [PATCH v3 15/51] net/sxe2: fix QinQ and RSS offload capability report liujie5
2026-08-26  8:55   ` [PATCH v3 16/51] net/sxe2: use regular write for mapped registers liujie5
2026-08-26  8:55   ` [PATCH v3 17/51] net/sxe2: move PCI register read macro to common header liujie5
2026-08-26  8:55   ` [PATCH v3 18/51] net/sxe2: validate PCI map resource type liujie5
2026-08-26  8:55   ` [PATCH v3 19/51] net/sxe2: guard PCI BAR unmap when not initialized liujie5
2026-08-26  8:55   ` [PATCH v3 20/51] net/sxe2: fix null dereference in dev uninit liujie5
2026-08-26  8:55   ` [PATCH v3 21/51] net/sxe2: fix duplicated cleanup in dev close liujie5
2026-08-26  8:55   ` [PATCH v3 22/51] net/sxe2: align dev init and cleanup order liujie5
2026-08-26  8:55   ` [PATCH v3 23/51] net/sxe2: simplify switchdev representor matching liujie5
2026-08-26  8:55   ` [PATCH v3 24/51] net/sxe2: probe all requested PF ports liujie5
2026-08-26  8:56   ` [PATCH v3 25/51] net/sxe2: rename fnav cid manager symbols to flow liujie5
2026-08-26  8:56   ` [PATCH v3 26/51] net/sxe2: move tunnel port helpers into flow module liujie5
2026-08-26  8:56   ` [PATCH v3 27/51] net/sxe2: add ACL engine event statistics support liujie5
2026-08-26  8:56   ` [PATCH v3 28/51] net/sxe2: guard Rx queue event FD free in unregister liujie5
2026-08-26  8:56   ` [PATCH v3 29/51] net/sxe2: refactor primary process MP message handling liujie5
2026-08-26  8:56   ` [PATCH v3 30/51] net/sxe2: refactor Tx queue reset operations liujie5
2026-08-26  8:56   ` [PATCH v3 31/51] net/sxe2: unify vectorized Tx buffer handling liujie5
2026-08-26  8:56   ` [PATCH v3 32/51] net/sxe2: refine vectorized Tx/Rx mode setup liujie5
2026-08-26  8:56   ` [PATCH v3 33/51] net/sxe2: fix RSS action attribute validation liujie5
2026-08-26  8:56   ` [PATCH v3 34/51] net/sxe2: restore PF-only guard in udp tunnel port add liujie5
2026-08-26  8:57   ` [PATCH v3 35/51] net/sxe2: align flow meta proc priority handling with V3 liujie5
2026-08-26  8:57   ` [PATCH v3 36/51] net/sxe2: restore link update call in status query liujie5
2026-08-26  8:57   ` [PATCH v3 37/51] net/sxe2: validate representor ID against VF count liujie5
2026-08-26  8:57   ` [PATCH v3 38/51] net/sxe2: use primary VSI ID for representor VSI liujie5
2026-08-26  8:57   ` [PATCH v3 39/51] net/sxe2: wrap command params fill debug log in macro liujie5
2026-08-26  8:57   ` [PATCH v3 40/51] net/sxe2: restore Rx queue buffer split fill support liujie5
2026-08-26  8:57   ` [PATCH v3 41/51] net/sxe2: skip tunnel config fill on get failure liujie5
2026-08-26  8:57   ` [PATCH v3 42/51] net/sxe2: skip flow id assignment on filter add failure liujie5
2026-08-26  8:57   ` [PATCH v3 43/51] net/sxe2: fix command channel log messages liujie5
2026-08-26  8:57   ` [PATCH v3 44/51] net/sxe2: align command structs with historical kernel layout liujie5
2026-08-26  8:58   ` [PATCH v3 45/51] common/sxe2: fix ioctl channel log and close handling liujie5
2026-08-26  8:58   ` [PATCH v3 46/51] doc/sxe2: remove drv-sw-stats parameter documentation liujie5
2026-08-26  8:58   ` [PATCH v3 47/51] net/sxe2: harden ACL flow count resource handling liujie5
2026-08-26  8:58   ` [PATCH v3 48/51] net/sxe2: fix device init and representor matching issues liujie5
2026-08-26  8:58   ` [PATCH v3 49/51] net/sxe2: use correct loop counter type for representor LSC liujie5
2026-08-26  8:58   ` [PATCH v3 50/51] net/sxe2: restore NULL check in vectorized Tx mbuf release liujie5
2026-08-26  8:58   ` [PATCH v3 51/51] net/sxe2: simplify Rx queue buffer split fill helper liujie5
2026-08-27  2:36     ` [PATCH v4 00/44] net/sxe2: add Stars SXE2 net driver with fixes liujie5
2026-08-27 15:14       ` Stephen Hemminger
2026-08-27  2:36     ` [PATCH v4 01/44] common/sxe2: fix null pointer in class driver remove liujie5
2026-08-27  2:36     ` [PATCH v4 02/44] common/sxe2: allow munmap during kernel reset liujie5
2026-08-27  2:36     ` [PATCH v4 03/44] net/sxe2: fix VF PCI device ID liujie5
2026-08-27  2:36     ` [PATCH v4 04/44] net/sxe2: fix MSIX register width in PF map table liujie5
2026-08-27  2:36     ` [PATCH v4 05/44] net/sxe2: restore pf and port index caps assignment liujie5
2026-08-27  2:36     ` [PATCH v4 06/44] net/sxe2: fix VSI lifecycle management liujie5
2026-08-27  2:37     ` [PATCH v4 07/44] net/sxe2: initialize stats in representor device init liujie5
2026-08-27  2:37     ` [PATCH v4 08/44] net/sxe2: use base device name for representor naming liujie5
2026-08-27  2:37     ` [PATCH v4 09/44] net/sxe2: propagate LSC event to VF representors liujie5
2026-08-27  2:37     ` [PATCH v4 10/44] net/sxe2: validate IPsec key length against maximum limit liujie5
2026-08-27  2:37     ` [PATCH v4 11/44] net/sxe2: rename representor VSI ID fields liujie5
2026-08-27  2:37     ` [PATCH v4 12/44] net/sxe2: clean up duplicate function declarations liujie5
2026-08-27  2:37     ` [PATCH v4 13/44] net/sxe2: fix null VSI dereference in device info liujie5
2026-08-27  2:37     ` [PATCH v4 14/44] net/sxe2: fill MAC and queue counts " liujie5
2026-08-27  2:37     ` [PATCH v4 15/44] net/sxe2: fix QinQ and RSS offload capability report liujie5
2026-08-27  2:37     ` [PATCH v4 16/44] net/sxe2: use regular write for mapped registers liujie5
2026-08-27  2:37     ` [PATCH v4 17/44] net/sxe2: move PCI register read macro to common header liujie5
2026-08-27  2:38     ` [PATCH v4 18/44] net/sxe2: validate PCI map resource type liujie5
2026-08-27  2:38     ` [PATCH v4 19/44] net/sxe2: guard PCI BAR unmap when not initialized liujie5
2026-08-27  2:38     ` [PATCH v4 20/44] net/sxe2: fix null dereference in dev uninit liujie5
2026-08-27  2:38     ` [PATCH v4 21/44] net/sxe2: fix duplicated cleanup in dev close liujie5
2026-08-27  2:38     ` [PATCH v4 22/44] net/sxe2: align dev init and cleanup order liujie5
2026-08-27  2:38     ` [PATCH v4 23/44] net/sxe2: simplify switchdev representor matching liujie5
2026-08-27  2:38     ` [PATCH v4 24/44] net/sxe2: rename fnav cid manager symbols to flow liujie5
2026-08-27  2:38     ` [PATCH v4 25/44] net/sxe2: move tunnel port helpers into flow module liujie5
2026-08-27  2:38     ` [PATCH v4 26/44] net/sxe2: add ACL engine event statistics support liujie5
2026-08-27  2:38     ` [PATCH v4 27/44] net/sxe2: guard Rx queue event FD free in unregister liujie5
2026-08-27  2:39     ` [PATCH v4 28/44] net/sxe2: refactor primary process MP message handling liujie5
2026-08-27  2:39     ` [PATCH v4 29/44] net/sxe2: refactor Tx queue reset operations liujie5
2026-08-27  2:39     ` [PATCH v4 30/44] net/sxe2: unify vectorized Tx buffer handling liujie5
2026-08-27  2:39     ` [PATCH v4 31/44] net/sxe2: refine vectorized Tx/Rx mode setup liujie5
2026-08-27  2:39     ` [PATCH v4 32/44] net/sxe2: fix RSS action attribute validation liujie5
2026-08-27  2:39     ` [PATCH v4 33/44] net/sxe2: restore PF-only guard in udp tunnel port add liujie5
2026-08-27  2:39     ` [PATCH v4 34/44] net/sxe2: restore link update call in status query liujie5
2026-08-27  2:39     ` [PATCH v4 35/44] net/sxe2: validate representor ID against VF count liujie5
2026-08-27  2:39     ` [PATCH v4 36/44] net/sxe2: use primary VSI ID for representor VSI liujie5
2026-08-27  2:39     ` [PATCH v4 37/44] net/sxe2: wrap command params fill debug log in macro liujie5
2026-08-27  2:40     ` [PATCH v4 38/44] net/sxe2: restore Rx queue buffer split fill support liujie5
2026-08-27  2:40     ` [PATCH v4 39/44] net/sxe2: skip tunnel config fill on get failure liujie5
2026-08-27  2:40     ` [PATCH v4 40/44] net/sxe2: skip flow id assignment on filter add failure liujie5
2026-08-27  2:40     ` [PATCH v4 41/44] net/sxe2: fix command channel log messages liujie5
2026-08-27  2:40     ` [PATCH v4 42/44] net/sxe2: align command structs with historical kernel layout liujie5
2026-08-27  2:40     ` [PATCH v4 43/44] common/sxe2: fix ioctl channel log and close handling liujie5
2026-08-27  2:40     ` [PATCH v4 44/44] doc/sxe2: remove drv-sw-stats parameter documentation liujie5
2026-08-28  3:23       ` [PATCH v5 00/45] net/sxe2: add Stars SXE2 net driver with fixes liujie5
2026-08-28  3:23       ` [PATCH v5 01/45] common/sxe2: fix null pointer in class driver remove liujie5
2026-08-28  3:23       ` [PATCH v5 02/45] common/sxe2: allow munmap during kernel reset liujie5
2026-08-28  3:23       ` [PATCH v5 03/45] net/sxe2: fix VF PCI device ID liujie5
2026-08-28  3:23       ` [PATCH v5 04/45] net/sxe2: fix MSIX register width in PF map table liujie5
2026-08-28  3:23       ` [PATCH v5 05/45] net/sxe2: restore pf and port index caps assignment liujie5
2026-08-28  3:23       ` [PATCH v5 06/45] net/sxe2: fix VSI lifecycle management liujie5
2026-08-28  3:23       ` [PATCH v5 07/45] net/sxe2: initialize stats in representor device init liujie5
2026-08-28  3:23       ` [PATCH v5 08/45] net/sxe2: use base device name for representor naming liujie5
2026-08-28  3:23       ` [PATCH v5 09/45] net/sxe2: propagate LSC event to VF representors liujie5
2026-08-28  3:24       ` [PATCH v5 10/45] net/sxe2: clear security context pointer on uninit liujie5
2026-08-28  3:24       ` [PATCH v5 11/45] net/sxe2: rename representor VSI ID fields liujie5
2026-08-28  3:24       ` [PATCH v5 12/45] net/sxe2: clean up duplicate function declarations liujie5
2026-08-28  3:24       ` [PATCH v5 13/45] net/sxe2: fix null VSI dereference in device info liujie5
2026-08-28  3:24       ` [PATCH v5 14/45] net/sxe2: fill MAC and queue counts " liujie5
2026-08-28  3:24       ` [PATCH v5 15/45] net/sxe2: fix QinQ and RSS offload capability report liujie5
2026-08-28  3:24       ` [PATCH v5 16/45] net/sxe2: use regular write for mapped registers liujie5
2026-08-28  3:24       ` [PATCH v5 17/45] net/sxe2: move PCI register read macro to common header liujie5
2026-08-28  3:24       ` [PATCH v5 18/45] net/sxe2: validate PCI map resource type liujie5
2026-08-28  3:24       ` [PATCH v5 19/45] net/sxe2: guard PCI BAR unmap when not initialized liujie5
2026-08-28  3:25       ` [PATCH v5 20/45] net/sxe2: fix null dereference in dev uninit liujie5
2026-08-28  3:25       ` [PATCH v5 21/45] net/sxe2: fix duplicated cleanup in dev close liujie5
2026-08-28  3:25       ` [PATCH v5 22/45] net/sxe2: align dev init and cleanup order liujie5
2026-08-28  3:25       ` [PATCH v5 23/45] net/sxe2: simplify switchdev representor matching liujie5
2026-08-28  3:25       ` [PATCH v5 24/45] net/sxe2: rename fnav cid manager symbols to flow liujie5
2026-08-28  3:25       ` [PATCH v5 25/45] net/sxe2: move tunnel port helpers into flow module liujie5
2026-08-28  3:25       ` [PATCH v5 26/45] net/sxe2: add ACL engine event statistics support liujie5
2026-08-28  3:25       ` [PATCH v5 27/45] net/sxe2: guard Rx queue event FD free in unregister liujie5
2026-08-28  3:25       ` [PATCH v5 28/45] net/sxe2: refactor primary process MP message handling liujie5
2026-08-28  3:25       ` [PATCH v5 29/45] net/sxe2: refactor Tx queue reset operations liujie5
2026-08-28  3:26       ` [PATCH v5 30/45] net/sxe2: unify vectorized Tx buffer handling liujie5
2026-08-28  3:26       ` [PATCH v5 31/45] net/sxe2: refine vectorized Tx/Rx mode setup liujie5
2026-08-28  3:26       ` [PATCH v5 32/45] net/sxe2: fix RSS action attribute validation liujie5
2026-08-28  3:26       ` [PATCH v5 33/45] net/sxe2: restore PF-only guard in udp tunnel port add liujie5
2026-08-28  3:26       ` [PATCH v5 34/45] net/sxe2: restore link update call in status query liujie5
2026-08-28  3:26       ` [PATCH v5 35/45] net/sxe2: validate representor ID against VF count liujie5
2026-08-28  3:26       ` [PATCH v5 36/45] net/sxe2: use primary VSI ID for representor VSI liujie5
2026-08-28  3:26       ` [PATCH v5 37/45] net/sxe2: wrap command params fill debug log in macro liujie5
2026-08-28  3:26       ` [PATCH v5 38/45] net/sxe2: restore Rx queue buffer split fill support liujie5
2026-08-28  3:26       ` [PATCH v5 39/45] net/sxe2: skip tunnel config fill on get failure liujie5
2026-08-28  3:27       ` [PATCH v5 40/45] net/sxe2: skip flow id assignment on filter add failure liujie5
2026-08-28  3:27       ` [PATCH v5 41/45] net/sxe2: fix command channel log messages liujie5
2026-08-28  3:27       ` [PATCH v5 42/45] net/sxe2: align command structs with historical kernel layout liujie5
2026-08-28  3:27       ` [PATCH v5 43/45] common/sxe2: fix ioctl channel log and close handling liujie5
2026-08-28  3:27       ` [PATCH v5 44/45] doc/sxe2: remove drv-sw-stats parameter documentation liujie5
2026-08-28  3:27       ` [PATCH v5 45/45] net/sxe2: remove ineffective queue counts in representor info liujie5
2026-08-28  7:36         ` [PATCH v6 00/45] net/sxe2: update SXE2 poll mode driver liujie5
2026-08-28 16:49           ` Stephen Hemminger
2026-08-28  7:36         ` [PATCH v6 01/45] common/sxe2: fix null pointer in class driver remove liujie5
2026-08-28  7:36         ` [PATCH v6 02/45] common/sxe2: allow munmap during kernel reset liujie5
2026-08-28  7:36         ` [PATCH v6 03/45] net/sxe2: fix VF PCI device ID liujie5
2026-08-28  7:37         ` [PATCH v6 04/45] net/sxe2: fix MSIX register width in PF map table liujie5
2026-08-28  7:37         ` [PATCH v6 05/45] net/sxe2: restore pf and port index caps assignment liujie5
2026-08-28  7:37         ` [PATCH v6 06/45] net/sxe2: fix VSI lifecycle management liujie5
2026-08-28  7:37         ` [PATCH v6 07/45] net/sxe2: initialize stats in representor device init liujie5
2026-08-28  7:37         ` [PATCH v6 08/45] net/sxe2: use base device name for representor naming liujie5
2026-08-28  7:37         ` [PATCH v6 09/45] net/sxe2: propagate LSC event to VF representors liujie5
2026-08-28  7:37         ` [PATCH v6 10/45] net/sxe2: clear security context pointer on uninit liujie5
2026-08-28  7:37         ` [PATCH v6 11/45] net/sxe2: rename representor VSI ID fields liujie5
2026-08-28  7:37         ` [PATCH v6 12/45] net/sxe2: clean up duplicate function declarations liujie5
2026-08-28  7:37         ` [PATCH v6 13/45] net/sxe2: fix null VSI dereference in device info liujie5
2026-08-28  7:37         ` [PATCH v6 14/45] net/sxe2: fill MAC and queue counts " liujie5
2026-08-28  7:38         ` [PATCH v6 15/45] net/sxe2: fix QinQ and RSS offload capability report liujie5
2026-08-28  7:38         ` [PATCH v6 16/45] net/sxe2: use regular write for mapped registers liujie5
2026-08-28  7:38         ` [PATCH v6 17/45] net/sxe2: move PCI register read macro to common header liujie5
2026-08-28  7:38         ` [PATCH v6 18/45] net/sxe2: validate PCI map resource type liujie5
2026-08-28  7:38         ` [PATCH v6 19/45] net/sxe2: guard PCI BAR unmap when not initialized liujie5
2026-08-28  7:38         ` [PATCH v6 20/45] net/sxe2: fix null dereference in dev uninit liujie5
2026-08-28  7:38         ` [PATCH v6 21/45] net/sxe2: fix duplicated cleanup in dev close liujie5
2026-08-28  7:38         ` [PATCH v6 22/45] net/sxe2: align dev init and cleanup order liujie5
2026-08-28  7:38         ` [PATCH v6 23/45] net/sxe2: simplify switchdev representor matching liujie5
2026-08-28  7:38         ` [PATCH v6 24/45] net/sxe2: rename fnav cid manager symbols to flow liujie5
2026-08-28  7:39         ` [PATCH v6 25/45] net/sxe2: move tunnel port helpers into flow module liujie5
2026-08-28  7:39         ` [PATCH v6 26/45] net/sxe2: add ACL engine event statistics support liujie5
2026-08-28  7:39         ` [PATCH v6 27/45] net/sxe2: guard Rx queue event FD free in unregister liujie5
2026-08-28  7:39         ` [PATCH v6 28/45] net/sxe2: refactor primary process MP message handling liujie5
2026-08-28  7:39         ` [PATCH v6 29/45] net/sxe2: refactor Tx queue reset operations liujie5
2026-08-28  7:39         ` [PATCH v6 30/45] net/sxe2: unify vectorized Tx buffer handling liujie5
2026-08-28  7:39         ` [PATCH v6 31/45] net/sxe2: refine vectorized Tx/Rx mode setup liujie5
2026-08-28  7:39         ` [PATCH v6 32/45] net/sxe2: fix RSS action attribute validation liujie5
2026-08-28  7:39         ` [PATCH v6 33/45] net/sxe2: restore PF-only guard in udp tunnel port add liujie5
2026-08-28  7:39         ` [PATCH v6 34/45] net/sxe2: restore link update call in status query liujie5
2026-08-28  7:39         ` [PATCH v6 35/45] net/sxe2: validate representor ID against VF count liujie5
2026-08-28  7:40         ` [PATCH v6 36/45] net/sxe2: use primary VSI ID for representor VSI liujie5
2026-08-28  7:40         ` [PATCH v6 37/45] net/sxe2: wrap command params fill debug log in macro liujie5
2026-08-28  7:40         ` [PATCH v6 38/45] net/sxe2: restore Rx queue buffer split fill support liujie5
2026-08-28  7:40         ` [PATCH v6 39/45] net/sxe2: skip tunnel config fill on get failure liujie5
2026-08-28  7:40         ` [PATCH v6 40/45] net/sxe2: skip flow id assignment on filter add failure liujie5
2026-08-28  7:40         ` [PATCH v6 41/45] net/sxe2: fix command channel log messages liujie5
2026-08-28  7:40         ` [PATCH v6 42/45] net/sxe2: align command structs with historical kernel layout liujie5
2026-08-28  7:40         ` [PATCH v6 43/45] common/sxe2: fix ioctl channel log and close handling liujie5
2026-08-28  7:40         ` [PATCH v6 44/45] doc/sxe2: remove drv-sw-stats parameter documentation liujie5
2026-08-28  7:40         ` [PATCH v6 45/45] net/sxe2: remove ineffective queue counts in representor info liujie5
2026-08-31  2:34           ` [PATCH v7 00/47] net/sxe2: re-align with reference and fix review findings Jie Liu
2026-08-31  2:34             ` [PATCH v7 01/47] common/sxe2: fix null pointer in class driver remove Jie Liu
2026-08-31  2:34             ` [PATCH v7 02/47] common/sxe2: allow munmap during kernel reset Jie Liu
2026-08-31  2:34             ` [PATCH v7 03/47] net/sxe2: fix VF PCI device ID Jie Liu
2026-08-31  2:34             ` [PATCH v7 04/47] net/sxe2: fix MSIX register width in PF map table Jie Liu
2026-08-31  2:34             ` [PATCH v7 05/47] net/sxe2: restore PF and port index caps assignment Jie Liu
2026-08-31  2:34             ` [PATCH v7 06/47] net/sxe2: fix VSI lifecycle management Jie Liu
2026-08-31  2:34             ` [PATCH v7 07/47] net/sxe2: initialize stats in representor device init Jie Liu
2026-08-31  2:34             ` [PATCH v7 08/47] net/sxe2: use base device name for representor naming Jie Liu
2026-08-31  2:34             ` [PATCH v7 09/47] net/sxe2: propagate LSC event to VF representors Jie Liu
2026-08-31  2:34             ` [PATCH v7 10/47] net/sxe2: clear security context pointer on uninit Jie Liu
2026-08-31  2:34             ` [PATCH v7 11/47] net/sxe2: rename representor VSI ID fields Jie Liu
2026-08-31  2:34             ` [PATCH v7 12/47] net/sxe2: clean up duplicate function declarations Jie Liu
2026-08-31  2:34             ` [PATCH v7 13/47] net/sxe2: fix null VSI dereference in device info Jie Liu
2026-08-31  2:34             ` [PATCH v7 14/47] net/sxe2: fill MAC addresses " Jie Liu
2026-08-31  2:34             ` [PATCH v7 15/47] net/sxe2: fix QinQ and RSS offload capability report Jie Liu
2026-08-31  2:34             ` [PATCH v7 16/47] net/sxe2: use regular write for mapped registers Jie Liu
2026-08-31  2:34             ` [PATCH v7 17/47] net/sxe2: move PCI register read macro to common header Jie Liu
2026-08-31  2:34             ` [PATCH v7 18/47] net/sxe2: validate PCI map resource type Jie Liu
2026-08-31  2:34             ` [PATCH v7 19/47] net/sxe2: guard PCI BAR unmap when not initialized Jie Liu
2026-08-31  2:34             ` [PATCH v7 20/47] net/sxe2: fix null dereference in dev uninit Jie Liu
2026-08-31  2:41           ` [PATCH v7 00/47] net/sxe2: re-align with reference and fix review findings liujie5
2026-08-31  7:46             ` David Marchand
2026-08-31 16:18             ` Stephen Hemminger
2026-08-31  2:41           ` [PATCH v7 01/47] common/sxe2: fix null pointer in class driver remove liujie5
2026-08-31  2:41           ` [PATCH v7 02/47] common/sxe2: allow munmap during kernel reset liujie5
2026-08-31  2:41           ` [PATCH v7 03/47] net/sxe2: fix VF PCI device ID liujie5
2026-08-31  2:41           ` [PATCH v7 04/47] net/sxe2: fix MSIX register width in PF map table liujie5
2026-08-31  2:41           ` [PATCH v7 05/47] net/sxe2: restore PF and port index caps assignment liujie5
2026-08-31  2:41           ` [PATCH v7 06/47] net/sxe2: fix VSI lifecycle management liujie5
2026-08-31  2:41           ` [PATCH v7 07/47] net/sxe2: initialize stats in representor device init liujie5
2026-08-31  2:41           ` [PATCH v7 08/47] net/sxe2: use base device name for representor naming liujie5
2026-08-31  2:41           ` [PATCH v7 09/47] net/sxe2: propagate LSC event to VF representors liujie5
2026-08-31  2:42           ` [PATCH v7 10/47] net/sxe2: clear security context pointer on uninit liujie5
2026-08-31  2:42           ` [PATCH v7 11/47] net/sxe2: rename representor VSI ID fields liujie5
2026-08-31  2:42           ` [PATCH v7 12/47] net/sxe2: clean up duplicate function declarations liujie5
2026-08-31  2:42           ` [PATCH v7 13/47] net/sxe2: fix null VSI dereference in device info liujie5
2026-08-31  2:42           ` [PATCH v7 14/47] net/sxe2: fill MAC addresses " liujie5
2026-08-31  2:42           ` [PATCH v7 15/47] net/sxe2: fix QinQ and RSS offload capability report liujie5
2026-08-31  2:42           ` [PATCH v7 16/47] net/sxe2: use regular write for mapped registers liujie5
2026-08-31  2:42           ` [PATCH v7 17/47] net/sxe2: move PCI register read macro to common header liujie5
2026-08-31  2:42           ` [PATCH v7 18/47] net/sxe2: validate PCI map resource type liujie5
2026-08-31  2:42           ` [PATCH v7 19/47] net/sxe2: guard PCI BAR unmap when not initialized liujie5
2026-08-31  2:42           ` [PATCH v7 20/47] net/sxe2: fix null dereference in dev uninit liujie5
2026-08-31  2:43           ` [PATCH v7 21/47] net/sxe2: fix duplicated cleanup in dev close liujie5
2026-08-31  2:43           ` [PATCH v7 22/47] net/sxe2: align dev init and cleanup order liujie5
2026-08-31  2:43           ` [PATCH v7 23/47] net/sxe2: simplify switchdev representor matching liujie5
2026-08-31  2:43           ` [PATCH v7 24/47] net/sxe2: rename fnav cid manager symbols to flow liujie5
2026-08-31  2:43           ` [PATCH v7 25/47] net/sxe2: move tunnel port helpers into flow module liujie5
2026-08-31  2:43           ` [PATCH v7 26/47] net/sxe2: add ACL engine event statistics support liujie5
2026-08-31  2:43           ` [PATCH v7 27/47] net/sxe2: refactor primary process MP message handling liujie5
2026-08-31  2:43           ` [PATCH v7 28/47] net/sxe2: refactor Tx queue reset operations liujie5
2026-08-31  2:43           ` [PATCH v7 29/47] net/sxe2: unify vectorized Tx buffer handling liujie5
2026-08-31  2:43           ` [PATCH v7 30/47] net/sxe2: optimize NEON Tx descriptor fill liujie5
2026-08-31  2:44           ` [PATCH v7 31/47] net/sxe2: fix NEON Rx ptype mapping and memory ordering liujie5
2026-08-31  2:44           ` [PATCH v7 32/47] net/sxe2: refine vectorized Tx/Rx mode setup liujie5
2026-08-31  2:44           ` [PATCH v7 33/47] net/sxe2: fix RSS action attribute validation liujie5
2026-08-31  2:44           ` [PATCH v7 34/47] net/sxe2: restore PF-only guard in UDP tunnel port add liujie5
2026-08-31  2:44           ` [PATCH v7 35/47] net/sxe2: restore link update call in status query liujie5
2026-08-31  2:44           ` [PATCH v7 36/47] net/sxe2: validate representor ID against VF count liujie5
2026-08-31  2:44           ` [PATCH v7 37/47] net/sxe2: use primary VSI ID for representor VSI liujie5
2026-08-31  2:44           ` [PATCH v7 38/47] net/sxe2: wrap command params fill debug log in macro liujie5
2026-08-31  2:44           ` [PATCH v7 39/47] net/sxe2: restore Rx queue buffer split fill support liujie5
2026-08-31  2:44           ` [PATCH v7 40/47] net/sxe2: skip tunnel config fill on get failure liujie5
2026-08-31  2:45           ` [PATCH v7 41/47] net/sxe2: skip flow ID assignment on filter add failure liujie5
2026-08-31  2:45           ` [PATCH v7 42/47] net/sxe2: correct command channel log messages liujie5
2026-08-31  2:45           ` [PATCH v7 43/47] net/sxe2: align command structs with kernel layout liujie5
2026-08-31  2:45           ` [PATCH v7 44/47] common/sxe2: fix ioctl channel log and close handling liujie5
2026-08-31  2:45           ` [PATCH v7 45/47] doc/sxe2: remove drv-SW-stats parameter documentation liujie5
2026-08-31  2:45           ` [PATCH v7 46/47] net/sxe2: remove ineffective representor queue counts liujie5
2026-08-31  2:45           ` [PATCH v7 47/47] net/sxe2: fix VEC mode selection in mode set functions liujie5
2026-09-01  3:05             ` [PATCH v8 00/49] net/sxe2: re-align with reference and fix review findings liujie5
2026-09-01 15:23               ` Stephen Hemminger
2026-09-01  3:05             ` [PATCH v8 01/49] common/sxe2: fix null pointer in class driver remove liujie5
2026-09-01  3:05             ` [PATCH v8 02/49] common/sxe2: allow munmap during kernel reset liujie5
2026-09-01  3:05             ` [PATCH v8 03/49] net/sxe2: fix VF PCI device ID liujie5
2026-09-01  3:05             ` [PATCH v8 04/49] net/sxe2: fix MSIX register width in PF map table liujie5
2026-09-01  3:05             ` [PATCH v8 05/49] net/sxe2: restore PF and port index caps assignment liujie5
2026-09-01  3:05             ` [PATCH v8 06/49] net/sxe2: fix VSI lifecycle management liujie5
2026-09-01  3:05             ` [PATCH v8 07/49] net/sxe2: initialize stats in representor device init liujie5
2026-09-01  3:06             ` [PATCH v8 08/49] net/sxe2: use base device name for representor naming liujie5
2026-09-01  3:06             ` [PATCH v8 09/49] net/sxe2: propagate LSC event to VF representors liujie5
2026-09-01  3:06             ` [PATCH v8 10/49] net/sxe2: clear security context pointer on uninit liujie5
2026-09-01  3:06             ` [PATCH v8 11/49] net/sxe2: rename representor VSI ID fields liujie5
2026-09-01  3:06             ` [PATCH v8 12/49] net/sxe2: clean up duplicate function declarations liujie5
2026-09-01  3:06             ` [PATCH v8 13/49] net/sxe2: fix null VSI dereference in device info liujie5
2026-09-01  3:06             ` [PATCH v8 14/49] net/sxe2: fill MAC addresses " liujie5
2026-09-01  3:06             ` [PATCH v8 15/49] net/sxe2: fix QinQ and RSS offload capability report liujie5
2026-09-01  3:06             ` [PATCH v8 16/49] net/sxe2: use regular write for mapped registers liujie5
2026-09-01  3:06             ` [PATCH v8 17/49] net/sxe2: move PCI register read macro to common header liujie5
2026-09-01  3:07             ` [PATCH v8 18/49] net/sxe2: validate PCI map resource type liujie5
2026-09-01  3:07             ` [PATCH v8 19/49] net/sxe2: guard PCI BAR unmap when not initialized liujie5
2026-09-01  3:07             ` [PATCH v8 20/49] net/sxe2: fix null dereference in dev uninit liujie5
2026-09-01  3:07             ` [PATCH v8 21/49] net/sxe2: fix duplicated cleanup in dev close liujie5
2026-09-01  3:07             ` [PATCH v8 22/49] net/sxe2: align dev init and cleanup order liujie5
2026-09-01  3:07             ` [PATCH v8 23/49] net/sxe2: simplify switchdev representor matching liujie5
2026-09-01  3:07             ` [PATCH v8 24/49] net/sxe2: rename fnav cid manager symbols to flow liujie5
2026-09-01  3:07             ` [PATCH v8 25/49] net/sxe2: move tunnel port helpers into flow module liujie5
2026-09-01  3:07             ` [PATCH v8 26/49] net/sxe2: add ACL engine event statistics support liujie5
2026-09-01  3:07             ` [PATCH v8 27/49] net/sxe2: enable FDIR on all Rx queues liujie5
2026-09-01  3:08             ` [PATCH v8 28/49] net/sxe2: refactor primary process MP message handling liujie5
2026-09-01  3:08             ` [PATCH v8 29/49] net/sxe2: refactor Tx queue reset operations liujie5
2026-09-01  3:08             ` [PATCH v8 30/49] net/sxe2: unify vectorized Tx buffer handling liujie5
2026-09-01  3:08             ` [PATCH v8 31/49] net/sxe2: optimize NEON Tx descriptor fill liujie5
2026-09-01  3:08             ` [PATCH v8 32/49] net/sxe2: fix NEON Rx ptype mapping and memory ordering liujie5
2026-09-01  3:08             ` [PATCH v8 33/49] net/sxe2: refine vectorized Tx/Rx mode setup liujie5
2026-09-01  3:08             ` [PATCH v8 34/49] net/sxe2: fix RSS action attribute validation liujie5
2026-09-01  3:08             ` [PATCH v8 35/49] net/sxe2: restore PF-only guard in UDP tunnel port add liujie5
2026-09-01  3:08             ` [PATCH v8 36/49] net/sxe2: refresh link state on link change events liujie5
2026-09-01  3:08             ` [PATCH v8 37/49] net/sxe2: validate representor ID against VF count liujie5
2026-09-01  3:09             ` [PATCH v8 38/49] net/sxe2: use primary VSI ID for representor VSI liujie5
2026-09-01  3:09             ` [PATCH v8 39/49] net/sxe2: wrap command params fill debug log in macro liujie5
2026-09-01  3:09             ` [PATCH v8 40/49] net/sxe2: restore Rx queue buffer split fill support liujie5
2026-09-01  3:09             ` [PATCH v8 41/49] net/sxe2: skip tunnel config fill on get failure liujie5
2026-09-01  3:09             ` [PATCH v8 42/49] net/sxe2: skip flow ID assignment on filter add failure liujie5
2026-09-01  3:09             ` [PATCH v8 43/49] net/sxe2: correct command channel log messages liujie5
2026-09-01  3:09             ` [PATCH v8 44/49] net/sxe2: align command structs with kernel layout liujie5
2026-09-01  3:09             ` [PATCH v8 45/49] common/sxe2: fix ioctl channel log and close handling liujie5
2026-09-01  3:09             ` [PATCH v8 46/49] doc/sxe2: remove drv-SW-stats parameter documentation liujie5
2026-09-01  3:09             ` [PATCH v8 47/49] net/sxe2: remove ineffective representor queue counts liujie5
2026-09-01  3:10             ` [PATCH v8 48/49] net/sxe2: fix VEC mode selection in mode set functions liujie5
2026-09-01  3:10             ` [PATCH v8 49/49] net/sxe2: fix devargs parse error check for representors liujie5
2026-09-02  1:56               ` [PATCH v9 00/48] net/sxe2: re-align with reference and fix review findings liujie5
2026-09-02  1:57               ` [PATCH v9 01/48] common/sxe2: fix null pointer in class driver remove liujie5
2026-09-02  1:57               ` [PATCH v9 02/48] common/sxe2: allow munmap during kernel reset liujie5
2026-09-02  1:57               ` [PATCH v9 03/48] net/sxe2: fix VF PCI device ID liujie5
2026-09-02  1:57               ` [PATCH v9 04/48] net/sxe2: fix MSIX register width in PF map table liujie5
2026-09-02  1:57               ` [PATCH v9 05/48] net/sxe2: restore PF and port index caps assignment liujie5
2026-09-02  1:57               ` [PATCH v9 06/48] net/sxe2: fix VSI lifecycle management liujie5
2026-09-02  1:57               ` [PATCH v9 07/48] net/sxe2: initialize stats in representor device init liujie5
2026-09-02  1:57               ` [PATCH v9 08/48] net/sxe2: use base device name for representor naming liujie5
2026-09-02  1:57               ` [PATCH v9 09/48] net/sxe2: propagate LSC event to VF representors liujie5
2026-09-02  1:57               ` [PATCH v9 10/48] net/sxe2: clear security context pointer on uninit liujie5
2026-09-02  1:58               ` [PATCH v9 11/48] net/sxe2: rename representor VSI ID fields liujie5
2026-09-02  1:58               ` [PATCH v9 12/48] net/sxe2: clean up duplicate function declarations liujie5
2026-09-02  1:58               ` [PATCH v9 13/48] net/sxe2: fix null VSI dereference in device info liujie5
2026-09-02  1:58               ` [PATCH v9 14/48] net/sxe2: fill MAC addresses " liujie5
2026-09-02  1:58               ` [PATCH v9 15/48] net/sxe2: fix QinQ and RSS offload capability report liujie5
2026-09-02  1:58               ` [PATCH v9 16/48] net/sxe2: use regular write for mapped registers liujie5
2026-09-02  1:58               ` [PATCH v9 17/48] net/sxe2: move PCI register read macro to common header liujie5
2026-09-02  1:59               ` [PATCH v9 18/48] net/sxe2: validate PCI map resource type liujie5
2026-09-02  1:59               ` [PATCH v9 19/48] net/sxe2: guard PCI BAR unmap when not initialized liujie5
2026-09-02  1:59               ` [PATCH v9 20/48] net/sxe2: fix duplicated cleanup in dev close liujie5
2026-09-02  1:59               ` [PATCH v9 21/48] net/sxe2: align dev init and cleanup order liujie5
2026-09-02  2:00               ` [PATCH v9 22/48] net/sxe2: simplify switchdev representor matching liujie5
2026-09-02  2:00               ` [PATCH v9 23/48] net/sxe2: rename fnav cid manager symbols to flow liujie5
2026-09-02  2:00               ` [PATCH v9 24/48] net/sxe2: move tunnel port helpers into flow module liujie5
2026-09-02  2:00               ` liujie5 [this message]
2026-09-02  2:00               ` [PATCH v9 26/48] net/sxe2: enable FDIR on all Rx queues liujie5
2026-09-02  2:01               ` [PATCH v9 27/48] net/sxe2: refactor primary process MP message handling liujie5
2026-09-02  2:01               ` [PATCH v9 28/48] net/sxe2: refactor Tx queue reset operations liujie5
2026-09-02  2:02               ` [PATCH v9 29/48] net/sxe2: unify vectorized Tx buffer handling liujie5
2026-09-02  2:02               ` [PATCH v9 30/48] net/sxe2: optimize NEON Tx descriptor fill liujie5
2026-09-02  2:02               ` [PATCH v9 31/48] net/sxe2: fix NEON Rx ptype mapping and memory ordering liujie5
2026-09-02  2:02               ` [PATCH v9 32/48] net/sxe2: refine vectorized Tx/Rx mode setup liujie5
2026-09-02  2:03               ` [PATCH v9 33/48] net/sxe2: fix RSS action attribute validation liujie5
2026-09-02  2:03               ` [PATCH v9 34/48] net/sxe2: restore PF-only guard in UDP tunnel port add liujie5
2026-09-02  2:04               ` [PATCH v9 35/48] net/sxe2: refresh link state on link change events liujie5
2026-09-02  2:05               ` [PATCH v9 37/48] net/sxe2: use primary VSI ID for representor VSI liujie5
2026-09-02  2:05               ` [PATCH v9 38/48] net/sxe2: wrap command params fill debug log in macro liujie5
2026-09-02  2:05               ` [PATCH v9 39/48] net/sxe2: restore Rx queue buffer split fill support liujie5
2026-09-02  2:05               ` [PATCH v9 40/48] net/sxe2: skip tunnel config fill on get failure liujie5
2026-09-02  2:05               ` [PATCH v9 41/48] net/sxe2: skip flow ID assignment on filter add failure liujie5
2026-09-02  2:06               ` [PATCH v9 42/48] net/sxe2: correct command channel log messages liujie5
2026-09-02  2:06               ` [PATCH v9 43/48] net/sxe2: align command structs with kernel layout liujie5
2026-09-02  2:06               ` [PATCH v9 44/48] common/sxe2: fix ioctl channel log and close handling liujie5
2026-09-02  2:06               ` [PATCH v9 45/48] doc/sxe2: remove drv-SW-stats parameter documentation liujie5
2026-09-02  2:06               ` [PATCH v9 46/48] net/sxe2: remove ineffective representor queue counts liujie5
2026-09-02  2:06               ` [PATCH v9 47/48] net/sxe2: fix VEC mode selection in mode set functions liujie5
2026-09-02  2:07               ` [PATCH v9 48/48] net/sxe2: fix devargs parse error check for representors liujie5
2026-09-02  2:16               ` [PATCH v9 36/48] net/sxe2: validate representor ID against VF count liujie5
2026-08-18 14:22 ` [PATCH v1 00/13] net/sxe2: fix bugs Stephen Hemminger

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=20260902020046.76752-1-liujie5@linkdatatechnology.com \
    --to=liujie5@linkdatatechnology.com \
    --cc=dev@dpdk.org \
    --cc=stephen@networkplumber.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.