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 696C941D8F; Mon, 27 Feb 2023 10:58:25 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0CC9C40A7D; Mon, 27 Feb 2023 10:58:25 +0100 (CET) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) by mails.dpdk.org (Postfix) with ESMTP id A8B85400D5; Mon, 27 Feb 2023 10:58:23 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NQslpYhrcoZt7EMyB0P1lmu3tj089ERPzKY8a966smb2+FbcoSlUzYKluCzxLrHTKCqlN8X1+MJj8DisairBVUhA8c0kchUv8gnmDPsv2rCKRtsgUZXNhnnWQnr5osFjoCKm4vylyAKWH/c5Ks+4ExGTkanB/aVbZsAt6lZjjmW2eZug6LvO4rslo0IAPlnMpeYGmdKRj2TjqrGbbqvTwXkVWSXqHgEES/LcB7VZ30a/F0t15r5Y9x3nuBgPAt6Qdv1zugZ1h2l5PDKonFop5DxxMZ+ojMKlxlXYLIDQdC6jcRusbpqsby9h+rI9DY+H4cO1zxQnibWHCSmYs2VXZg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VoJcHOj08VpYerkmqos7Zs4oOWWcGwrxW/bx+NR3EKM=; b=GVeRtK5WLvFhWn+rDg5k05F+38iEkqahWzZsf/+JPgi7tNTMAr1CraNYphGVWqHgkMNrxFMlCyQuKovQNAIiBfln04ysGLaJC8mKuAZiNuTyu/TstdZ3zOQFH0b/O3FZPgQnXRa4tzWw8DsbNyOwPi4jJh2AgNJytrm3dGVlr0tHxzwI8DBilcxk1sb2Po1gPHuYYH2KC9W9xUsTVfAkHyuyKVxQRFij+XuA30TD5Y1jjMplFQB5HdJVPFCbQvtJ8yYfTMmddvDiY+lJKYgFYpZgeo5bo94iy65ydwDlHyjj2OffAI8qaO/uqaJ2kBhfBV6h5zWmXc+X0sjx5ATRGg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VoJcHOj08VpYerkmqos7Zs4oOWWcGwrxW/bx+NR3EKM=; b=yz8RpI05WbRikSdmGABGJSXx02R43g2qne8uGXCPLADGr/Gk8WK4KJz+AsECHjeFlMOXwHEMH3uL9Smi9b4OULCQ938Kld6ZXfPi9ei+wQxe2bJ7KLm5t5NUGOhAPE6bq3QEdjI/ZeNdOZ1QJ2MqQO1Sd8V0rJnF1KNQhVV1Ktw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) by SA0PR12MB7002.namprd12.prod.outlook.com (2603:10b6:806:2c0::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.25; Mon, 27 Feb 2023 09:58:21 +0000 Received: from CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::3614:22ed:ed5:5b48]) by CH2PR12MB4294.namprd12.prod.outlook.com ([fe80::3614:22ed:ed5:5b48%7]) with mapi id 15.20.6134.029; Mon, 27 Feb 2023 09:58:21 +0000 Message-ID: <2c47711f-55a5-a7e3-7643-9fb859fc3138@amd.com> Date: Mon, 27 Feb 2023 09:57:46 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Content-Language: en-US To: "lihuisong (C)" , 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 , dev@dpdk.org, stable@dpdk.org References: <20230223160437.3200160-1-ferruh.yigit@amd.com> <9bdb3559-c7e6-f82d-0154-1eba823d080d@huawei.com> From: Ferruh Yigit Subject: Re: [RFC PATCH] drivers/net: fix RSS multi-queue mode check In-Reply-To: <9bdb3559-c7e6-f82d-0154-1eba823d080d@huawei.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P123CA0230.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a6::19) To CH2PR12MB4294.namprd12.prod.outlook.com (2603:10b6:610:a9::11) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PR12MB4294:EE_|SA0PR12MB7002:EE_ X-MS-Office365-Filtering-Correlation-Id: c630811c-78b1-465b-a841-08db18a9282a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: RevPDC5I6qQEYvib1eBuDFCOoMP7axsEQkPd9o9Ys6yTablqNNUBQ+wXo1jUWzVTajtSEzVk+P8k2oVctFviSMQ/v5vpMdd3NpVCH+kG4m40EF/HC+24PqFu97rxr8TdP5DlHza6VhvAvDm6JV4CwH670p2RgufIKxKOdn1NFSEU1QJ/4E6iomwPOgpcpyorXBHbd3ZaGDwapVu8i9NGdlShvSSkgrIpSitEWzAnaJ7yshx6ft8cxid9c8p1xdXy6V1bY+Cm9wZbtLNo1sBshfQjFMX9SQfNUtjS9ZMAP7qiIW3Sbff6maO0NfIbHl/VJei04DA6zUHOLJvdMbV7nDq4dfwqooLVLblOlAthoB+QF638rkpE49RGqZLIXrkvjU/y82fuIPaws+6Q6ak0+6ohJ2Js8vWVXEmhpfSRMdHFZ6dhWkcfUbQxGWdz36YVv9oxMaeH6mFibekUNndtWE9WJwlEG6tcxL2CA7CHPYHLJrm1M9ZMJOECHtLbNNvlJQ01gGpiVCBV2gfoCYSJ3c263lOw4KqVO3H5qjO671KPAGYilqxefiqreXf5GTsitFVcFgCP7ruzwCFzA/JdZ4eClftJq4I4/tUoqCx/FH0KNtqHrCT7yGq477s0Y+0dmgAi9oOGu2BmTyt9WiPrhZ77zh2yUU+ey3pCVyyPmTsA0p+qv21dpVuoR7MvRI9SoVlRMWmWwUwhEvi4hNHwF69i05Zoo4CJEYKaPgckonBBcigOsMuFdM/LDlN3UImAaTAQQiwM9UvYTfRLAlSr0w== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CH2PR12MB4294.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(376002)(346002)(39860400002)(396003)(366004)(136003)(451199018)(38100700002)(83380400001)(31696002)(86362001)(921005)(7406005)(30864003)(5660300002)(2906002)(8936002)(36756003)(41300700001)(7416002)(44832011)(2616005)(186003)(6666004)(53546011)(26005)(6506007)(6512007)(316002)(8676002)(4326008)(6486002)(478600001)(66946007)(66476007)(66556008)(110136005)(66899018)(31686004)(21314003)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NTZoT1VJMnZzaUltZ083ZDJYcHhhMXdCRHRscEZzbnE0RW8rbVh4RHRzdDJX?= =?utf-8?B?c1VxaGw2TVRnOGFnSWZBNmpkNU1mUEVqTVJOSnFVK2lpN0NRdERnNVBlZ0FY?= =?utf-8?B?aHc2SlVJWWkyWHh0OXNlYnZGeTBMQzZsT1RIVU1melBpSmdnZkRUNTNwc04x?= =?utf-8?B?b3lSajE1enFGenpRWlA5bUJLWU1meWNKekZDbS81VnRMWHNlWjdoY3poMkd5?= =?utf-8?B?QVZwbXBtMFlhMEtKNkpIOSt5cnBGQyt5STR5c2FZUG9TT1dZcUhXeVRlM2JO?= =?utf-8?B?cWVLazQzZTFBVndHVW1NL1hUYmFwZ0ZkL0NMb3NFQzczUEw2alZDVExiMGVq?= =?utf-8?B?UzVMdU92OEU0T1NCa0VUNm1YbzB4Vmw3SlVKcExBR1VWWHdHN09sMGplRmNx?= =?utf-8?B?T0xBS3RWa2ZDUXhrT2NLb1AxL2kzTVJXalRqeDVPTjZEeHBPTDZZYUVLa094?= =?utf-8?B?Mi9ZY1p5elVRNlNVN0VkaUdjMlhESWlQSmtyWU42Wlp6cS8zcVVRQXNUbVE2?= =?utf-8?B?NlMrTzVEQnFUV21FbUh2U0dSVHVCOHNyd1VFV0JPbDRsMkw3ZEtoWjVicnE1?= =?utf-8?B?Mk81ZzJoZHNQQUFHTysxS0VRNnFZK1o4RTUybFRUdkRUenQvWFdYb3dUeTJO?= =?utf-8?B?T1VURGtMTEU0QzFRMWcwY0tTMmQ3QkNCNnNVcEIrQTROcnRwRTdsWnpXRFhO?= =?utf-8?B?L1IzZjJzdTNsOFI0eHdOMjduK2JBSWEremcxL2w4anFwN2VZK3lDbnlLUUVn?= =?utf-8?B?VGxLNEhRbXVhY2JuNlYzN1AyK0xDMG51R3BvRi9nVFBZZUNvOExJMnVzTkZD?= =?utf-8?B?Nkp4THZUK0ZjN1dNRTd2MUEwaDcyQkhjV2pNYnEzL0wxY2dsUEI5bWp2dTN3?= =?utf-8?B?ckM1aFp1ME9NYnRUVXNrdG9YekRtanNjTjVlQkdjTHRZVGp2U3RhMUdjWll6?= =?utf-8?B?WHdhTkplY0NMdERJSFJ3Wk11Vnk0SnZ1VkhPUWRBR3M0dTM4Y3RDZEt1aEpC?= =?utf-8?B?ZnZIWmFhVWhBRFZVczVFWlhqSDIrazR5Q28wWDNRRmpNN0dieGNDc0dJai85?= =?utf-8?B?STAwOHFrT2VtdFAvWk9CWVdPeUdFM3pXVFFMbExNaC9KeFovaktJcWFXWXhS?= =?utf-8?B?djlvQkt2VHBBSHBnMnlZcDA0YklGVWwrRWNicjlsRkVodjFobDN5dmRCVHh6?= =?utf-8?B?Y0podEtmOHRXRElRR0xXcjAyN3B3Q3BwbGQ5bWJhYVJPNGQzU0ZaWm1iTEtX?= =?utf-8?B?dWZ0cDRoREZhQ3c5QkV6VEpjT1o5OHZvRWVhUTlOVytTelFqNGhkM0dCZDRt?= =?utf-8?B?c3N1YnRqYTFGT0phVjJ4TkVFQTlkUUllWlVYMmsxQXVHZCt0ZGFVN0ZHSmlF?= =?utf-8?B?dlpkRUtRS0p2eFIrRndLNWFQQ2N2K09rSGhRS3ZzV3RIZ3pUc3pnWEx6NlJ0?= =?utf-8?B?U1BBM21wMTZrWWNFQ2hYdlR0UWN5b3d2ZmcxV2lVL1Z2TEp1VTBidjJlZE1s?= =?utf-8?B?d2Vyd3JSdjR2MjZBYXVTb2toeWN3Ym53NW9LalhVTWRHejN0ckZ6Tm1jLzFh?= =?utf-8?B?TVpZbERyOG1ZTmpUaElvaThpVG5raVFzL0JBZzlvZ2NvQjl2SjVSaVc2VjU4?= =?utf-8?B?cUUzeDh1L3JNdFFHcmhOeTNyOUJLRmpERGZNYVNmRU4vVmZuNzFneFdMMUlM?= =?utf-8?B?NnVrV3daR0Q2a0JtNkxvVDhpc2NYRmw2WEVvZ1hkTVZxa2JidlFCNTNYUDdW?= =?utf-8?B?a2dpRUxNVWkvbG8xYm11RmhTOEdFVlpjeXk3QzVuMExtWTVxODhueDZKZCtI?= =?utf-8?B?Z0tUcFhwblVJZi9UZExEMmdabzl4T3NpZkNFNG9jb2djQXY5R2JZMHY1RTBt?= =?utf-8?B?d2xpV0R2TmNtRHY3MjhvMVdOdnNMOWhKRktOOUYrakFQL3ExbDdweTFPdUNq?= =?utf-8?B?MmtlTkpHQWZYVmVNSWx5SDVuTE1TeDNlWlo4d2Q4MmhHVzZMUGZGcTlLSlVr?= =?utf-8?B?VzNkaXp4dUpyL2l0K0cxVTNCMWJwak9WUnFpb3MvN2RiYjB0NWJlK1NLVUtD?= =?utf-8?B?dTNKWG1CbU1lSHk3dFhNczF4R2lTczRBL2VPTXVqV25Sd0tuYlJUenZNOTk5?= =?utf-8?Q?3pxu8ecm/9+No83J18GSR+OK8?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c630811c-78b1-465b-a841-08db18a9282a X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB4294.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Feb 2023 09:58:20.7511 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: cvZn1nJrQ4e4ICvyZc4+AyHuMsbCMGI7oMc6oE3Iwf2upoQwPQS5w4thP4a5uEl9 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB7002 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 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. Overall I think it is not good idea to use enum items as masked values, but that seems done intentionally in the past: Commit 4bdefaade6d1 ("ethdev: VMDQ enhancements") 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)) {