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 0E33A45B50; Wed, 16 Oct 2024 10:18:29 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EA2C9402EE; Wed, 16 Oct 2024 10:18:28 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2121.outbound.protection.outlook.com [40.107.220.121]) by mails.dpdk.org (Postfix) with ESMTP id C055A400D6; Wed, 16 Oct 2024 10:18:26 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KTbuKqqr6HmW5lt9IqdC5U0dPVh6J25uB8m9GHOtQcdlgT0ymjK312FQIVNe47RxsNmbKjzC73Ja9ZYdV9sumBbROPI8fivAfNkeD9wRw8IGSrysTicTxK162ldtIeCQZDDwOUog162p3y9quA9ugBjfgZZMXk1TVMGK44wzgBFSsOW1n6xeHiKGbB2M2EIhguC8h1GT2sYbjTkB4QJAofSwYJjJtyLkfazkrP8OEo4vzgfii6w5YAkzuH2YOsfU37oFrMhkECfqFA6ykPabBjxCCUvWhhD6i1AmxGQNl49JvvKQj2F3RfygvGdjwBTzTmLfyJWzDiIoLULAOD30QA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=dUimKpR4ymbHhrqeBtcZsImwtDZxClQ8RxzqYHZcsUg=; b=sPR0/NwLuqMdI4C4iuHXQgyQSggGH/OnbNpHC0AoWgukSklCmRy3jfs6xAsowptxPBwZ3iTKdf/5ZVkI/qCNa9otFy5zjY3IBITdpHyZxGAfTNVW7ljzvt5mePxOQNB1fRp37tSkwCxo/tIML6Ivy0ecKwFvBkpEug/vUifOqrQG1nWv5quxuqpp9ssu2FNqwtsC20cQdI4Ng6tAA7tcjf5FIfsF8g9w5lKfz5BBUh3bsVvlqgcw+J/Q/9fwU7TcLX0FEJw1QwVu8Hx8ph0Fj6vi6coJLhFtlWf1Rt43MdzykNZ4IWXQydqPHDxLrLZ+mgR0dvxNQPx5h7Ro5/0AVA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dUimKpR4ymbHhrqeBtcZsImwtDZxClQ8RxzqYHZcsUg=; b=jkitujng2GguSiT9zd6O8ic50JD68oi8ZEOJHrWwf5F9ROZpRex64+/Z1KHnBO9pvq0Zxgnb52/ZVl5ZSczkILNROGvPd/cjZXvvWEh6om/hBpgLRDY/KKMUJ2dPTv7vtHwA67I8w3IqkkqmKBlyWoRg6UN3ytkJ0A41eWmRNjI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by PH7PR13MB5596.namprd13.prod.outlook.com (2603:10b6:510:131::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8048.25; Wed, 16 Oct 2024 08:18:22 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%5]) with mapi id 15.20.8048.020; Wed, 16 Oct 2024 08:18:22 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , stable@dpdk.org, Chaoyong He , Peng Zhang Subject: [PATCH] net/nfp: fix RSS failed on VXLAN inner layer Date: Wed, 16 Oct 2024 16:17:59 +0800 Message-Id: <20241016081759.4005301-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SG2PR02CA0098.apcprd02.prod.outlook.com (2603:1096:4:92::14) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|PH7PR13MB5596:EE_ X-MS-Office365-Filtering-Correlation-Id: 12f54494-21fd-4306-51cc-08dcedbb1960 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?hs27p/xHsp+m2xn9YywXPRwLjElN/2k49t4laAfTs9n7fRu0D/lGdQSzawLM?= =?us-ascii?Q?uFQ+6t/ZK9opSm607tXxPlshSiaJeH9INCFJEMHLIRTxOzyaC08OkrlBO6tW?= =?us-ascii?Q?2+VF5OkGzq6+5LcuoRkKrDpDHlxJXPTp/+HCtqGU8a4G2UOf5Hm0t53HL1db?= =?us-ascii?Q?56CPkf1NlcZjlw9cRwl+c0Urr9BVRywCq5kPd84yiPerIzn819R4+tDmGk8l?= =?us-ascii?Q?oWsXauNw2ur5laAR2u3GRm6rU6Hl++rl85Z1Q8nbNr5/gO/Yvik5UwHh5voH?= =?us-ascii?Q?Kml9LrQjLYmWKuM99AW7pA7x/h99TYqt6zi9rCFr1JfaUSPsMDldaF4GNHlL?= =?us-ascii?Q?/4R9wVr2vc9Nv2HTlRiaqABMV1DiUyEy7OGNTZYv4YlS8wzEr8aJ2Qx2GNsQ?= =?us-ascii?Q?hiHBtzGZ9W5qnFaZNmqc7nDOgZSeFtdhQ4MiaXbww+NCaouHW8mA7pAT3dMs?= =?us-ascii?Q?m79jnx+9EnczhoX7ADTA0jTJqgG9Mw7uzF1F8Q+o4pojxy5Jt1WsFLALboZ/?= =?us-ascii?Q?X8LMh3VjWJ2bFHMyVfd5IH5+4ZeOplFa6daVDVswOMBI1Yn7v1gldyCoKMzR?= =?us-ascii?Q?OPxzyMRAHVrfem63TYqtCagWNis376ocxzWOPs42Tp5TZWFPu0hISDErAvLj?= =?us-ascii?Q?5TjKfoLf+Wlb52R9qjng0+8enUEjSQop9TWnCdsAR1yEp0uzCv0t0NY/FPuU?= =?us-ascii?Q?cGgA+yHiZPbOVsK89Rn8UbyJMdWCAppjdGR/gHKYSgINb/FrsTQ2vVzaTGdA?= =?us-ascii?Q?edtNh+D3vURVGt1r9/pcwXRyPkNXFLpi4Si7mEoFo2Le2/mOdzkcAp8NhshH?= =?us-ascii?Q?vfULk3KVnCRAKfn+s6ctYXM5AqkU8uCUdoQAqeJxSWIc+jW4fDPB/9aj7bdk?= =?us-ascii?Q?OQLS6N84Ep0Y9jW/QMhmxi5KhYvJIvnx4e/M95sy32NNScLAtiVJMGBIaTxX?= =?us-ascii?Q?/C7MimNtZgV928LwSciISh24Y5ra3oZ6ra42lr5t4QVexi5G5S3mq1FvyqMN?= =?us-ascii?Q?iUS4UvDx/znk22I3AC8dVZGHTT518DH+awjBQzaCa1slGXmmU0bQd1ZoDO0r?= =?us-ascii?Q?4IflOFYyNlqpCTeAfrZzWhsM4Tyib3RKCZrgJWjTU1z3jedGwVAcbfL+bFxF?= =?us-ascii?Q?PeZ1PfAp8T618E6nvMb1el+zG3a4nKUXLQBHkWIRSd4snmqEEJ0MP8ttjICO?= =?us-ascii?Q?0kVw2JFy9wxBg05ciU8cqEj0f1fXQNLAsLPyHzU0wP6sNAQIEpHi/1OFwA/H?= =?us-ascii?Q?HgelmErvfGATGcpJJuL9Gr7D1XFgqoiF9tAUcL9wcdospAKGi/ees9atgLb6?= =?us-ascii?Q?NYt6j3HxH0UPkBtmAwFh9v6d?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?87UJyHNDA6MUK3kgP8nVomC0hXXBFE02TYygC/9IPfHixBobbE6gV1d9X4XR?= =?us-ascii?Q?ORsxfx8e7lDE49wyH+elw66c6COizQ+dfuCDFC1t4dcQszTsxpj4dPk5rncC?= =?us-ascii?Q?yEsgQJ3p3ZZZi10nOyw1NRBHTzk1gXO0/wyRSwIOZiqY+pw2C4jt6rXIMMm0?= =?us-ascii?Q?ffAprpcCu9ZVbA3yO7xHn4YmKHfAQyVNBxlTOC+ghrPHXH+Oh7hjrcV4v3Aj?= =?us-ascii?Q?PEusqq9V9heaXnDm8On5DMhcx6KnIag8EDpy3BpM/pqNW/uDGCYTwt4pQqjJ?= =?us-ascii?Q?+VlaceC4svyqJJJ+9akD09YO2wcxCcFp1JY8eUkAGFoTbMIoyQWMSvUYib89?= =?us-ascii?Q?icQbt7/plJxxfztqp2oS+ZI1Qe/uxW+Dmx78fy4Ne1QIpGOyEJpVD75aUm+0?= =?us-ascii?Q?2WKKk2Z8w63BU17BFepy4BqHtrROgdxYSrE+SdSBz8Xl9N/5IEuHc9/SlrWF?= =?us-ascii?Q?sWUyi7ttYocpeBmbzuPne+sWsYT03bB6px7UTtljoIzgnm9Dryf9I8chNINu?= =?us-ascii?Q?pq6lzF3xjn9ZE4R7D0wJU5w1+kbV8kyD/cf7lREKDNyUG+9bXUX/KYmD3ED8?= =?us-ascii?Q?PlmM2PL58/MNt1pEjWiB5H3A/09h2U8piVgAUW1lAivHGXygrJtkuYJEXANr?= =?us-ascii?Q?tITj2EpTsdZkjuJVfnfEUyQUNEbbnYkJeG3dcsd/3e+S4i0bj9rphIusTOz6?= =?us-ascii?Q?Tqyr/LpTtqtFeMst2qC98XMOeY3wtSN7UBZsaQrVOPql3mQxavdCYVakiKob?= =?us-ascii?Q?OIxyvYRy+NmymdJcT0dQmZgxT8XSn0a+UCfb7gGYushgPzz3GIfyRaSUM3KR?= =?us-ascii?Q?AswfLYiD/qT/Os9WOHUGkUBhpyteDNon3qCFYQsra9a78p3ygTy9lLuG6c7P?= =?us-ascii?Q?naeH3qxfM58X+eA8eUuOQgvIpbHmR8mDyQja//1GAsR6PlWOpGbBxYRK9Y9H?= =?us-ascii?Q?FEbP/NTOr2l+qAnBWXh0XLrG3lfXI/aAbrQJgX+PVwtXONP1Qojh/npz4kKT?= =?us-ascii?Q?ctB4gotiFjD+LfDsDUvRVWSLTf7/nYvrbnS4nBEP6kJ+mA8Kr8go/yWNie07?= =?us-ascii?Q?Ib9b4NyoZCL2wwQpo+xdfE/OGBikmia1mLXetfsXqeVLVaDUXbfV84n+/wGm?= =?us-ascii?Q?tZcjl2kplQl6FDP/a3HzKWK2OvkEiWx7zKy1aKIuBB13mJ8a3CtgqEfzj8hC?= =?us-ascii?Q?metOl3H8I1AIprEWXYjAHdgMTlZWjGkEenx2PE0iI13lMudyjSRq1HXh91m+?= =?us-ascii?Q?jxF040iGH/6+Y9DJMvnMSJ5G8XNNQIe1/aAM0vjiRnemcO3IhnI1rClmkp7J?= =?us-ascii?Q?NRRXDN/L8pVxVqQ4BNggkf9YntiDW+lYBJmKVj/A5cQ5gL5NycelLJfuwvWN?= =?us-ascii?Q?UvoMMuTLzrDuLod+NUYROv1ajeo4HVcBu/vm6HdEhTrRe0YImPX2XvYBIvOr?= =?us-ascii?Q?iTFHMqD2gb/3gaOXYwShoEAm72r+ANLkS81pEcLe1DZUUgRYVZCQlI8cGN/5?= =?us-ascii?Q?DUuzi3OottmcYJncV4pztOaOg/KFJdvBSIdFsHu7bWDZGWT1IrfBrA3rWVSU?= =?us-ascii?Q?ykMcsd1vo4ldjIU3oxvA0DsAcxmy/jCIy0GKHwCUrYiSpGoMyQtP2ag/IC9q?= =?us-ascii?Q?qA=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12f54494-21fd-4306-51cc-08dcedbb1960 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2024 08:18:22.2053 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Mkk/iOutXT9oF5giMwykDMssqr6Lv+nVHwk3qU84Xbg24AqLIyWCQ4cAa/VenumsucFZTXo/mdKCFd+76d3mpPoDGT+nMzlT8bmVYCl1I7U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR13MB5596 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 From: Long Wu Before the commit 5126a904fae0 ("net/nfp: use offload flag to control VXLAN configuration"), in the initial logic 'nfp_net_start()' will enable the NFP_NET_CFG_CTRL_VXLAN flag if hardware has the capability, 'udp_tunnel_port_add()' and 'udp_tunnel_port_del()' just do the port add and delete action. But the commit 5126a904fae0 ("net/nfp: use offload flag to control VXLAN configuration") added another limitation of RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO over the VXLAN inner RSS flag of Tx wrongly, which caused the NFP_NET_CFG_CTRL_VXLAN cannot be enable, thus 'udp_tunnel_port_add()' and 'udp_tunnel_port_del()' can not done their works. This commit fix the problem and do a little of enhancement to the initial logic, move the logic of enable NFP_NET_CFG_CTRL_VXLAN into the 'udp_tunnel_port_add()', and add the logic of disable NFP_NET_CFG_CTRL_VXLAN into the 'udp_tunnel_port_del()', thus the whole solution more complete and easier to understand. Fixes: 5126a904fae0 ("net/nfp: use offload flag to control VXLAN configuration") Cc: stable@dpdk.org Signed-off-by: Long Wu Reviewed-by: Chaoyong He Reviewed-by: Peng Zhang --- drivers/net/nfp/nfp_ethdev.c | 47 ++++++++++++++++++-------------- drivers/net/nfp/nfp_net_common.c | 15 ++-------- drivers/net/nfp/nfp_net_common.h | 5 +++- 3 files changed, 34 insertions(+), 33 deletions(-) diff --git a/drivers/net/nfp/nfp_ethdev.c b/drivers/net/nfp/nfp_ethdev.c index b16fbe7db7..28161f5634 100644 --- a/drivers/net/nfp/nfp_ethdev.c +++ b/drivers/net/nfp/nfp_ethdev.c @@ -443,13 +443,6 @@ nfp_net_start(struct rte_eth_dev *dev) update |= NFP_NET_CFG_UPDATE_GEN | NFP_NET_CFG_UPDATE_RING; txmode = &dev->data->dev_conf.txmode; - /* Enable vxlan */ - if ((txmode->offloads & RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO) != 0) { - if ((hw->cap & NFP_NET_CFG_CTRL_VXLAN) != 0) { - new_ctrl |= NFP_NET_CFG_CTRL_VXLAN; - update |= NFP_NET_CFG_UPDATE_VXLAN; - } - } if ((hw->cap & NFP_NET_CFG_CTRL_RINGCFG) != 0) new_ctrl |= NFP_NET_CFG_CTRL_RINGCFG; @@ -854,11 +847,13 @@ nfp_udp_tunnel_port_add(struct rte_eth_dev *dev, { int ret; uint32_t idx; + uint32_t ctrl; + struct nfp_hw *hw; uint16_t vxlan_port; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; enum rte_eth_tunnel_type tnl_type; - hw = dev->data->dev_private; + net_hw = dev->data->dev_private; vxlan_port = tunnel_udp->udp_port; tnl_type = tunnel_udp->prot_type; @@ -867,21 +862,26 @@ nfp_udp_tunnel_port_add(struct rte_eth_dev *dev, return -ENOTSUP; } - ret = nfp_net_find_vxlan_idx(hw, vxlan_port, &idx); + ret = nfp_net_find_vxlan_idx(net_hw, vxlan_port, &idx); if (ret != 0) { PMD_DRV_LOG(ERR, "Failed find valid vxlan idx"); return -EINVAL; } - if (hw->vxlan_usecnt[idx] == 0) { - ret = nfp_net_set_vxlan_port(hw, idx, vxlan_port); + if (net_hw->vxlan_usecnt[idx] == 0) { + hw = &net_hw->super; + ctrl = hw->ctrl | NFP_NET_CFG_CTRL_VXLAN; + + ret = nfp_net_set_vxlan_port(net_hw, idx, vxlan_port, ctrl); if (ret != 0) { PMD_DRV_LOG(ERR, "Failed set vxlan port"); return -EINVAL; } + + hw->ctrl = ctrl; } - hw->vxlan_usecnt[idx]++; + net_hw->vxlan_usecnt[idx]++; return 0; } @@ -892,11 +892,13 @@ nfp_udp_tunnel_port_del(struct rte_eth_dev *dev, { int ret; uint32_t idx; + uint32_t ctrl; + struct nfp_hw *hw; uint16_t vxlan_port; - struct nfp_net_hw *hw; + struct nfp_net_hw *net_hw; enum rte_eth_tunnel_type tnl_type; - hw = dev->data->dev_private; + net_hw = dev->data->dev_private; vxlan_port = tunnel_udp->udp_port; tnl_type = tunnel_udp->prot_type; @@ -905,20 +907,25 @@ nfp_udp_tunnel_port_del(struct rte_eth_dev *dev, return -ENOTSUP; } - ret = nfp_net_find_vxlan_idx(hw, vxlan_port, &idx); - if (ret != 0 || hw->vxlan_usecnt[idx] == 0) { + ret = nfp_net_find_vxlan_idx(net_hw, vxlan_port, &idx); + if (ret != 0 || net_hw->vxlan_usecnt[idx] == 0) { PMD_DRV_LOG(ERR, "Failed find valid vxlan idx"); return -EINVAL; } - hw->vxlan_usecnt[idx]--; + net_hw->vxlan_usecnt[idx]--; - if (hw->vxlan_usecnt[idx] == 0) { - ret = nfp_net_set_vxlan_port(hw, idx, 0); + if (net_hw->vxlan_usecnt[idx] == 0) { + hw = &net_hw->super; + ctrl = hw->ctrl & ~NFP_NET_CFG_CTRL_VXLAN; + + ret = nfp_net_set_vxlan_port(net_hw, idx, 0, ctrl); if (ret != 0) { PMD_DRV_LOG(ERR, "Failed set vxlan port"); return -EINVAL; } + + hw->ctrl = ctrl; } return 0; diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c index f76d5a6895..3ded3956b7 100644 --- a/drivers/net/nfp/nfp_net_common.c +++ b/drivers/net/nfp/nfp_net_common.c @@ -2154,9 +2154,9 @@ nfp_net_close_tx_queue(struct rte_eth_dev *dev) int nfp_net_set_vxlan_port(struct nfp_net_hw *net_hw, size_t idx, - uint16_t port) + uint16_t port, + uint32_t ctrl) { - int ret; uint32_t i; struct nfp_hw *hw = &net_hw->super; @@ -2172,16 +2172,7 @@ nfp_net_set_vxlan_port(struct nfp_net_hw *net_hw, (net_hw->vxlan_ports[i + 1] << 16) | net_hw->vxlan_ports[i]); } - rte_spinlock_lock(&hw->reconfig_lock); - - nn_cfg_writel(hw, NFP_NET_CFG_UPDATE, NFP_NET_CFG_UPDATE_VXLAN); - rte_wmb(); - - ret = nfp_reconfig_real(hw, NFP_NET_CFG_UPDATE_VXLAN); - - rte_spinlock_unlock(&hw->reconfig_lock); - - return ret; + return nfp_reconfig(hw, ctrl, NFP_NET_CFG_UPDATE_VXLAN); } /* diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 6291a794b2..64b8a38918 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -345,7 +345,10 @@ void nfp_net_stop_rx_queue(struct rte_eth_dev *dev); void nfp_net_close_rx_queue(struct rte_eth_dev *dev); void nfp_net_stop_tx_queue(struct rte_eth_dev *dev); void nfp_net_close_tx_queue(struct rte_eth_dev *dev); -int nfp_net_set_vxlan_port(struct nfp_net_hw *hw, size_t idx, uint16_t port); +int nfp_net_set_vxlan_port(struct nfp_net_hw *hw, + size_t idx, + uint16_t port, + uint32_t ctrl); void nfp_net_rx_desc_limits(struct nfp_net_hw_priv *hw_priv, uint16_t *min_rx_desc, uint16_t *max_rx_desc); -- 2.39.1