From: liujie5@linkdatatechnology.com
To: stephen@networkplumber.org
Cc: dev@dpdk.org
Subject: [PATCH v4 25/44] net/sxe2: move tunnel port helpers into flow module
Date: Thu, 27 Aug 2026 10:38:45 +0800 [thread overview]
Message-ID: <20260827023845.1431230-1-liujie5@linkdatatechnology.com> (raw)
In-Reply-To: <20260826085836.993490-1-liujie5@linkdatatechnology.com>
From: Jie Liu <liujie5@linkdatatechnology.com>
Move sxe2_flow_parse_pattern_ipip, sxe2_flow_add_udp_tunnel_port and
sxe2_flow_add_tunnel_port from sxe2_flow_parse_pattern.c into
sxe2_flow.c as static helpers, and drop the public declaration of
sxe2_flow_add_tunnel_port from the header, keeping the tunnel port
handling internal to the flow module.
Cc: stephen@networkplumber.org
Signed-off-by: Jie Liu <liujie5@linkdatatechnology.com>
---
drivers/net/sxe2/sxe2_flow.c | 113 +++++++++++++++++++++
drivers/net/sxe2/sxe2_flow_parse_pattern.c | 113 ---------------------
drivers/net/sxe2/sxe2_flow_parse_pattern.h | 6 --
3 files changed, 113 insertions(+), 119 deletions(-)
diff --git a/drivers/net/sxe2/sxe2_flow.c b/drivers/net/sxe2/sxe2_flow.c
index a33b8606df..cd39385340 100644
--- a/drivers/net/sxe2/sxe2_flow.c
+++ b/drivers/net/sxe2/sxe2_flow.c
@@ -550,6 +550,119 @@ int32_t sxe2_flow_init_udp_tunnel_port(struct rte_eth_dev *dev)
return ret;
}
+static int32_t sxe2_flow_add_udp_tunnel_port(struct sxe2_adapter *adapter,
+ enum sxe2_flow_udp_tunnel_protocol proto,
+ struct sxe2_flow *flow,
+ BITMAP_TYPE *flow_type)
+{
+ int32_t ret = 0;
+ uint16_t tun_port;
+
+ tun_port = adapter->flow_ctxt.tunnel_port_list[proto];
+ if (tun_port == 0xffff || tun_port == 0) {
+ ret = -EINVAL;
+ PMD_LOG_ERR(DRV, "UDP tunnel port not initialized, proto: %d", proto);
+ goto l_end;
+ }
+ if (!sxe2_test_bit(SXE2_EXPANSION_OUTER_UDP, flow_type)) {
+ ret = -EINVAL;
+ PMD_LOG_ERR(DRV, "UDP must be over tunnel");
+ goto l_end;
+ }
+ sxe2_set_bit(SXE2_FLOW_FLD_ID_UDP_DST_PORT, flow->pattern_outer.map_spec);
+ flow->pattern_outer.item_spec.udp.dest = rte_cpu_to_be_16(tun_port);
+l_end:
+ return ret;
+}
+
+static int32_t sxe2_flow_parse_pattern_ipip(struct sxe2_flow *flow, BITMAP_TYPE *flow_type)
+{
+ sxe2_set_bit(SXE2_EXPANSION_IPIP, flow_type);
+ if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV4, flow_type)) {
+ sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV4_PROT, flow->pattern_outer.map_spec);
+ if (sxe2_test_bit(SXE2_EXPANSION_IPV4, flow_type))
+ flow->pattern_outer.item_spec.ipv4.protocol = SXE2_FLOW_IP_PROTOCOL_IPV4;
+ if (sxe2_test_bit(SXE2_EXPANSION_IPV6, flow_type))
+ flow->pattern_outer.item_spec.ipv4.protocol = SXE2_FLOW_IP_PROTOCOL_IPV6;
+ }
+ if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV6, flow_type)) {
+ sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV6_PROT, flow->pattern_outer.map_spec);
+ if (sxe2_test_bit(SXE2_EXPANSION_ETH, flow_type)) {
+ flow->pattern_outer.item_spec.ipv6.nexthdr = SXE2_FLOW_IP_PROTOCOL_ETH;
+ } else {
+ if (sxe2_test_bit(SXE2_EXPANSION_IPV4, flow_type))
+ flow->pattern_outer.item_spec.ipv6.nexthdr =
+ SXE2_FLOW_IP_PROTOCOL_IPV4;
+ if (sxe2_test_bit(SXE2_EXPANSION_IPV6, flow_type))
+ flow->pattern_outer.item_spec.ipv6.nexthdr =
+ SXE2_FLOW_IP_PROTOCOL_IPV6;
+ }
+ }
+ return 0;
+}
+
+static int32_t sxe2_flow_add_tunnel_port(struct rte_eth_dev *dev,
+ struct rte_flow_error *error,
+ struct sxe2_flow *flow, BITMAP_TYPE *flow_type,
+ enum sxe2_flow_tunnel_type tunnel_type)
+{
+ int32_t ret = 0;
+ enum sxe2_flow_udp_tunnel_protocol proto = SXE2_FLOW_UDP_TUNNEL_MAX;
+ struct sxe2_adapter *adapter = SXE2_DEV_PRIVATE_TO_ADAPTER(dev);
+ struct sxe2_flow_pattern *pattern = &flow->pattern_outer;
+ switch (tunnel_type) {
+ case SXE2_FLOW_TUNNEL_TYPE_VXLAN:
+ if (sxe2_test_bit(SXE2_EXPANSION_ETH, flow_type)) {
+ proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_VXLAN;
+ } else if (sxe2_test_bit(SXE2_EXPANSION_IPV4, flow_type) ||
+ sxe2_test_bit(SXE2_EXPANSION_IPV6, flow_type)) {
+ proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_VXLAN_GPE;
+ }
+ break;
+ case SXE2_FLOW_TUNNEL_TYPE_GTPU:
+ proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_GTP_U;
+ break;
+ case SXE2_FLOW_TUNNEL_TYPE_GENEVE:
+ proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_GENEVE;
+ break;
+ case SXE2_FLOW_TUNNEL_TYPE_GRE:
+ if (sxe2_test_bit(SXE2_EXPANSION_OUTER_UDP, flow_type)) {
+ proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_NVGRE;
+ } else {
+ if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV4, flow_type)) {
+ pattern->item_spec.ipv4.protocol = SXE2_FLOW_IP_PROTOCOL_GRE;
+ sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV4_PROT, pattern->map_spec);
+ }
+ if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV6, flow_type)) {
+ pattern->item_spec.ipv6.nexthdr = SXE2_FLOW_IP_PROTOCOL_GRE;
+ sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV6_PROT, pattern->map_spec);
+ }
+ }
+ break;
+ case SXE2_FLOW_TUNNEL_TYPE_IPIP:
+ ret = sxe2_flow_parse_pattern_ipip(flow, flow_type);
+ break;
+ default:
+ break;
+ }
+ if (proto != SXE2_FLOW_UDP_TUNNEL_MAX) {
+ ret = sxe2_flow_add_udp_tunnel_port(adapter, proto, flow, flow_type);
+ if (ret != 0) {
+ rte_flow_error_set(error, EINVAL,
+ RTE_FLOW_ERROR_TYPE_ITEM,
+ NULL, "Failed to add udp port for tunnel.");
+ PMD_LOG_ERR(DRV, "Failed to add udp port for tunnel, ret %d.", ret);
+ goto l_end;
+ }
+ }
+ if (tunnel_type != SXE2_FLOW_TUNNEL_TYPE_NONE) {
+ if (!sxe2_test_bit(SXE2_EXPANSION_OUTER_UDP, flow_type))
+ sxe2_set_bit(SXE2_FLOW_HDR_IPV_OTHER, pattern->hdrs);
+ }
+l_end:
+ return ret;
+}
+
static int32_t sxe2_flowlist_add_tunnel_port(struct rte_eth_dev *dev,
struct rte_flow *flow_list,
struct rte_flow_error *error)
diff --git a/drivers/net/sxe2/sxe2_flow_parse_pattern.c b/drivers/net/sxe2/sxe2_flow_parse_pattern.c
index f5bf8922c6..189abb1a33 100644
--- a/drivers/net/sxe2/sxe2_flow_parse_pattern.c
+++ b/drivers/net/sxe2/sxe2_flow_parse_pattern.c
@@ -1637,119 +1637,6 @@ static int32_t sxe2_flow_parse_pattern_vxlan_gpe(const struct rte_flow_item *ite
return ret;
}
-static int32_t sxe2_flow_parse_pattern_ipip(struct sxe2_flow *flow, BITMAP_TYPE *flow_type)
-{
- sxe2_set_bit(SXE2_EXPANSION_IPIP, flow_type);
- if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV4, flow_type)) {
- sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV4_PROT, flow->pattern_outer.map_spec);
- if (sxe2_test_bit(SXE2_EXPANSION_IPV4, flow_type))
- flow->pattern_outer.item_spec.ipv4.protocol = SXE2_FLOW_IP_PROTOCOL_IPV4;
- if (sxe2_test_bit(SXE2_EXPANSION_IPV6, flow_type))
- flow->pattern_outer.item_spec.ipv4.protocol = SXE2_FLOW_IP_PROTOCOL_IPV6;
- }
- if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV6, flow_type)) {
- sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV6_PROT, flow->pattern_outer.map_spec);
- if (sxe2_test_bit(SXE2_EXPANSION_ETH, flow_type)) {
- flow->pattern_outer.item_spec.ipv6.nexthdr = SXE2_FLOW_IP_PROTOCOL_ETH;
- } else {
- if (sxe2_test_bit(SXE2_EXPANSION_IPV4, flow_type))
- flow->pattern_outer.item_spec.ipv6.nexthdr =
- SXE2_FLOW_IP_PROTOCOL_IPV4;
- if (sxe2_test_bit(SXE2_EXPANSION_IPV6, flow_type))
- flow->pattern_outer.item_spec.ipv6.nexthdr =
- SXE2_FLOW_IP_PROTOCOL_IPV6;
- }
- }
- return 0;
-}
-
-static int32_t sxe2_flow_add_udp_tunnel_port(struct sxe2_adapter *adapter,
- enum sxe2_flow_udp_tunnel_protocol proto,
- struct sxe2_flow *flow,
- BITMAP_TYPE *flow_type)
-{
- int32_t ret = 0;
- uint16_t tun_port;
-
- tun_port = adapter->flow_ctxt.tunnel_port_list[proto];
- if (tun_port == 0xffff || tun_port == 0) {
- ret = -EINVAL;
- PMD_LOG_ERR(DRV, "UDP tunnel port not initialized, proto: %d", proto);
- goto l_end;
- }
- if (!sxe2_test_bit(SXE2_EXPANSION_OUTER_UDP, flow_type)) {
- ret = -EINVAL;
- PMD_LOG_ERR(DRV, "UDP must be over tunnel");
- goto l_end;
- }
- sxe2_set_bit(SXE2_FLOW_FLD_ID_UDP_DST_PORT, flow->pattern_outer.map_spec);
- flow->pattern_outer.item_spec.udp.dest = rte_cpu_to_be_16(tun_port);
-l_end:
- return ret;
-}
-
-int32_t sxe2_flow_add_tunnel_port(struct rte_eth_dev *dev,
- struct rte_flow_error *error,
- struct sxe2_flow *flow, BITMAP_TYPE *flow_type,
- enum sxe2_flow_tunnel_type tunnel_type)
-{
- int32_t ret = 0;
- enum sxe2_flow_udp_tunnel_protocol proto = SXE2_FLOW_UDP_TUNNEL_MAX;
- struct sxe2_adapter *adapter = SXE2_DEV_PRIVATE_TO_ADAPTER(dev);
- struct sxe2_flow_pattern *pattern = &flow->pattern_outer;
- switch (tunnel_type) {
- case SXE2_FLOW_TUNNEL_TYPE_VXLAN:
- if (sxe2_test_bit(SXE2_EXPANSION_ETH, flow_type)) {
- proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_VXLAN;
- } else if (sxe2_test_bit(SXE2_EXPANSION_IPV4, flow_type) ||
- sxe2_test_bit(SXE2_EXPANSION_IPV6, flow_type)) {
- proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_VXLAN_GPE;
- }
- break;
- case SXE2_FLOW_TUNNEL_TYPE_GTPU:
- proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_GTP_U;
- break;
- case SXE2_FLOW_TUNNEL_TYPE_GENEVE:
- proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_GENEVE;
- break;
- case SXE2_FLOW_TUNNEL_TYPE_GRE:
- if (sxe2_test_bit(SXE2_EXPANSION_OUTER_UDP, flow_type)) {
- proto = SXE2_FLOW_UDP_TUNNEL_PROTOCOL_NVGRE;
- } else {
- if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV4, flow_type)) {
- pattern->item_spec.ipv4.protocol = SXE2_FLOW_IP_PROTOCOL_GRE;
- sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV4_PROT, pattern->map_spec);
- }
- if (sxe2_test_bit(SXE2_EXPANSION_OUTER_IPV6, flow_type)) {
- pattern->item_spec.ipv6.nexthdr = SXE2_FLOW_IP_PROTOCOL_GRE;
- sxe2_set_bit(SXE2_FLOW_FLD_ID_IPV6_PROT, pattern->map_spec);
- }
- }
- break;
- case SXE2_FLOW_TUNNEL_TYPE_IPIP:
- ret = sxe2_flow_parse_pattern_ipip(flow, flow_type);
- break;
- default:
- break;
- }
- if (proto != SXE2_FLOW_UDP_TUNNEL_MAX) {
- ret = sxe2_flow_add_udp_tunnel_port(adapter, proto, flow, flow_type);
- if (ret != 0) {
- rte_flow_error_set(error, EINVAL,
- RTE_FLOW_ERROR_TYPE_ITEM,
- NULL, "Failed to add udp port for tunnel.");
- PMD_LOG_ERR(DRV, "Failed to add udp port for tunnel, ret %d.", ret);
- goto l_end;
- }
- }
- if (tunnel_type != SXE2_FLOW_TUNNEL_TYPE_NONE) {
- if (!sxe2_test_bit(SXE2_EXPANSION_OUTER_UDP, flow_type))
- sxe2_set_bit(SXE2_FLOW_HDR_IPV_OTHER, pattern->hdrs);
- }
-l_end:
- return ret;
-}
-
struct sxe2_flow_parse_pattern_ops sxe2_flow_parse_pattern_list[] = {
[SXE2_EXPANSION_OUTER_ETH] = {
.is_inner = false,
diff --git a/drivers/net/sxe2/sxe2_flow_parse_pattern.h b/drivers/net/sxe2/sxe2_flow_parse_pattern.h
index 8442c35cae..69d83a6ea6 100644
--- a/drivers/net/sxe2/sxe2_flow_parse_pattern.h
+++ b/drivers/net/sxe2/sxe2_flow_parse_pattern.h
@@ -37,10 +37,4 @@ int32_t sxe2_flow_parse_pattern(struct rte_eth_dev *dev,
struct rte_flow_error *error,
struct sxe2_flow *flow);
-int32_t sxe2_flow_add_tunnel_port(struct rte_eth_dev *dev,
- struct rte_flow_error *error,
- struct sxe2_flow *flow,
- BITMAP_TYPE *flow_type,
- enum sxe2_flow_tunnel_type tunnel_type);
-
#endif /* SXE2_FLOW_PARSE_PATTERN_H_ */
--
2.52.0
next prev parent reply other threads:[~2026-08-27 2:38 UTC|newest]
Thread overview: 207+ 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 ` liujie5 [this message]
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-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=20260827023845.1431230-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox