[PATCH 3/8] drivers/net: remove check on VMDq modes

David Marchand david.marchand at redhat.com
Fri Oct 16 15:05:49 CEST 2026


ethdev now validates requests for VMDq Rx and Tx modes.
No need to validate again in the driver.

Note:
- for igb, max_vmdq_pools is already 0 for models that do not support
  VMDq, so checking the VMDq modes is unneeded,
- for i40e, the FW flag was already checked to populate max_vmdq_pools,

Signed-off-by: David Marchand <david.marchand at redhat.com>
---
 drivers/net/hns3/hns3_dcb.c          |  9 -------
 drivers/net/intel/e1000/igb_rxtx.c   | 39 ----------------------------
 drivers/net/intel/i40e/i40e_ethdev.c |  5 ----
 3 files changed, 53 deletions(-)

diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c
index 6d2945d9c5..e7912aebb2 100644
--- a/drivers/net/hns3/hns3_dcb.c
+++ b/drivers/net/hns3/hns3_dcb.c
@@ -1840,7 +1840,6 @@ int
 hns3_check_dev_mq_mode(struct rte_eth_dev *dev)
 {
 	enum rte_eth_rx_mq_mode rx_mq_mode = dev->data->dev_conf.rxmode.mq_mode;
-	enum rte_eth_tx_mq_mode tx_mq_mode = dev->data->dev_conf.txmode.mq_mode;
 	struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
 	struct rte_eth_dcb_rx_conf *dcb_rx_conf;
@@ -1849,14 +1848,6 @@ hns3_check_dev_mq_mode(struct rte_eth_dev *dev)
 	int max_tc = 0;
 	int i;
 
-	if (((uint32_t)rx_mq_mode & RTE_ETH_MQ_RX_VMDQ_FLAG) ||
-	    (tx_mq_mode == RTE_ETH_MQ_TX_VMDQ_DCB ||
-	     tx_mq_mode == RTE_ETH_MQ_TX_VMDQ_ONLY)) {
-		hns3_err(hw, "VMDQ is not supported, rx_mq_mode = %d, tx_mq_mode = %d.",
-			 rx_mq_mode, tx_mq_mode);
-		return -EOPNOTSUPP;
-	}
-
 	dcb_rx_conf = &dev->data->dev_conf.rx_adv_conf.dcb_rx_conf;
 	dcb_tx_conf = &dev->data->dev_conf.tx_adv_conf.dcb_tx_conf;
 	if ((uint32_t)rx_mq_mode & RTE_ETH_MQ_RX_DCB_FLAG) {
diff --git a/drivers/net/intel/e1000/igb_rxtx.c b/drivers/net/intel/e1000/igb_rxtx.c
index 4fda5d57a0..ef531f1cd4 100644
--- a/drivers/net/intel/e1000/igb_rxtx.c
+++ b/drivers/net/intel/e1000/igb_rxtx.c
@@ -2113,41 +2113,6 @@ igb_rss_configure(struct rte_eth_dev *dev)
 	igb_hw_rss_hash_set(hw, &rss_conf);
 }
 
-/*
- * Check if the mac type support VMDq or not.
- * Return 1 if it supports, otherwise, return 0.
- */
-static int
-igb_is_vmdq_supported(const struct rte_eth_dev *dev)
-{
-	const struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-
-	switch (hw->mac.type) {
-	case e1000_82576:
-	case e1000_82580:
-	case e1000_i350:
-		return 1;
-	case e1000_82540:
-	case e1000_82541:
-	case e1000_82542:
-	case e1000_82543:
-	case e1000_82544:
-	case e1000_82545:
-	case e1000_82546:
-	case e1000_82547:
-	case e1000_82571:
-	case e1000_82572:
-	case e1000_82573:
-	case e1000_82574:
-	case e1000_82583:
-	case e1000_i210:
-	case e1000_i211:
-	default:
-		PMD_INIT_LOG(ERR, "Cannot support VMDq feature");
-		return 0;
-	}
-}
-
 static int
 igb_vmdq_rx_hw_configure(struct rte_eth_dev *dev)
 {
@@ -2161,10 +2126,6 @@ igb_vmdq_rx_hw_configure(struct rte_eth_dev *dev)
 	hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
 	cfg = &dev->data->dev_conf.rx_adv_conf.vmdq_rx_conf;
 
-	/* Check if mac type can support VMDq, return value of 0 means NOT support */
-	if (igb_is_vmdq_supported(dev) == 0)
-		return -1;
-
 	igb_rss_disable(dev);
 
 	/* RCTL: enable VLAN filter */
diff --git a/drivers/net/intel/i40e/i40e_ethdev.c b/drivers/net/intel/i40e/i40e_ethdev.c
index 41d5586403..2405d9e119 100644
--- a/drivers/net/intel/i40e/i40e_ethdev.c
+++ b/drivers/net/intel/i40e/i40e_ethdev.c
@@ -6655,11 +6655,6 @@ i40e_vmdq_setup(struct rte_eth_dev *dev)
 	 */
 	i40e_pf_disable_irq0(hw);
 
-	if ((pf->flags & I40E_FLAG_VMDQ) == 0) {
-		PMD_INIT_LOG(ERR, "FW doesn't support VMDQ");
-		return -ENOTSUP;
-	}
-
 	conf_vsis = conf->rx_adv_conf.vmdq_rx_conf.nb_queue_pools;
 	if (conf_vsis > pf->max_nb_vmdq_vsi) {
 		PMD_INIT_LOG(ERR, "VMDQ config: %u, max support:%u",
-- 
2.54.0



More information about the dev mailing list