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 A8CB846211 for ; Thu, 13 Feb 2025 11:00:20 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9EAAC42ECC; Thu, 13 Feb 2025 11:00:20 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 1692E42ED0 for ; Thu, 13 Feb 2025 11:00:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1739440818; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=JkkgzGfSZnt8U5uHHhmi5Iv8V3L3r1Y2uelzp1scnd0=; b=L0voy3jzNSX8LW2GWjiA7IbMabhBnBSF6Nqxz6ObOkeJ+rzNlF0mPCWEuvafl8noGHsXBp uYc1NtqMCtLS6tmlc8wi7Vck7K83TqUtFcQo2DhT1pEbwccvAFuOOExj3LZ3UEW75KPWXJ eqDiXmhb9HKSPs3TB03QIQZeUbJVRWQ= Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-103-d-AK-B4BPBy0hYnNz_KSiw-1; Thu, 13 Feb 2025 05:00:14 -0500 X-MC-Unique: d-AK-B4BPBy0hYnNz_KSiw-1 X-Mimecast-MFC-AGG-ID: d-AK-B4BPBy0hYnNz_KSiw_1739440814 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E41301801BC9; Thu, 13 Feb 2025 10:00:13 +0000 (UTC) Received: from rh.Home (unknown [10.45.224.21]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 60CA31800365; Thu, 13 Feb 2025 10:00:12 +0000 (UTC) From: Kevin Traynor To: Long Wu Cc: Chaoyong He , dpdk stable Subject: patch 'net/nfp: fix VF link speed' has been queued to stable release 24.11.2 Date: Thu, 13 Feb 2025 09:57:39 +0000 Message-ID: <20250213095933.362078-12-ktraynor@redhat.com> In-Reply-To: <20250213095933.362078-1-ktraynor@redhat.com> References: <20250213095933.362078-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: 1emEgsy95XQib6bF3J1cYpnOiJF96WU3m_HtQoSBb2Y_1739440814 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit content-type: text/plain; charset="US-ASCII"; x-default=true 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 24.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/17/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://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/054215a0333cf1a063155fb24b27bfc896868570 Thanks. Kevin --- >From 054215a0333cf1a063155fb24b27bfc896868570 Mon Sep 17 00:00:00 2001 From: Long Wu Date: Wed, 18 Dec 2024 14:52:55 +0800 Subject: [PATCH] net/nfp: fix VF link speed [ 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 ++++++++++++++ .../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(-) diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index 92887ce1be..21bf26b738 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -421,4 +421,6 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv, uint32_t port; uint32_t index; + uint16_t link_status; + struct rte_eth_dev *eth_dev; struct nfp_flower_representor *repr; struct nfp_flower_cmsg_port_mod *msg; @@ -457,4 +459,6 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv, 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; @@ -462,4 +466,14 @@ nfp_flower_cmsg_port_mod_rx(struct nfp_net_hw_priv *hw_priv, 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 'eth_dev' 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 4017f602a2..9601aa5f96 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -25,4 +25,19 @@ struct nfp_repr_init { }; +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) @@ -113,5 +128,5 @@ nfp_flower_repr_led_off(struct rte_eth_dev *dev) } -static int +int nfp_flower_repr_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete) @@ -126,5 +141,5 @@ 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); diff --git a/drivers/net/nfp/flower/nfp_flower_representor.h b/drivers/net/nfp/flower/nfp_flower_representor.h index 3f6ee32fe4..a7416eccab 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.h +++ b/drivers/net/nfp/flower/nfp_flower_representor.h @@ -33,4 +33,7 @@ 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); +int nfp_flower_repr_link_update(struct rte_eth_dev *dev, + __rte_unused int wait_to_complete); +bool nfp_flower_repr_is_pf(struct rte_eth_dev *dev); #endif /* __NFP_FLOWER_REPRESENTOR_H__ */ 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 @@ -160,4 +160,13 @@ static const uint32_t nfp_net_link_speed_nfp2rte[] = { }; +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) @@ -827,5 +836,5 @@ 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 -- 2.48.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2025-02-12 17:29:35.887269014 +0000 +++ 0012-net-nfp-fix-VF-link-speed.patch 2025-02-12 17:29:34.160944796 +0000 @@ -1 +1 @@ -From c43d2aab426bdc6e22142b4c5667d6d1634248de Mon Sep 17 00:00:00 2001 +From 054215a0333cf1a063155fb24b27bfc896868570 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit c43d2aab426bdc6e22142b4c5667d6d1634248de ] + @@ -16 +17,0 @@ -Cc: stable@dpdk.org