[PATCH v3 51/51] net/sxe2: simplify Rx queue buffer split fill helper
liujie5 at linkdatatechnology.com
liujie5 at linkdatatechnology.com
Wed Aug 26 10:58:36 CEST 2026
From: Jie Liu <liujie5 at linkdatatechnology.com>
sxe2_rxq_buf_split_fill() re-tests the RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT
offload flag even though the caller already guarantees it, leaving the
else branch dead. It also returns -1 on failure instead of a standard
errno.
Drop the redundant flag test and dead else branch, set hdr_len once
after the switch chain, and return -EINVAL for an unconfigured split
protocol and -ENOTSUP for an unsupported one.
Cc: stable at dpdk.org
Cc: stephen at networkplumber.org
Signed-off-by: Jie Liu <liujie5 at linkdatatechnology.com>
---
drivers/net/sxe2/sxe2_cmd_chnl.c | 142 ++++++++++++++-----------------
1 file changed, 62 insertions(+), 80 deletions(-)
diff --git a/drivers/net/sxe2/sxe2_cmd_chnl.c b/drivers/net/sxe2/sxe2_cmd_chnl.c
index b4f8b337b5..9bd6e3355f 100644
--- a/drivers/net/sxe2/sxe2_cmd_chnl.c
+++ b/drivers/net/sxe2/sxe2_cmd_chnl.c
@@ -197,97 +197,79 @@ int32_t sxe2_drv_vsi_del(struct sxe2_adapter *adapter, struct sxe2_vsi *vsi)
static int32_t sxe2_rxq_buf_split_fill(struct sxe2_rx_queue *rxq,
struct sxe2_drv_rxq_ctxt *ctxt)
{
- int32_t ret = 0;
uint32_t proto_hdr;
- if (rxq->offloads & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT) {
- proto_hdr = rxq->rx_seg[0].proto_hdr;
- if (proto_hdr == RTE_PTYPE_UNKNOWN) {
- PMD_LOG_ERR(RX, "Buffer split protocol must be configured");
- ret = -1;
- goto l_end;
- }
+ proto_hdr = rxq->rx_seg[0].proto_hdr;
+ if (proto_hdr == RTE_PTYPE_UNKNOWN) {
+ PMD_LOG_ERR(RX, "Buffer split protocol must be configured");
+ return -EINVAL;
+ }
- switch (proto_hdr & RTE_PTYPE_L4_MASK) {
- case RTE_PTYPE_L4_TCP:
- ctxt->split_type_mask = SXE2_PTYPE_L4_TCP;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- case RTE_PTYPE_L4_UDP:
- ctxt->split_type_mask = SXE2_PTYPE_L4_UDP;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- case RTE_PTYPE_L4_SCTP:
- ctxt->split_type_mask = SXE2_PTYPE_L4_SCTP;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- }
+ switch (proto_hdr & RTE_PTYPE_L4_MASK) {
+ case RTE_PTYPE_L4_TCP:
+ ctxt->split_type_mask = SXE2_PTYPE_L4_TCP;
+ goto l_end;
+ case RTE_PTYPE_L4_UDP:
+ ctxt->split_type_mask = SXE2_PTYPE_L4_UDP;
+ goto l_end;
+ case RTE_PTYPE_L4_SCTP:
+ ctxt->split_type_mask = SXE2_PTYPE_L4_SCTP;
+ goto l_end;
+ }
- switch (proto_hdr & RTE_PTYPE_L3_MASK) {
- case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
- ctxt->split_type_mask = SXE2_PTYPE_L3_IPV4;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
- ctxt->split_type_mask = SXE2_PTYPE_L3_IPV6;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- }
+ switch (proto_hdr & RTE_PTYPE_L3_MASK) {
+ case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:
+ ctxt->split_type_mask = SXE2_PTYPE_L3_IPV4;
+ goto l_end;
+ case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:
+ ctxt->split_type_mask = SXE2_PTYPE_L3_IPV6;
+ goto l_end;
+ }
- switch (proto_hdr & RTE_PTYPE_L2_MASK) {
- case RTE_PTYPE_L2_ETHER:
- ctxt->split_type_mask = SXE2_PTYPE_L2_ETHER;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- }
+ switch (proto_hdr & RTE_PTYPE_L2_MASK) {
+ case RTE_PTYPE_L2_ETHER:
+ ctxt->split_type_mask = SXE2_PTYPE_L2_ETHER;
+ goto l_end;
+ }
- switch (proto_hdr & RTE_PTYPE_INNER_L4_MASK) {
- case RTE_PTYPE_INNER_L4_TCP:
- ctxt->split_type_mask = SXE2_PTYPE_INNER_L4_TCP;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- case RTE_PTYPE_INNER_L4_UDP:
- ctxt->split_type_mask = SXE2_PTYPE_INNER_L4_UDP;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- case RTE_PTYPE_INNER_L4_SCTP:
- ctxt->split_type_mask = SXE2_PTYPE_INNER_L4_SCTP;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- }
+ switch (proto_hdr & RTE_PTYPE_INNER_L4_MASK) {
+ case RTE_PTYPE_INNER_L4_TCP:
+ ctxt->split_type_mask = SXE2_PTYPE_INNER_L4_TCP;
+ goto l_end;
+ case RTE_PTYPE_INNER_L4_UDP:
+ ctxt->split_type_mask = SXE2_PTYPE_INNER_L4_UDP;
+ goto l_end;
+ case RTE_PTYPE_INNER_L4_SCTP:
+ ctxt->split_type_mask = SXE2_PTYPE_INNER_L4_SCTP;
+ goto l_end;
+ }
- switch (proto_hdr & RTE_PTYPE_INNER_L3_MASK) {
- case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN:
- ctxt->split_type_mask = SXE2_PTYPE_INNER_L3_IPV4;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN:
- ctxt->split_type_mask = SXE2_PTYPE_INNER_L3_IPV6;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- }
+ switch (proto_hdr & RTE_PTYPE_INNER_L3_MASK) {
+ case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN:
+ ctxt->split_type_mask = SXE2_PTYPE_INNER_L3_IPV4;
+ goto l_end;
+ case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN:
+ ctxt->split_type_mask = SXE2_PTYPE_INNER_L3_IPV6;
+ goto l_end;
+ }
- switch (proto_hdr & RTE_PTYPE_INNER_L2_MASK) {
- case RTE_PTYPE_INNER_L2_ETHER:
- ctxt->split_type_mask = SXE2_PTYPE_INNER_L2_ETHER;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- }
+ switch (proto_hdr & RTE_PTYPE_INNER_L2_MASK) {
+ case RTE_PTYPE_INNER_L2_ETHER:
+ ctxt->split_type_mask = SXE2_PTYPE_INNER_L2_ETHER;
+ goto l_end;
+ }
- switch (proto_hdr & RTE_PTYPE_TUNNEL_MASK) {
- case RTE_PTYPE_TUNNEL_GRENAT:
- ctxt->split_type_mask = SXE2_PTYPE_TUNNEL_GRENAT;
- ctxt->hdr_len = SXE2_RX_HDR_SIZE;
- goto l_end;
- }
- PMD_LOG_ERR(RX, "Buffer split protocol is not supported");
- ret = -1;
- } else {
- ctxt->hdr_len = 0;
- ctxt->split_type_mask = 0;
+ switch (proto_hdr & RTE_PTYPE_TUNNEL_MASK) {
+ case RTE_PTYPE_TUNNEL_GRENAT:
+ ctxt->split_type_mask = SXE2_PTYPE_TUNNEL_GRENAT;
+ goto l_end;
}
+
+ PMD_LOG_ERR(RX, "Buffer split protocol is not supported");
+ return -ENOTSUP;
l_end:
- return ret;
+ ctxt->hdr_len = SXE2_RX_HDR_SIZE;
+ return 0;
}
static int32_t sxe2_rxq_ctxt_cfg_fill(struct sxe2_rx_queue *rxq,
--
2.52.0
More information about the dev
mailing list