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 2BEBB46532 for ; Tue, 8 Apr 2025 10:17:25 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1F12340A89; Tue, 8 Apr 2025 10:17:25 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2086.outbound.protection.outlook.com [40.107.93.86]) by mails.dpdk.org (Postfix) with ESMTP id 4610040A89 for ; Tue, 8 Apr 2025 10:17:23 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WevD4I1v1TT6zzm3ORlwMuElgVw39ptxlRgfeDmKPEdjvNQ5l3raKiFKCuxjaLHZ1MX7BwFZS0i545vYAJ2w0c+1RUDQzElNoC34RafKx78NNk6uWZ/k9BI7wj4LdgiAdmMNljq/zIwJ2Y6o04ZiHhy3hvrjAQYBO2LRLRUFY8qHD371gmeiBAru09nVMLX58S/KD4ebUAA7n+k/FtVyqA2O84xev05+v22GXJc4thBNTDqn9dhj0PinhfQKIWVc2v3JjiyuXXFU4RybNN+e/XDsACIL0IDNsViYFgDZtAhKX9lm4lfTkZaYoA5SKoKlgaJEgNggsJ87YB1fB+UfsA== 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=KpZ23TSxYntFbRxlSOb9eUcqS9Lad/AUXDwxpvDEfk8=; b=SkywEfK3IRnNA8NS+FmygN6Z1R4iexEmSfyuvfj8hc/gGo1PiBwhhB8OQA1wZ/WaJRFlXz7G6dyfm85WSw6nU1TSgp6ltWyKBwp/hX+yG58/werndyPsHmHHEMQ2e8mr7wzEaYVhxVMWE69URg0beS5Zjzcg1F+YX57N2kL3Eqxf4kQdAgUkSKMhiAZX7Vn1tyK5d5OKarIV+cUTq3TPAFFbCZUwPr+OIWs8XrgDvCwZwS8FRq6k4OPAlXeL3o5bt0OCYwhvfOZ/HPd7aCK8XgxwUQ2hZ6mhuSaTTWtnVCWS11/iZSQAfqUomdhmogWM7FoVOR/l9P9hNlp18/WK1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=corigine.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KpZ23TSxYntFbRxlSOb9eUcqS9Lad/AUXDwxpvDEfk8=; b=LZc7KhDZ7FHYb17afmoUL8On70ySKjUi1ZOx20SEVg3vArdsaaOLYXfWwidSEpT602fUG7/a0K5eeFbM9vh6ZBAo6iXIvSho5bHLpFN3BOfhdsetuy6X6Yx5qI2Zf+AQCV/4Lgez/KlrdWmDdzC9wPEA7IwmflueLpvlPeOlM6lRuPPJDlrzakebguO5+47Z5e02iEzwdrgEjoOX0LiyaF7a0D69W+WzigGCj60sEXuBfkxmVZmO2+1WKgBYAscbtqpt5m9/XqSZeZm6jleXdUOaocfGwE/v1o7HGSnbby/7C5wrJbfqYR4ZopR3XtWJZj2OQqXzRFGQuCYCbdGTpA== Received: from PH8PR05CA0004.namprd05.prod.outlook.com (2603:10b6:510:2cc::23) by DM4PR12MB6325.namprd12.prod.outlook.com (2603:10b6:8:a4::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.33; Tue, 8 Apr 2025 08:17:18 +0000 Received: from CY4PEPF0000EE3A.namprd03.prod.outlook.com (2603:10b6:510:2cc:cafe::48) by PH8PR05CA0004.outlook.office365.com (2603:10b6:510:2cc::23) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8632.11 via Frontend Transport; Tue, 8 Apr 2025 08:17:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by CY4PEPF0000EE3A.mail.protection.outlook.com (10.167.242.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8606.22 via Frontend Transport; Tue, 8 Apr 2025 08:17:17 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 8 Apr 2025 01:17:00 -0700 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.14; Tue, 8 Apr 2025 01:16:56 -0700 From: Xueming Li To: Long Wu CC: Xueming Li , Chaoyong He , dpdk stable Subject: patch 'net/nfp: fix VF link speed problem' has been queued to stable release 23.11.4 Date: Tue, 8 Apr 2025 16:16:24 +0800 Message-ID: <20250408081625.377877-3-xuemingl@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250408081625.377877-1-xuemingl@nvidia.com> References: <20250218123523.36836-1-xuemingl@nvidia.com> <20250408081625.377877-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000EE3A:EE_|DM4PR12MB6325:EE_ X-MS-Office365-Filtering-Correlation-Id: a52e3c8b-27a9-4db8-9d0a-08dd7675c6a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|82310400026|376014|36860700013|13003099007|7053199007; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?JtwYap9KKsxCY9I3bv2eRVxDpKxW13V6ePorG8RjPbGafCbiq+NCcN1Y9WFj?= =?us-ascii?Q?mi5Dsr8l9Xxa3Hw77lPUz8MXwaBdKWKV1N537s0hhV4RlzXf8owrb6dXYXnh?= =?us-ascii?Q?DqjepmKgJo7kuVCcUDIR2iWwmUYbZn262oECF3mhNLzE+XEiisT6bnjBMY+i?= =?us-ascii?Q?n3P6XYo9ARz6HwVngivBdgdrfWjX+7JNUOmaaKZ0wPuvJ11d8Luog+cRxaJ5?= =?us-ascii?Q?eo0YVk6zyYFNU+1eYuKoYzXD0H80g1F2DCJWQ5764Uo0BiLy51s6hn3QRp1r?= =?us-ascii?Q?17DVXGDQ93FFttgRJHVXgRzkZoAre3W9m+uv2+N3tsHiZvMvkL7YyZtpI8Uh?= =?us-ascii?Q?hvpkXO+1DOqTzYDcYmy7V6lQHAPtdg9SUXl5ZFepB6aOrYgROZgveridXBiv?= =?us-ascii?Q?EbqcJOLy2wwKwpO96ndTmBIo3pRWqOFs6PoZv1HP+tXQOyJ5ijsGdaY4gPpv?= =?us-ascii?Q?LN604eoQMMnBgVrmSb4sNzREWlhbqta/rY6vxG9IP2JHxdMDsCFfqLW/GCkI?= =?us-ascii?Q?hUj/7FK6mONxFtdIG0YM0CsWya+kly3RgjEs+iwupLKkm3yg9yteZ/bhWBEG?= =?us-ascii?Q?zbF+vL00M/4gKRyh5djAK660232UY70FqDMbkRooRB0naWrEGO1CD6J+ZLt7?= =?us-ascii?Q?uho9XynUM1E6zQstmZPYW1ZfIDU+13q7PzfU+wwsfZS1Hg1Ue7rCRdsVRHp6?= =?us-ascii?Q?LLoXCF2pwfq78G0rNwMD3r8+ZLvUgvpbYUiAcFZwUaRg2EYYUkOsp1zOSinI?= =?us-ascii?Q?DANRgIJlHhxACeyBQLOn3fjfnUWB0KJKYBsoQx7kEnYVzHzOwqGEf7S4hHNE?= =?us-ascii?Q?s4dR0i/E8ERwjbQR9Me7uxOE0f2CkBsV2lrboN7ZJnDbCRSInoyCJTALkZnW?= =?us-ascii?Q?7WTn+EMfLnMtkzw/B5iTOZOhK8gQaau2mxv5TP/WrdHn1z327CmJ029TWsT3?= =?us-ascii?Q?2u1cWnP7JUhYbNaLWqSw4scxlSTIKVRD246HXMoa/Yzd2znHUILbtsOt0Qly?= =?us-ascii?Q?XMeDlI2lO8AstIrouh+zZ6j0c6KaHCKa/8ihtB52T0lbIMwLBd4H31FSAQui?= =?us-ascii?Q?fgs/O5nLffUxdy5W6H7tBOBsZGh4K34j9VhLoZXjHka43+/FCiLMxTnnSOKV?= =?us-ascii?Q?FZzWJebl8Gwr85aGN/1kv8RygFco7mUkCdkEpS67Np1G6/1vL1BYLcDT+YeA?= =?us-ascii?Q?qE4PQkAulBETPeTFxSeRuVJTXjMyMUB4YM+3lvoKd1xLimQZC3NuK+AtjlLX?= =?us-ascii?Q?bmKWTvd5iofYYOcJSkm4ykbCrUWSoIxQ1yuQDpoqzONd904axaa77oDsg+TC?= =?us-ascii?Q?UHjh1rSFt6jD73+npPB8whpdpbjKpUzeu9IVXhQXxYEnuPlvRCfLPnDMWYDB?= =?us-ascii?Q?5XYDienzOuXf8p2Q2L869c3Kr7v5nIegOgY4BFekgiiI17ILJ0DTbPEK2/m2?= =?us-ascii?Q?U3pq51NjroXvt7vHlpLZV4eSV1R2IuEjpH9DTR2jKr1VZrAmY9RKHQpMkNNi?= =?us-ascii?Q?V/DRSHzzJ0w0lohNNaSZqzaV0f7dBrrfe7yMQtu/eaw+AejkyUCdlsAYoQ?= =?us-ascii?Q?=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(376014)(36860700013)(13003099007)(7053199007); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2025 08:17:17.1484 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a52e3c8b-27a9-4db8-9d0a-08dd7675c6a9 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000EE3A.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6325 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 23.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 04/10/25. 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://git.dpdk.org/dpdk-stable/log/?h=23.11-staging This queued commit can be viewed at: https://git.dpdk.org/dpdk-stable/commit/?h=23.11-staging&id=973f287b205f49b94aa117e1e0109dd3869a052e Thanks. Xueming Li --- >From 973f287b205f49b94aa117e1e0109dd3869a052e Mon Sep 17 00:00:00 2001 From: Long Wu Date: Mon, 24 Feb 2025 16:01:42 +0800 Subject: [PATCH] net/nfp: fix VF link speed problem Cc: Xueming Li [ upstream commit c43d2aab426bdc6e22142b4c5667d6d1634248de ] The previous logic does not update the 'rte_eth_device' link status when the port link status changed, which cause the firmware won't be notified by the PMD. Furthermore, the physical representor port should also notify firmware its current speed with multi-pf firmware. Fix these problems by modify the related logic, also add needed helper function at the same time. Fixes: eae7dadbe987 ("net/nfp: update link status reporting") Signed-off-by: Long Wu Reviewed-by: Chaoyong He --- drivers/net/nfp/flower/nfp_flower_ctrl.c | 14 ++++++++++++++ drivers/net/nfp/flower/nfp_flower_representor.c | 2 +- drivers/net/nfp/flower/nfp_flower_representor.h | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index 102daa3d70..574e4fa056 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -419,6 +419,8 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower, struct rte_mbuf *pkt_burst) { uint32_t port; + uint16_t link_status; + struct rte_eth_dev *eth_dev; struct nfp_flower_representor *repr; struct nfp_flower_cmsg_port_mod *msg; @@ -447,11 +449,23 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower, } repr->link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX; + + link_status = repr->link.link_status; if ((msg->info & NFP_FLOWER_CMSG_PORT_MOD_INFO_LINK) != 0) repr->link.link_status = RTE_ETH_LINK_UP; else repr->link.link_status = RTE_ETH_LINK_DOWN; + if (link_status != repr->link.link_status) { + eth_dev = rte_eth_dev_get_by_name(repr->name); + if (eth_dev == NULL) { + PMD_DRV_LOG(ERR, "Can not get ethernet device by name %s.", repr->name); + return -EINVAL; + } + + nfp_flower_repr_link_update(eth_dev, 0); + } + return 0; } diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index ada28d07c6..a86b6bb580 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -18,7 +18,7 @@ enum nfp_repr_type { NFP_REPR_TYPE_MAX, /*<< Number of representor types */ }; -static int +int nfp_flower_repr_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete) { diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h index 8053617562..ea912ddcd4 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.h +++ b/drivers/net/nfp/flower/nfp_flower_representor.h @@ -24,5 +24,7 @@ struct nfp_flower_representor { }; int nfp_flower_repr_create(struct nfp_app_fw_flower *app_fw_flower); +int nfp_flower_repr_link_update(struct rte_eth_dev *dev, + __rte_unused int wait_to_complete); #endif /* __NFP_FLOWER_REPRESENTOR_H__ */ -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-04-08 15:39:07.269372547 +0800 +++ 0047-net-nfp-fix-VF-link-speed-problem.patch 2025-04-08 15:39:06.056436539 +0800 @@ -1 +1 @@ -From c43d2aab426bdc6e22142b4c5667d6d1634248de Mon Sep 17 00:00:00 2001 +From 973f287b205f49b94aa117e1e0109dd3869a052e Mon Sep 17 00:00:00 2001 @@ -3,2 +3,5 @@ -Date: Wed, 18 Dec 2024 14:52:55 +0800 -Subject: [PATCH] net/nfp: fix VF link speed +Date: Mon, 24 Feb 2025 16:01:42 +0800 +Subject: [PATCH] net/nfp: fix VF link speed problem +Cc: Xueming Li + +[ upstream commit c43d2aab426bdc6e22142b4c5667d6d1634248de ] @@ -16 +18,0 @@ -Cc: stable@dpdk.org @@ -21,5 +23,4 @@ - drivers/net/nfp/flower/nfp_flower_ctrl.c | 14 ++++++++++++++ - .../net/nfp/flower/nfp_flower_representor.c | 19 +++++++++++++++++-- - .../net/nfp/flower/nfp_flower_representor.h | 3 +++ - drivers/net/nfp/nfp_net_common.c | 11 ++++++++++- - 4 files changed, 44 insertions(+), 3 deletions(-) + drivers/net/nfp/flower/nfp_flower_ctrl.c | 14 ++++++++++++++ + drivers/net/nfp/flower/nfp_flower_representor.c | 2 +- + drivers/net/nfp/flower/nfp_flower_representor.h | 2 ++ + 3 files changed, 17 insertions(+), 1 deletion(-) @@ -28 +29 @@ -index 92887ce1be..21bf26b738 100644 +index 102daa3d70..574e4fa056 100644 @@ -31 +32,2 @@ -@@ -420,6 +420,8 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv, +@@ -419,6 +419,8 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower, + struct rte_mbuf *pkt_burst) @@ -34 +35,0 @@ - uint32_t index; @@ -39,2 +40,2 @@ - struct nfp_app_fw_flower *app_fw_flower; -@@ -456,11 +458,23 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv, + +@@ -447,11 +449,23 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower, @@ -54 +55 @@ -+ PMD_DRV_LOG(ERR, "Can not get 'eth_dev' by name %s.", repr->name); ++ PMD_DRV_LOG(ERR, "Can not get ethernet device by name %s.", repr->name); @@ -65 +66 @@ -index 4017f602a2..9601aa5f96 100644 +index ada28d07c6..a86b6bb580 100644 @@ -68,2 +69,2 @@ -@@ -24,6 +24,21 @@ struct nfp_repr_init { - struct nfp_net_hw_priv *hw_priv; +@@ -18,7 +18,7 @@ enum nfp_repr_type { + NFP_REPR_TYPE_MAX, /*<< Number of representor types */ @@ -72,22 +72,0 @@ -+bool -+nfp_flower_repr_is_pf(struct rte_eth_dev *dev) -+{ -+ struct nfp_net_hw_priv *hw_priv; -+ struct nfp_flower_representor *repr; -+ -+ hw_priv = dev->process_private; -+ repr = dev->data->dev_private; -+ -+ if (hw_priv->pf_dev->multi_pf.enabled) -+ return repr->repr_type == NFP_REPR_TYPE_PHYS_PORT; -+ else -+ return repr->repr_type == NFP_REPR_TYPE_PF; -+} -+ - static int - nfp_repr_get_eeprom_len(struct rte_eth_dev *dev) - { -@@ -112,7 +127,7 @@ nfp_flower_repr_led_off(struct rte_eth_dev *dev) - return nfp_net_led_off(dev); - } - @@ -99,9 +77,0 @@ -@@ -125,7 +140,7 @@ nfp_flower_repr_link_update(struct rte_eth_dev *dev, - - ret = nfp_net_link_update_common(dev, link, link->link_status); - -- if (repr->repr_type == NFP_REPR_TYPE_PF) -+ if (nfp_flower_repr_is_pf(dev)) - nfp_net_notify_port_speed(repr->app_fw_flower->pf_hw, link); - - return ret; @@ -109 +79 @@ -index 3f6ee32fe4..a7416eccab 100644 +index 8053617562..ea912ddcd4 100644 @@ -112,4 +82,4 @@ -@@ -32,5 +32,8 @@ int nfp_flower_repr_create(struct nfp_app_fw_flower *app_fw_flower, - bool nfp_flower_repr_is_vf(struct nfp_flower_representor *repr); - bool nfp_flower_repr_is_phy(struct nfp_flower_representor *repr); - int nfp_flower_repr_stats_reset(struct rte_eth_dev *ethdev); +@@ -24,5 +24,7 @@ struct nfp_flower_representor { + }; + + int nfp_flower_repr_create(struct nfp_app_fw_flower *app_fw_flower); @@ -118 +87,0 @@ -+bool nfp_flower_repr_is_pf(struct rte_eth_dev *dev); @@ -121,29 +89,0 @@ -diff --git a/drivers/net/nfp/nfp_net_common.c b/drivers/net/nfp/nfp_net_common.c -index e68ce68229..aaa515bac2 100644 ---- a/drivers/net/nfp/nfp_net_common.c -+++ b/drivers/net/nfp/nfp_net_common.c -@@ -159,6 +159,15 @@ static const uint32_t nfp_net_link_speed_nfp2rte[] = { - [NFP_NET_CFG_STS_LINK_RATE_100G] = RTE_ETH_SPEED_NUM_100G, - }; - -+static bool -+nfp_net_is_pf(struct rte_eth_dev *dev) -+{ -+ if (rte_eth_dev_is_repr(dev)) -+ return nfp_flower_repr_is_pf(dev); -+ -+ return ((struct nfp_net_hw_priv *)dev->process_private)->is_pf; -+} -+ - static size_t - nfp_net_link_speed_rte2nfp(uint32_t speed) - { -@@ -826,7 +835,7 @@ nfp_net_link_update_common(struct rte_eth_dev *dev, - - hw_priv = dev->process_private; - if (link->link_status == RTE_ETH_LINK_UP) { -- if (hw_priv->is_pf) -+ if (nfp_net_is_pf(dev)) - nfp_net_pf_speed_update(dev, hw_priv, link); - else - nfp_net_vf_speed_update(link, link_status);