From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7E1B041D94; Tue, 28 Feb 2023 02:24:13 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 223A840DD8; Tue, 28 Feb 2023 02:24:13 +0100 (CET) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 094E840141; Tue, 28 Feb 2023 02:24:10 +0100 (CET) Received: from kwepemm600004.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4PQfjW715qzKq3S; Tue, 28 Feb 2023 09:22:07 +0800 (CST) Received: from [10.67.103.231] (10.67.103.231) by kwepemm600004.china.huawei.com (7.193.23.242) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Tue, 28 Feb 2023 09:24:04 +0800 Message-ID: Date: Tue, 28 Feb 2023 09:24:04 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: [RFC PATCH] drivers/net: fix RSS multi-queue mode check To: Ferruh Yigit , Ajit Khaparde , Somnath Kotur , Rahul Lakkireddy , Simei Su , Wenjun Wu , Marcin Wojtas , Michal Krawczyk , Shai Brandes , Evgeny Schemeilin , Igor Chauskin , John Daley , Hyong Youb Kim , Qi Zhang , Xiao Wang , Junfeng Guo , Ziyang Xuan , Xiaoyun Wang , Guoyang Zhou , Dongdong Liu , Yisen Zhuang , Yuying Zhang , Beilei Xing , Jingjing Wu , Qiming Yang , Shijith Thotton , Srisivasubramanian Srinivasan , Long Li , Chaoyong He , =?UTF-8?Q?Niklas_S=c3=b6derlund?= , Jiawen Wu , Rasesh Mody , Devendra Singh Rawat , Jerin Jacob , Maciej Czekaj , Jian Wang , Jochen Behrens , Andrew Rybchenko , Ferruh Yigit CC: Thomas Monjalon , , References: <20230223160437.3200160-1-ferruh.yigit@amd.com> <9bdb3559-c7e6-f82d-0154-1eba823d080d@huawei.com> <2c47711f-55a5-a7e3-7643-9fb859fc3138@amd.com> From: "lihuisong (C)" In-Reply-To: <2c47711f-55a5-a7e3-7643-9fb859fc3138@amd.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.67.103.231] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To kwepemm600004.china.huawei.com (7.193.23.242) X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 在 2023/2/27 17:57, Ferruh Yigit 写道: > On 2/27/2023 1:34 AM, lihuisong (C) wrote: >> 在 2023/2/24 0:04, Ferruh Yigit 写道: >>> 'rxmode.mq_mode' is an enum which should be an abstraction over values, >>> instead of mask it with 'RTE_ETH_MQ_RX_RSS_FLAG' to detect if RSS is >>> supported, directly compare with 'RTE_ETH_MQ_RX_RSS' enum element. >>> >>> Most of the time only 'RTE_ETH_MQ_RX_RSS' is requested by user, that is >>> why output is almost same, but there may be cases driver doesn't support >>> RSS combinations, like 'RTE_ETH_MQ_RX_VMDQ_DCB_RSS' but that is hidden >>> by masking with 'RTE_ETH_MQ_RX_RSS_FLAG'. >> Hi Ferruh, >> >> It seems that this fully changes the usage of the mq_mode. >> It will cause RSS, DCB and VMDQ function cannot work well. >> >> For example, >> Both user and driver enable RSS and DCB functions based on xxx_DCB_FLAG >> and xxx_RSS_FLAG in rxmode.mq_mode. >> If we directly compare with 'RTE_ETH_MQ_RX_RSS' enum element now, how do >> we enable RSS+DCB mode? >> > Hi Huisong, > > Technically 'RSS+DCB' mode can be set by user setting 'rxmode.mq_mode' > to 'RTE_ETH_MQ_RX_DCB_RSS' and PMD checking the same. This is not a good way to use. Because this has a greate impact for user and PMDs and will add cyclomatic complexity of PMD. > > Overall I think it is not good idea to use enum items as masked values, I agree what you do. It is better to change rxmode.mq_mode and txmode.mq_mode type from 'enum' to 'u32'. In this way, PMD code logic don't need to be modified and the impact on PMDs and user is minimal. What do you think? > but that seems done intentionally in the past: > Commit 4bdefaade6d1 ("ethdev: VMDQ enhancements") Seems it was. > > Since this can be in use already, following patch only changes where > 'RTE_ETH_RX_OFFLOAD_RSS_HASH' is set, rest of the usage remaining same. > > And even for 'RTE_ETH_RX_OFFLOAD_RSS_HASH', I think intention was to > override this offload config in PMD when explicitly RSS mode is enabled, > but I made the set as RFC to get feedback on this. We may keep as it is > if some other modes with 'RTE_ETH_MQ_RX_RSS_FLAG' uses this offload. > >>> Fixes: 73fb89dd6a00 ("drivers/net: fix RSS hash offload flag if no RSS") >>> Cc: stable@dpdk.org >>> >>> Signed-off-by: Ferruh Yigit >>> >>> --- >>> >>> There are more usage like "rxmode->mq_mode & RTE_ETH_MQ_RX_RSS_FLAG" in >>> drivers, not sure to fix all in this commit or not, feedback welcomed. >>> --- >>>   drivers/net/bnxt/bnxt_ethdev.c       | 2 +- >>>   drivers/net/cxgbe/cxgbe_ethdev.c     | 2 +- >>>   drivers/net/e1000/igb_ethdev.c       | 4 ++-- >>>   drivers/net/ena/ena_ethdev.c         | 2 +- >>>   drivers/net/enic/enic_ethdev.c       | 2 +- >>>   drivers/net/fm10k/fm10k_ethdev.c     | 2 +- >>>   drivers/net/gve/gve_ethdev.c         | 2 +- >>>   drivers/net/hinic/hinic_pmd_ethdev.c | 2 +- >>>   drivers/net/hns3/hns3_ethdev.c       | 2 +- >>>   drivers/net/hns3/hns3_ethdev_vf.c    | 2 +- >>>   drivers/net/i40e/i40e_ethdev.c       | 2 +- >>>   drivers/net/iavf/iavf_ethdev.c       | 2 +- >>>   drivers/net/ice/ice_dcf_ethdev.c     | 2 +- >>>   drivers/net/ice/ice_ethdev.c         | 2 +- >>>   drivers/net/igc/igc_ethdev.c         | 2 +- >>>   drivers/net/ixgbe/ixgbe_ethdev.c     | 4 ++-- >>>   drivers/net/liquidio/lio_ethdev.c    | 2 +- >>>   drivers/net/mana/mana.c              | 2 +- >>>   drivers/net/netvsc/hn_ethdev.c       | 2 +- >>>   drivers/net/nfp/nfp_common.c         | 2 +- >>>   drivers/net/ngbe/ngbe_ethdev.c       | 2 +- >>>   drivers/net/qede/qede_ethdev.c       | 2 +- >>>   drivers/net/thunderx/nicvf_ethdev.c  | 2 +- >>>   drivers/net/txgbe/txgbe_ethdev.c     | 2 +- >>>   drivers/net/txgbe/txgbe_ethdev_vf.c  | 2 +- >>>   drivers/net/vmxnet3/vmxnet3_ethdev.c | 2 +- >>>   26 files changed, 28 insertions(+), 28 deletions(-) >>> >>> diff --git a/drivers/net/bnxt/bnxt_ethdev.c >>> b/drivers/net/bnxt/bnxt_ethdev.c >>> index 753e86b4b2af..14c0d5f8c72b 100644 >>> --- a/drivers/net/bnxt/bnxt_ethdev.c >>> +++ b/drivers/net/bnxt/bnxt_ethdev.c >>> @@ -1143,7 +1143,7 @@ static int bnxt_dev_configure_op(struct >>> rte_eth_dev *eth_dev) >>>       bp->rx_cp_nr_rings = bp->rx_nr_rings; >>>       bp->tx_cp_nr_rings = bp->tx_nr_rings; >>>   -    if (eth_dev->data->dev_conf.rxmode.mq_mode & >>> RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (eth_dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           rx_offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>       eth_dev->data->dev_conf.rxmode.offloads = rx_offloads; >>>   diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c >>> b/drivers/net/cxgbe/cxgbe_ethdev.c >>> index 45bbeaef0ceb..0e9ccc0587ba 100644 >>> --- a/drivers/net/cxgbe/cxgbe_ethdev.c >>> +++ b/drivers/net/cxgbe/cxgbe_ethdev.c >>> @@ -440,7 +440,7 @@ int cxgbe_dev_configure(struct rte_eth_dev *eth_dev) >>>         CXGBE_FUNC_TRACE(); >>>   -    if (eth_dev->data->dev_conf.rxmode.mq_mode & >>> RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (eth_dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           eth_dev->data->dev_conf.rxmode.offloads |= >>>               RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>   diff --git a/drivers/net/e1000/igb_ethdev.c >>> b/drivers/net/e1000/igb_ethdev.c >>> index 8858f975f8cc..8e6b43c2ff2d 100644 >>> --- a/drivers/net/e1000/igb_ethdev.c >>> +++ b/drivers/net/e1000/igb_ethdev.c >>> @@ -1146,7 +1146,7 @@ eth_igb_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* multiple queue mode checking */ >>> @@ -3255,7 +3255,7 @@ igbvf_dev_configure(struct rte_eth_dev *dev) >>>       PMD_INIT_LOG(DEBUG, "Configured Virtual Function port id: %d", >>>                dev->data->port_id); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* >>> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c >>> index efcb163027c8..6929d7066fbd 100644 >>> --- a/drivers/net/ena/ena_ethdev.c >>> +++ b/drivers/net/ena/ena_ethdev.c >>> @@ -2307,7 +2307,7 @@ static int ena_dev_configure(struct rte_eth_dev >>> *dev) >>>         adapter->state = ENA_ADAPTER_STATE_CONFIG; >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>       dev->data->dev_conf.txmode.offloads |= >>> RTE_ETH_TX_OFFLOAD_MULTI_SEGS; >>>   diff --git a/drivers/net/enic/enic_ethdev.c >>> b/drivers/net/enic/enic_ethdev.c >>> index cdf091559196..f3a7bc161408 100644 >>> --- a/drivers/net/enic/enic_ethdev.c >>> +++ b/drivers/net/enic/enic_ethdev.c >>> @@ -323,7 +323,7 @@ static int enicpmd_dev_configure(struct >>> rte_eth_dev *eth_dev) >>>           return ret; >>>       } >>>   -    if (eth_dev->data->dev_conf.rxmode.mq_mode & >>> RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (eth_dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           eth_dev->data->dev_conf.rxmode.offloads |= >>>               RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>   diff --git a/drivers/net/fm10k/fm10k_ethdev.c >>> b/drivers/net/fm10k/fm10k_ethdev.c >>> index 8b83063f0a2d..49d7849ba5ea 100644 >>> --- a/drivers/net/fm10k/fm10k_ethdev.c >>> +++ b/drivers/net/fm10k/fm10k_ethdev.c >>> @@ -450,7 +450,7 @@ fm10k_dev_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* multiple queue mode checking */ >>> diff --git a/drivers/net/gve/gve_ethdev.c b/drivers/net/gve/gve_ethdev.c >>> index cf28a4a3b710..f34755a369fb 100644 >>> --- a/drivers/net/gve/gve_ethdev.c >>> +++ b/drivers/net/gve/gve_ethdev.c >>> @@ -92,7 +92,7 @@ gve_dev_configure(struct rte_eth_dev *dev) >>>   { >>>       struct gve_priv *priv = dev->data->dev_private; >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         if (dev->data->dev_conf.rxmode.offloads & >>> RTE_ETH_RX_OFFLOAD_TCP_LRO) >>> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c >>> b/drivers/net/hinic/hinic_pmd_ethdev.c >>> index 7aa5e7d8e929..872ee97b1e97 100644 >>> --- a/drivers/net/hinic/hinic_pmd_ethdev.c >>> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c >>> @@ -311,7 +311,7 @@ static int hinic_dev_configure(struct rte_eth_dev >>> *dev) >>>           return -EINVAL; >>>       } >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* mtu size is 256~9600 */ >>> diff --git a/drivers/net/hns3/hns3_ethdev.c >>> b/drivers/net/hns3/hns3_ethdev.c >>> index 6babf67fcec2..fd3e499a3d38 100644 >>> --- a/drivers/net/hns3/hns3_ethdev.c >>> +++ b/drivers/net/hns3/hns3_ethdev.c >>> @@ -2016,7 +2016,7 @@ hns3_dev_configure(struct rte_eth_dev *dev) >>>               goto cfg_err; >>>       } >>>   -    if ((uint32_t)mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) { >>> +    if (mq_mode == RTE_ETH_MQ_RX_RSS) { >>>           conf->rxmode.offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>           rss_conf = conf->rx_adv_conf.rss_conf; >>>           ret = hns3_dev_rss_hash_update(dev, &rss_conf); >>> diff --git a/drivers/net/hns3/hns3_ethdev_vf.c >>> b/drivers/net/hns3/hns3_ethdev_vf.c >>> index d051a1357b9f..00eb22d05558 100644 >>> --- a/drivers/net/hns3/hns3_ethdev_vf.c >>> +++ b/drivers/net/hns3/hns3_ethdev_vf.c >>> @@ -494,7 +494,7 @@ hns3vf_dev_configure(struct rte_eth_dev *dev) >>>       } >>>         /* When RSS is not configured, redirect the packet queue 0 */ >>> -    if ((uint32_t)mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) { >>> +    if (mq_mode == RTE_ETH_MQ_RX_RSS) { >>>           conf->rxmode.offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>           rss_conf = conf->rx_adv_conf.rss_conf; >>>           ret = hns3_dev_rss_hash_update(dev, &rss_conf); >>> diff --git a/drivers/net/i40e/i40e_ethdev.c >>> b/drivers/net/i40e/i40e_ethdev.c >>> index 7726a89d99fb..3c3dbc285c96 100644 >>> --- a/drivers/net/i40e/i40e_ethdev.c >>> +++ b/drivers/net/i40e/i40e_ethdev.c >>> @@ -1884,7 +1884,7 @@ i40e_dev_configure(struct rte_eth_dev *dev) >>>       ad->tx_simple_allowed = true; >>>       ad->tx_vec_allowed = true; >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         ret = i40e_dev_init_vlan(dev); >>> diff --git a/drivers/net/iavf/iavf_ethdev.c >>> b/drivers/net/iavf/iavf_ethdev.c >>> index 3196210f2c1d..39860c08b606 100644 >>> --- a/drivers/net/iavf/iavf_ethdev.c >>> +++ b/drivers/net/iavf/iavf_ethdev.c >>> @@ -638,7 +638,7 @@ iavf_dev_configure(struct rte_eth_dev *dev) >>>       ad->rx_vec_allowed = true; >>>       ad->tx_vec_allowed = true; >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* Large VF setting */ >>> diff --git a/drivers/net/ice/ice_dcf_ethdev.c >>> b/drivers/net/ice/ice_dcf_ethdev.c >>> index dcbf2af5b039..f61a30716e5e 100644 >>> --- a/drivers/net/ice/ice_dcf_ethdev.c >>> +++ b/drivers/net/ice/ice_dcf_ethdev.c >>> @@ -711,7 +711,7 @@ ice_dcf_dev_configure(struct rte_eth_dev *dev) >>>       ad->rx_bulk_alloc_allowed = true; >>>       ad->tx_simple_allowed = true; >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         return 0; >>> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c >>> index 0d011bbffa77..96595fd7afaf 100644 >>> --- a/drivers/net/ice/ice_ethdev.c >>> +++ b/drivers/net/ice/ice_ethdev.c >>> @@ -3403,7 +3403,7 @@ ice_dev_configure(struct rte_eth_dev *dev) >>>       ad->rx_bulk_alloc_allowed = true; >>>       ad->tx_simple_allowed = true; >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         if (dev->data->nb_rx_queues) { >>> diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c >>> index fab2ab6d1ce7..49f2b3738b84 100644 >>> --- a/drivers/net/igc/igc_ethdev.c >>> +++ b/drivers/net/igc/igc_ethdev.c >>> @@ -375,7 +375,7 @@ eth_igc_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         ret  = igc_check_mq_mode(dev); >>> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c >>> b/drivers/net/ixgbe/ixgbe_ethdev.c >>> index 88118bc30560..328ccf918e86 100644 >>> --- a/drivers/net/ixgbe/ixgbe_ethdev.c >>> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c >>> @@ -2431,7 +2431,7 @@ ixgbe_dev_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* multiple queue mode checking */ >>> @@ -5321,7 +5321,7 @@ ixgbevf_dev_configure(struct rte_eth_dev *dev) >>>       PMD_INIT_LOG(DEBUG, "Configured Virtual Function port id: %d", >>>                dev->data->port_id); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* >>> diff --git a/drivers/net/liquidio/lio_ethdev.c >>> b/drivers/net/liquidio/lio_ethdev.c >>> index ebcfbb1a5c0f..07fbaeda1ee6 100644 >>> --- a/drivers/net/liquidio/lio_ethdev.c >>> +++ b/drivers/net/liquidio/lio_ethdev.c >>> @@ -1722,7 +1722,7 @@ lio_dev_configure(struct rte_eth_dev *eth_dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (eth_dev->data->dev_conf.rxmode.mq_mode & >>> RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (eth_dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           eth_dev->data->dev_conf.rxmode.offloads |= >>>               RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>   diff --git a/drivers/net/mana/mana.c b/drivers/net/mana/mana.c >>> index 43221e743e87..76de691a8252 100644 >>> --- a/drivers/net/mana/mana.c >>> +++ b/drivers/net/mana/mana.c >>> @@ -78,7 +78,7 @@ mana_dev_configure(struct rte_eth_dev *dev) >>>       struct mana_priv *priv = dev->data->dev_private; >>>       struct rte_eth_conf *dev_conf = &dev->data->dev_conf; >>>   -    if (dev_conf->rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev_conf->rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev_conf->rxmode.offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         if (dev->data->nb_rx_queues != dev->data->nb_tx_queues) { >>> diff --git a/drivers/net/netvsc/hn_ethdev.c >>> b/drivers/net/netvsc/hn_ethdev.c >>> index d0bbc0a4c0c0..4950b061799c 100644 >>> --- a/drivers/net/netvsc/hn_ethdev.c >>> +++ b/drivers/net/netvsc/hn_ethdev.c >>> @@ -721,7 +721,7 @@ static int hn_dev_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev_conf->rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev_conf->rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev_conf->rxmode.offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         unsupported = txmode->offloads & ~HN_TX_OFFLOAD_CAPS; >>> diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c >>> index 907777a9e44d..a774fad3fba2 100644 >>> --- a/drivers/net/nfp/nfp_common.c >>> +++ b/drivers/net/nfp/nfp_common.c >>> @@ -161,7 +161,7 @@ nfp_net_configure(struct rte_eth_dev *dev) >>>       rxmode = &dev_conf->rxmode; >>>       txmode = &dev_conf->txmode; >>>   -    if (rxmode->mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (rxmode->mq_mode == RTE_ETH_MQ_RX_RSS) >>>           rxmode->offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* Checking TX mode */ >>> diff --git a/drivers/net/ngbe/ngbe_ethdev.c >>> b/drivers/net/ngbe/ngbe_ethdev.c >>> index c32d954769b0..5b53781c4aaf 100644 >>> --- a/drivers/net/ngbe/ngbe_ethdev.c >>> +++ b/drivers/net/ngbe/ngbe_ethdev.c >>> @@ -918,7 +918,7 @@ ngbe_dev_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* set flag to update link status after init */ >>> diff --git a/drivers/net/qede/qede_ethdev.c >>> b/drivers/net/qede/qede_ethdev.c >>> index a4923670d6ba..11ddd8abf16a 100644 >>> --- a/drivers/net/qede/qede_ethdev.c >>> +++ b/drivers/net/qede/qede_ethdev.c >>> @@ -1272,7 +1272,7 @@ static int qede_dev_configure(struct rte_eth_dev >>> *eth_dev) >>>         PMD_INIT_FUNC_TRACE(edev); >>>   -    if (rxmode->mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (rxmode->mq_mode == RTE_ETH_MQ_RX_RSS) >>>           rxmode->offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* We need to have min 1 RX queue.There is no min check in >>> diff --git a/drivers/net/thunderx/nicvf_ethdev.c >>> b/drivers/net/thunderx/nicvf_ethdev.c >>> index ab1e714d9767..b9cd09332510 100644 >>> --- a/drivers/net/thunderx/nicvf_ethdev.c >>> +++ b/drivers/net/thunderx/nicvf_ethdev.c >>> @@ -1984,7 +1984,7 @@ nicvf_dev_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (rxmode->mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (rxmode->mq_mode == RTE_ETH_MQ_RX_RSS) >>>           rxmode->offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         if (!rte_eal_has_hugepages()) { >>> diff --git a/drivers/net/txgbe/txgbe_ethdev.c >>> b/drivers/net/txgbe/txgbe_ethdev.c >>> index a502618bc5a2..08ad5a087e23 100644 >>> --- a/drivers/net/txgbe/txgbe_ethdev.c >>> +++ b/drivers/net/txgbe/txgbe_ethdev.c >>> @@ -1508,7 +1508,7 @@ txgbe_dev_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* multiple queue mode checking */ >>> diff --git a/drivers/net/txgbe/txgbe_ethdev_vf.c >>> b/drivers/net/txgbe/txgbe_ethdev_vf.c >>> index 3b1f7c913b7b..02a59fc696e5 100644 >>> --- a/drivers/net/txgbe/txgbe_ethdev_vf.c >>> +++ b/drivers/net/txgbe/txgbe_ethdev_vf.c >>> @@ -577,7 +577,7 @@ txgbevf_dev_configure(struct rte_eth_dev *dev) >>>       PMD_INIT_LOG(DEBUG, "Configured Virtual Function port id: %d", >>>                dev->data->port_id); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         /* >>> diff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c >>> b/drivers/net/vmxnet3/vmxnet3_ethdev.c >>> index fd946dec5c80..8efde46ae0ad 100644 >>> --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c >>> +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c >>> @@ -531,7 +531,7 @@ vmxnet3_dev_configure(struct rte_eth_dev *dev) >>>         PMD_INIT_FUNC_TRACE(); >>>   -    if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG) >>> +    if (dev->data->dev_conf.rxmode.mq_mode == RTE_ETH_MQ_RX_RSS) >>>           dev->data->dev_conf.rxmode.offloads |= >>> RTE_ETH_RX_OFFLOAD_RSS_HASH; >>>         if (!VMXNET3_VERSION_GE_6(hw)) { > .