patch 'drivers/net: fix reported RSS capability' has been queued to stable release 24.11.9
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Thu Nov 5 17:43:12 CET 2026
Hi,
FYI, your patch has been queued to stable release 24.11.9
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 11/07/26. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/b5593edbefb9fadc7ca9106369ad4bafdd446f78
Thanks.
Luca Boccassi
---
>From b5593edbefb9fadc7ca9106369ad4bafdd446f78 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand at redhat.com>
Date: Thu, 22 Oct 2026 19:44:38 +0200
Subject: [PATCH] drivers/net: fix reported RSS capability
[ upstream commit efeb1ec9f79757261ff3317e21be6c596b1b54e5 ]
Some drivers (idpf, cpfl) report RSS support even if lacking HW support.
On the other hand, some driver do have support but do not advertise it
(either in dev_info, or in the documentation).
failsafe may support RSS, as it only passes the requests to the ports
attached to it, hence mark it as partial support.
Fixes: c01c748e4ae6 ("net/ipn3ke: add new driver")
Fixes: 70675bcc3a57 ("net/idpf: support RSS")
Fixes: cfbc66551a14 ("net/cpfl: support RSS")
Fixes: 5fb899f4b225 ("net/xsc: support RSS configuration")
Fixes: 9f75cad1287f ("net/xsc: add PCT interfaces")
Fixes: ff8db3711b29 ("net/nbl: support infos query")
Signed-off-by: David Marchand <david.marchand at redhat.com>
Reviewed-by: Renyong Wan <wanry at yunsilicon.com>
---
doc/guides/nics/features/failsafe.ini | 1 +
doc/guides/nics/features/ipn3ke.ini | 3 ---
doc/guides/nics/features/netvsc.ini | 1 +
drivers/net/cpfl/cpfl_ethdev.c | 9 +++++----
drivers/net/cpfl/cpfl_representor.c | 4 +++-
drivers/net/idpf/idpf_ethdev.c | 9 +++++----
6 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/doc/guides/nics/features/failsafe.ini b/doc/guides/nics/features/failsafe.ini
index a665ed1ec31..11e100dde1d 100644
--- a/doc/guides/nics/features/failsafe.ini
+++ b/doc/guides/nics/features/failsafe.ini
@@ -21,6 +21,7 @@ VLAN filter = Y
Flow control = Y
Packet type parsing = Y
Basic stats = Y
+RSS hash = P
Stats per queue = Y
ARMv7 = Y
ARMv8 = Y
diff --git a/doc/guides/nics/features/ipn3ke.ini b/doc/guides/nics/features/ipn3ke.ini
index 1dedb532c10..e56cd9d23bb 100644
--- a/doc/guides/nics/features/ipn3ke.ini
+++ b/doc/guides/nics/features/ipn3ke.ini
@@ -17,9 +17,6 @@ Promiscuous mode = Y
Allmulticast mode = Y
Unicast MAC filter = Y
Multicast MAC filter = Y
-RSS hash = Y
-RSS key update = Y
-RSS reta update = Y
SR-IOV = Y
VLAN filter = Y
Flow control = Y
diff --git a/doc/guides/nics/features/netvsc.ini b/doc/guides/nics/features/netvsc.ini
index 32df77a03e4..452c3266d60 100644
--- a/doc/guides/nics/features/netvsc.ini
+++ b/doc/guides/nics/features/netvsc.ini
@@ -9,6 +9,7 @@ Link status = Y
Free Tx mbuf on demand = Y
Scattered Rx = Y
Promiscuous mode = Y
+RSS hash = Y
Allmulticast mode = Y
Basic stats = Y
Stats per queue = Y
diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c
index 8de603ed2d3..0398c0d736c 100644
--- a/drivers/net/cpfl/cpfl_ethdev.c
+++ b/drivers/net/cpfl/cpfl_ethdev.c
@@ -205,10 +205,11 @@ cpfl_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
dev_info->max_mtu = vport->max_mtu;
dev_info->min_mtu = RTE_ETHER_MIN_MTU;
- dev_info->hash_key_size = vport->rss_key_size;
- dev_info->reta_size = vport->rss_lut_size;
-
- dev_info->flow_type_rss_offloads = CPFL_RSS_OFFLOAD_ALL;
+ if (base->caps.rss_caps != 0) {
+ dev_info->hash_key_size = vport->rss_key_size;
+ dev_info->reta_size = vport->rss_lut_size;
+ dev_info->flow_type_rss_offloads = CPFL_RSS_OFFLOAD_ALL;
+ }
dev_info->rx_offload_capa =
RTE_ETH_RX_OFFLOAD_IPV4_CKSUM |
diff --git a/drivers/net/cpfl/cpfl_representor.c b/drivers/net/cpfl/cpfl_representor.c
index 60b72b5ec1a..bb28c0b989b 100644
--- a/drivers/net/cpfl/cpfl_representor.c
+++ b/drivers/net/cpfl/cpfl_representor.c
@@ -195,6 +195,7 @@ cpfl_repr_dev_info_get(struct rte_eth_dev *ethdev,
struct rte_eth_dev_info *dev_info)
{
struct cpfl_repr *repr = CPFL_DEV_TO_REPR(ethdev);
+ struct cpfl_adapter_ext *adapter = repr->itf.adapter;
dev_info->device = ethdev->device;
dev_info->max_mac_addrs = 1;
@@ -203,7 +204,8 @@ cpfl_repr_dev_info_get(struct rte_eth_dev *ethdev,
dev_info->min_rx_bufsize = CPFL_MIN_BUF_SIZE;
dev_info->max_rx_pktlen = CPFL_MAX_FRAME_SIZE;
- dev_info->flow_type_rss_offloads = CPFL_RSS_OFFLOAD_ALL;
+ if (adapter->base.caps.rss_caps != 0)
+ dev_info->flow_type_rss_offloads = CPFL_RSS_OFFLOAD_ALL;
dev_info->rx_offload_capa =
RTE_ETH_RX_OFFLOAD_VLAN_STRIP |
diff --git a/drivers/net/idpf/idpf_ethdev.c b/drivers/net/idpf/idpf_ethdev.c
index e0a02e128c5..a1f6167257d 100644
--- a/drivers/net/idpf/idpf_ethdev.c
+++ b/drivers/net/idpf/idpf_ethdev.c
@@ -164,10 +164,11 @@ idpf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
dev_info->max_mtu = vport->max_mtu;
dev_info->min_mtu = RTE_ETHER_MIN_MTU;
- dev_info->hash_key_size = vport->rss_key_size;
- dev_info->reta_size = vport->rss_lut_size;
-
- dev_info->flow_type_rss_offloads = IDPF_RSS_OFFLOAD_ALL;
+ if (adapter->caps.rss_caps != 0) {
+ dev_info->hash_key_size = vport->rss_key_size;
+ dev_info->reta_size = vport->rss_lut_size;
+ dev_info->flow_type_rss_offloads = IDPF_RSS_OFFLOAD_ALL;
+ }
dev_info->rx_offload_capa =
RTE_ETH_RX_OFFLOAD_IPV4_CKSUM |
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-11-05 16:42:48.936629143 +0000
+++ 0105-drivers-net-fix-reported-RSS-capability.patch 2026-11-05 16:42:45.057064851 +0000
@@ -1 +1 @@
-From efeb1ec9f79757261ff3317e21be6c596b1b54e5 Mon Sep 17 00:00:00 2001
+From b5593edbefb9fadc7ca9106369ad4bafdd446f78 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit efeb1ec9f79757261ff3317e21be6c596b1b54e5 ]
+
@@ -19 +20,0 @@
-Cc: stable at dpdk.org
@@ -24,9 +25,7 @@
- doc/guides/nics/features/failsafe.ini | 1 +
- doc/guides/nics/features/ipn3ke.ini | 3 ---
- doc/guides/nics/features/nbl.ini | 1 +
- doc/guides/nics/features/netvsc.ini | 1 +
- drivers/net/intel/cpfl/cpfl_ethdev.c | 9 +++++----
- drivers/net/intel/cpfl/cpfl_representor.c | 4 +++-
- drivers/net/intel/idpf/idpf_ethdev.c | 9 +++++----
- drivers/net/xsc/xsc_ethdev.c | 4 ++++
- 8 files changed, 20 insertions(+), 12 deletions(-)
+ doc/guides/nics/features/failsafe.ini | 1 +
+ doc/guides/nics/features/ipn3ke.ini | 3 ---
+ doc/guides/nics/features/netvsc.ini | 1 +
+ drivers/net/cpfl/cpfl_ethdev.c | 9 +++++----
+ drivers/net/cpfl/cpfl_representor.c | 4 +++-
+ drivers/net/idpf/idpf_ethdev.c | 9 +++++----
+ 6 files changed, 15 insertions(+), 12 deletions(-)
@@ -35 +34 @@
-index 09afdc19634..b778a40be6c 100644
+index a665ed1ec31..11e100dde1d 100644
@@ -38,2 +37 @@
-@@ -18,6 +18,7 @@ Multicast MAC filter = Y
- VLAN filter = Y
+@@ -21,6 +21,7 @@ VLAN filter = Y
@@ -41,0 +40 @@
+ Basic stats = Y
@@ -47 +46 @@
-index 6abaf9e4f9e..1f9a28f1985 100644
+index 1dedb532c10..e56cd9d23bb 100644
@@ -50 +49 @@
-@@ -15,9 +15,6 @@ Promiscuous mode = Y
+@@ -17,9 +17,6 @@ Promiscuous mode = Y
@@ -60,12 +58,0 @@
-diff --git a/doc/guides/nics/features/nbl.ini b/doc/guides/nics/features/nbl.ini
-index 5935092a491..e799840e405 100644
---- a/doc/guides/nics/features/nbl.ini
-+++ b/doc/guides/nics/features/nbl.ini
-@@ -9,6 +9,7 @@ MTU update = Y
- Scattered Rx = Y
- Promiscuous mode = Y
- Unicast MAC filter = Y
-+RSS hash = Y
- VLAN offload = P
- Extended stats = Y
- Stats per queue = Y
@@ -73 +60 @@
-index fa8c2ac1324..7bc7148f957 100644
+index 32df77a03e4..452c3266d60 100644
@@ -76 +63 @@
-@@ -8,6 +8,7 @@ Speed capabilities = P
+@@ -9,6 +9,7 @@ Link status = Y
@@ -81,0 +69 @@
+ Basic stats = Y
@@ -83,6 +71,5 @@
- Extended stats = Y
-diff --git a/drivers/net/intel/cpfl/cpfl_ethdev.c b/drivers/net/intel/cpfl/cpfl_ethdev.c
-index 789bfd08f9c..ace9937d4a2 100644
---- a/drivers/net/intel/cpfl/cpfl_ethdev.c
-+++ b/drivers/net/intel/cpfl/cpfl_ethdev.c
-@@ -210,10 +210,11 @@ cpfl_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
+diff --git a/drivers/net/cpfl/cpfl_ethdev.c b/drivers/net/cpfl/cpfl_ethdev.c
+index 8de603ed2d3..0398c0d736c 100644
+--- a/drivers/net/cpfl/cpfl_ethdev.c
++++ b/drivers/net/cpfl/cpfl_ethdev.c
+@@ -205,10 +205,11 @@ cpfl_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
@@ -104 +91 @@
-diff --git a/drivers/net/intel/cpfl/cpfl_representor.c b/drivers/net/intel/cpfl/cpfl_representor.c
+diff --git a/drivers/net/cpfl/cpfl_representor.c b/drivers/net/cpfl/cpfl_representor.c
@@ -106,2 +93,2 @@
---- a/drivers/net/intel/cpfl/cpfl_representor.c
-+++ b/drivers/net/intel/cpfl/cpfl_representor.c
+--- a/drivers/net/cpfl/cpfl_representor.c
++++ b/drivers/net/cpfl/cpfl_representor.c
@@ -126,5 +113,5 @@
-diff --git a/drivers/net/intel/idpf/idpf_ethdev.c b/drivers/net/intel/idpf/idpf_ethdev.c
-index 0a0bcdf48db..bea351aa5d5 100644
---- a/drivers/net/intel/idpf/idpf_ethdev.c
-+++ b/drivers/net/intel/idpf/idpf_ethdev.c
-@@ -167,10 +167,11 @@ idpf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
+diff --git a/drivers/net/idpf/idpf_ethdev.c b/drivers/net/idpf/idpf_ethdev.c
+index e0a02e128c5..a1f6167257d 100644
+--- a/drivers/net/idpf/idpf_ethdev.c
++++ b/drivers/net/idpf/idpf_ethdev.c
+@@ -164,10 +164,11 @@ idpf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)
@@ -146,15 +132,0 @@
-diff --git a/drivers/net/xsc/xsc_ethdev.c b/drivers/net/xsc/xsc_ethdev.c
-index 5fbe68782eb..20d6f58f687 100644
---- a/drivers/net/xsc/xsc_ethdev.c
-+++ b/drivers/net/xsc/xsc_ethdev.c
-@@ -469,6 +469,10 @@ xsc_ethdev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)
- info->if_index = priv->ifindex;
- info->speed_capa = priv->xdev->link_speed_capa;
- info->hash_key_size = XSC_RSS_HASH_KEY_LEN;
-+ info->flow_type_rss_offloads = RTE_ETH_RSS_IP | RTE_ETH_RSS_UDP |
-+ RTE_ETH_RSS_TCP | RTE_ETH_RSS_L3_SRC_ONLY |
-+ RTE_ETH_RSS_L3_DST_ONLY | RTE_ETH_RSS_L4_SRC_ONLY |
-+ RTE_ETH_RSS_L4_DST_ONLY | RTE_ETH_RSS_LEVEL_INNERMOST;
- info->tx_desc_lim.nb_seg_max = 8;
- info->tx_desc_lim.nb_mtu_seg_max = 8;
- info->switch_info.name = dev->data->name;
More information about the stable
mailing list