[PATCH v3 48/51] net/sxe2: fix device init and representor matching issues
liujie5 at linkdatatechnology.com
liujie5 at linkdatatechnology.com
Wed Aug 26 10:58:19 CEST 2026
From: Jie Liu <liujie5 at linkdatatechnology.com>
- sxe2_dev_init(): move the init_rss_err label above
sxe2_security_uinit() so an RSS init failure still unwinds the
security context instead of leaking it.
- sxe2_buffer_split_supported_hdr_ptypes_get(): exclude the trailing
RTE_PTYPE_UNKNOWN terminator from no_of_elements so applications do
not receive a bogus ptype entry.
- sxe2_switchdev_repr_match(): match the PF when the adapter's pf_num
is among the requested ports instead of requiring every requested
port to equal pf_num, which could never succeed with multiple ports.
Cc: stable at dpdk.org
Cc: stephen at networkplumber.org
Signed-off-by: Jie Liu <liujie5 at linkdatatechnology.com>
---
drivers/net/sxe2/sxe2_ethdev.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/net/sxe2/sxe2_ethdev.c b/drivers/net/sxe2/sxe2_ethdev.c
index 88fe43298a..f4e65852d4 100644
--- a/drivers/net/sxe2/sxe2_ethdev.c
+++ b/drivers/net/sxe2/sxe2_ethdev.c
@@ -986,7 +986,7 @@ sxe2_buffer_split_supported_hdr_ptypes_get(struct rte_eth_dev *dev __rte_unused,
RTE_PTYPE_UNKNOWN
};
- *no_of_elements = RTE_DIM(ptypes);
+ *no_of_elements = RTE_DIM(ptypes) - 1;
return ptypes;
}
@@ -2028,8 +2028,8 @@ static int32_t sxe2_dev_init(struct rte_eth_dev *dev,
init_fc_state_err:
(void)sxe2_flow_uninit(dev);
init_flow_err:
- sxe2_security_uinit(dev);
init_rss_err:
+ sxe2_security_uinit(dev);
init_security_err:
sxe2_intr_uninit(dev);
init_irq_err:
@@ -2198,12 +2198,14 @@ static bool sxe2_switchdev_repr_match(struct sxe2_adapter *adapter,
}
for (port_idx = 0; port_idx < req_eth_da->nb_ports; ++port_idx) {
- if (adapter->switchdev_info.pf_num != req_eth_da->ports[port_idx]) {
- PMD_DEV_LOG_DEBUG(adapter, DRV, "switchdev pf %u not match req pf %u",
- adapter->switchdev_info.pf_num, req_eth_da->ports[port_idx]);
- rte_errno = EBUSY;
- return false;
- }
+ if (adapter->switchdev_info.pf_num == req_eth_da->ports[port_idx])
+ break;
+ }
+ if (port_idx == req_eth_da->nb_ports) {
+ PMD_DEV_LOG_DEBUG(adapter, DRV, "switchdev pf %u not match req pf",
+ adapter->switchdev_info.pf_num);
+ rte_errno = EBUSY;
+ return false;
}
for (repr_idx = 0; repr_idx < req_eth_da->nb_representor_ports; ++repr_idx) {
--
2.52.0
More information about the dev
mailing list