patch 'drivers/net: fix reported VMDq 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:10 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/2a8b77e646e17245912f9c8ac34faebd2eea5fe4

Thanks.

Luca Boccassi

---
>From 2a8b77e646e17245912f9c8ac34faebd2eea5fe4 Mon Sep 17 00:00:00 2001
From: David Marchand <david.marchand at redhat.com>
Date: Thu, 22 Oct 2026 19:44:33 +0200
Subject: [PATCH] drivers/net: fix reported VMDq capability

[ upstream commit 7cf1306f707cf9aec379ec17cd30491ee41e9806 ]

Some PF drivers (dpaa, dpaa2) and VF drivers (ixgbe, ngbe, txgbe)
are announcing some VMDq capability though this support is not documented,
and no action is taken if the feature is requested.

fm10k announces capability for VF device, but rejects it at configure
time.

failsafe may support VMDq, as it only passes the requests to the ports
attached to it, hence mark it as partial support.

Fixes: fe3a45fd4104 ("ixgbe: add VMDq support")
Fixes: 7e72cbfa320b ("fm10k: add reta query/update")
Fixes: 799db4568c76 ("net/dpaa: support device info and speed capability")
Fixes: 762b275f20f8 ("net/dpaa2: add missing device info fields")
Fixes: c01c748e4ae6 ("net/ipn3ke: add new driver")
Fixes: 5dec0169554b ("net/txgbe: support VF get information")
Fixes: 66070ca419c1 ("net/ngbe: add hardware configuration for VF device")

Signed-off-by: David Marchand <david.marchand at redhat.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
 doc/guides/nics/features/failsafe.ini | 1 +
 doc/guides/nics/features/ipn3ke.ini   | 1 -
 drivers/net/dpaa/dpaa_ethdev.c        | 1 -
 drivers/net/dpaa2/dpaa2_ethdev.c      | 1 -
 drivers/net/fm10k/fm10k_ethdev.c      | 9 ++-------
 drivers/net/ixgbe/ixgbe_ethdev.c      | 4 ----
 drivers/net/txgbe/txgbe_ethdev_vf.c   | 1 -
 7 files changed, 3 insertions(+), 15 deletions(-)

diff --git a/doc/guides/nics/features/failsafe.ini b/doc/guides/nics/features/failsafe.ini
index 00dcd0e03bc..a665ed1ec31 100644
--- a/doc/guides/nics/features/failsafe.ini
+++ b/doc/guides/nics/features/failsafe.ini
@@ -15,6 +15,7 @@ MTU update           = Y
 Promiscuous mode     = Y
 Allmulticast mode    = Y
 Unicast MAC filter   = Y
+VMDq                 = P
 Multicast MAC filter = Y
 VLAN filter          = Y
 Flow control         = Y
diff --git a/doc/guides/nics/features/ipn3ke.ini b/doc/guides/nics/features/ipn3ke.ini
index e412978820e..9ecc7324dd0 100644
--- a/doc/guides/nics/features/ipn3ke.ini
+++ b/doc/guides/nics/features/ipn3ke.ini
@@ -20,7 +20,6 @@ Multicast MAC filter = Y
 RSS hash             = Y
 RSS key update       = Y
 RSS reta update      = Y
-VMDq                 = Y
 SR-IOV               = Y
 DCB                  = Y
 VLAN filter          = Y
diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index a1708b5f836..ae2def2f3cc 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -690,7 +690,6 @@ static int dpaa_eth_dev_info(struct rte_eth_dev *dev,
 	dev_info->max_mac_addrs = DPAA_MAX_MAC_FILTER;
 	dev_info->max_hash_mac_addrs = 0;
 	dev_info->max_vfs = 0;
-	dev_info->max_vmdq_pools = RTE_ETH_16_POOLS;
 	dev_info->flow_type_rss_offloads = DPAA_RSS_OFFLOAD_ALL;
 
 	if (fif->mac_type == fman_mac_1g) {
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index d2c9ca5f6d0..3862d1a52e7 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -268,7 +268,6 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev,
 
 	dev_info->max_hash_mac_addrs = 0;
 	dev_info->max_vfs = 0;
-	dev_info->max_vmdq_pools = RTE_ETH_16_POOLS;
 	dev_info->flow_type_rss_offloads = DPAA2_RSS_OFFLOAD_ALL;
 
 	dev_info->default_rxportconf.burst_size = dpaa2_dqrr_size;
diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
index 7b490bea179..8fc2d48b414 100644
--- a/drivers/net/fm10k/fm10k_ethdev.c
+++ b/drivers/net/fm10k/fm10k_ethdev.c
@@ -410,7 +410,6 @@ static int
 fm10k_check_mq_mode(struct rte_eth_dev *dev)
 {
 	enum rte_eth_rx_mq_mode rx_mq_mode = dev->data->dev_conf.rxmode.mq_mode;
-	struct fm10k_hw *hw = FM10K_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct rte_eth_vmdq_rx_conf *vmdq_conf;
 	uint16_t nb_rx_q = dev->data->nb_rx_queues;
 
@@ -424,11 +423,6 @@ fm10k_check_mq_mode(struct rte_eth_dev *dev)
 	if (!(rx_mq_mode & RTE_ETH_MQ_RX_VMDQ_FLAG))
 		return 0;
 
-	if (hw->mac.type == fm10k_mac_vf) {
-		PMD_INIT_LOG(ERR, "VMDQ mode is not supported in VF.");
-		return -EINVAL;
-	}
-
 	/* Check VMDQ queue pool number */
 	if (vmdq_conf->nb_queue_pools >
 			sizeof(vmdq_conf->pool_map[0].pools) * CHAR_BIT ||
@@ -1380,7 +1374,8 @@ fm10k_dev_infos_get(struct rte_eth_dev *dev,
 	dev_info->max_vfs            = pdev->max_vfs;
 	dev_info->vmdq_pool_base     = 0;
 	dev_info->vmdq_queue_base    = 0;
-	dev_info->max_vmdq_pools     = RTE_ETH_32_POOLS;
+	if (hw->mac.type != fm10k_mac_vf)
+		dev_info->max_vmdq_pools = RTE_ETH_32_POOLS;
 	dev_info->vmdq_queue_num     = FM10K_MAX_QUEUES_PF;
 	dev_info->rx_queue_offload_capa = fm10k_get_rx_queue_offloads_capa(dev);
 	dev_info->rx_offload_capa = fm10k_get_rx_port_offloads_capa(dev) |
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 3415bc52227..6375a2784c5 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -4122,10 +4122,6 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
 	dev_info->max_mac_addrs = hw->mac.num_rar_entries;
 	dev_info->max_hash_mac_addrs = IXGBE_VMDQ_NUM_UC_MAC;
 	dev_info->max_vfs = pci_dev->max_vfs;
-	if (hw->mac.type == ixgbe_mac_82598EB)
-		dev_info->max_vmdq_pools = RTE_ETH_16_POOLS;
-	else
-		dev_info->max_vmdq_pools = RTE_ETH_64_POOLS;
 	dev_info->rx_queue_offload_capa = ixgbe_get_rx_queue_offloads(dev);
 	dev_info->rx_offload_capa = (ixgbe_get_rx_port_offloads(dev) |
 				     dev_info->rx_queue_offload_capa);
diff --git a/drivers/net/txgbe/txgbe_ethdev_vf.c b/drivers/net/txgbe/txgbe_ethdev_vf.c
index 67e1dc696b2..a91474cacc8 100644
--- a/drivers/net/txgbe/txgbe_ethdev_vf.c
+++ b/drivers/net/txgbe/txgbe_ethdev_vf.c
@@ -490,7 +490,6 @@ txgbevf_dev_info_get(struct rte_eth_dev *dev,
 	dev_info->max_mac_addrs = hw->mac.num_rar_entries;
 	dev_info->max_hash_mac_addrs = TXGBE_VMDQ_NUM_UC_MAC;
 	dev_info->max_vfs = pci_dev->max_vfs;
-	dev_info->max_vmdq_pools = RTE_ETH_64_POOLS;
 	dev_info->dev_capa &= ~RTE_ETH_DEV_CAPA_FLOW_RULE_KEEP;
 	dev_info->rx_queue_offload_capa = txgbe_get_rx_queue_offloads(dev);
 	dev_info->rx_offload_capa = (txgbe_get_rx_port_offloads(dev) |
-- 
2.47.3

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-11-05 16:42:48.856835027 +0000
+++ 0103-drivers-net-fix-reported-VMDq-capability.patch	2026-11-05 16:42:45.053064730 +0000
@@ -1 +1 @@
-From 7cf1306f707cf9aec379ec17cd30491ee41e9806 Mon Sep 17 00:00:00 2001
+From 2a8b77e646e17245912f9c8ac34faebd2eea5fe4 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7cf1306f707cf9aec379ec17cd30491ee41e9806 ]
+
@@ -23 +24,0 @@
-Cc: stable at dpdk.org
@@ -28,9 +29,8 @@
- doc/guides/nics/features/failsafe.ini  | 1 +
- doc/guides/nics/features/ipn3ke.ini    | 1 -
- drivers/net/dpaa/dpaa_ethdev.c         | 1 -
- drivers/net/dpaa2/dpaa2_ethdev.c       | 1 -
- drivers/net/intel/fm10k/fm10k_ethdev.c | 9 ++-------
- drivers/net/intel/ixgbe/ixgbe_ethdev.c | 4 ----
- drivers/net/ngbe/ngbe_ethdev_vf.c      | 1 -
- drivers/net/txgbe/txgbe_ethdev_vf.c    | 1 -
- 8 files changed, 3 insertions(+), 16 deletions(-)
+ doc/guides/nics/features/failsafe.ini | 1 +
+ doc/guides/nics/features/ipn3ke.ini   | 1 -
+ drivers/net/dpaa/dpaa_ethdev.c        | 1 -
+ drivers/net/dpaa2/dpaa2_ethdev.c      | 1 -
+ drivers/net/fm10k/fm10k_ethdev.c      | 9 ++-------
+ drivers/net/ixgbe/ixgbe_ethdev.c      | 4 ----
+ drivers/net/txgbe/txgbe_ethdev_vf.c   | 1 -
+ 7 files changed, 3 insertions(+), 15 deletions(-)
@@ -39 +39 @@
-index c7c696fbbdc..09afdc19634 100644
+index 00dcd0e03bc..a665ed1ec31 100644
@@ -42 +42 @@
-@@ -13,6 +13,7 @@ MTU update           = Y
+@@ -15,6 +15,7 @@ MTU update           = Y
@@ -51 +51 @@
-index 29f40a5b111..ba43b9d91cb 100644
+index e412978820e..9ecc7324dd0 100644
@@ -54 +54 @@
-@@ -18,7 +18,6 @@ Multicast MAC filter = Y
+@@ -20,7 +20,6 @@ Multicast MAC filter = Y
@@ -63 +63 @@
-index 947e224b937..fe49c7b961c 100644
+index a1708b5f836..ae2def2f3cc 100644
@@ -66 +66 @@
-@@ -686,7 +686,6 @@ static int dpaa_eth_dev_info(struct rte_eth_dev *dev,
+@@ -690,7 +690,6 @@ static int dpaa_eth_dev_info(struct rte_eth_dev *dev,
@@ -75 +75 @@
-index 6afd6417098..b3a725c0ea6 100644
+index d2c9ca5f6d0..3862d1a52e7 100644
@@ -78 +78 @@
-@@ -452,7 +452,6 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev,
+@@ -268,7 +268,6 @@ dpaa2_dev_info_get(struct rte_eth_dev *dev,
@@ -84,7 +84,7 @@
- 	/* DPAA2 has no software-visible indirection table: incoming packets are
- 	 * dispatched to FQs via 'queue_id = hash % dist_size'. We expose the
-diff --git a/drivers/net/intel/fm10k/fm10k_ethdev.c b/drivers/net/intel/fm10k/fm10k_ethdev.c
-index 3b2daba79e1..9b123c0b2c9 100644
---- a/drivers/net/intel/fm10k/fm10k_ethdev.c
-+++ b/drivers/net/intel/fm10k/fm10k_ethdev.c
-@@ -411,7 +411,6 @@ static int
+ 
+ 	dev_info->default_rxportconf.burst_size = dpaa2_dqrr_size;
+diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c
+index 7b490bea179..8fc2d48b414 100644
+--- a/drivers/net/fm10k/fm10k_ethdev.c
++++ b/drivers/net/fm10k/fm10k_ethdev.c
+@@ -410,7 +410,6 @@ static int
@@ -98 +98 @@
-@@ -425,11 +424,6 @@ fm10k_check_mq_mode(struct rte_eth_dev *dev)
+@@ -424,11 +423,6 @@ fm10k_check_mq_mode(struct rte_eth_dev *dev)
@@ -110 +110 @@
-@@ -1386,7 +1380,8 @@ fm10k_dev_infos_get(struct rte_eth_dev *dev,
+@@ -1380,7 +1374,8 @@ fm10k_dev_infos_get(struct rte_eth_dev *dev,
@@ -120,5 +120,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-index 1c9f22ffc31..5137663a616 100644
---- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-@@ -4000,10 +4000,6 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
+diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
+index 3415bc52227..6375a2784c5 100644
+--- a/drivers/net/ixgbe/ixgbe_ethdev.c
++++ b/drivers/net/ixgbe/ixgbe_ethdev.c
+@@ -4122,10 +4122,6 @@ ixgbevf_dev_info_get(struct rte_eth_dev *dev,
@@ -135,12 +134,0 @@
-diff --git a/drivers/net/ngbe/ngbe_ethdev_vf.c b/drivers/net/ngbe/ngbe_ethdev_vf.c
-index c440e02369d..55cbffaf2c8 100644
---- a/drivers/net/ngbe/ngbe_ethdev_vf.c
-+++ b/drivers/net/ngbe/ngbe_ethdev_vf.c
-@@ -475,7 +475,6 @@ ngbevf_dev_info_get(struct rte_eth_dev *dev,
- 	dev_info->max_mac_addrs = hw->mac.num_rar_entries;
- 	dev_info->max_hash_mac_addrs = NGBE_VMDQ_NUM_UC_MAC;
- 	dev_info->max_vfs = pci_dev->max_vfs;
--	dev_info->max_vmdq_pools = RTE_ETH_64_POOLS;
- 	dev_info->rx_queue_offload_capa = ngbe_get_rx_queue_offloads(dev);
- 	dev_info->rx_offload_capa = (ngbe_get_rx_port_offloads(dev) |
- 				     dev_info->rx_queue_offload_capa);
@@ -148 +136 @@
-index 341f62bc750..3cf33a8bd67 100644
+index 67e1dc696b2..a91474cacc8 100644
@@ -151 +139 @@
-@@ -575,7 +575,6 @@ txgbevf_dev_info_get(struct rte_eth_dev *dev,
+@@ -490,7 +490,6 @@ txgbevf_dev_info_get(struct rte_eth_dev *dev,


More information about the stable mailing list