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 617EF42CBF; Thu, 15 Jun 2023 05:28:09 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4127142D75; Thu, 15 Jun 2023 05:28:09 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2117.outbound.protection.outlook.com [40.107.244.117]) by mails.dpdk.org (Postfix) with ESMTP id 6113C40DDA for ; Thu, 15 Jun 2023 05:28:07 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h6X4piX966IoLMvmedWOMxx18GGZu9jOg8Wpa4w+1I4wBD46uvzrkcPmcSbHSnFi14JfprYo8/9/3iQZjRvKRD6463dVUUBLeG3KOyW1071++CNWXulK9eEqnANCHNw5p5fIS6IBM88O5jiNaZsB/MK9NHwXBMApMBp9XY4/Nmk5kIKjT+hyEJHosYXuaZ4cB/B++jjUO9kZg/0Br/P8NgxkTac0PYa5nz1kJws578M7pwvfdVRLfkdLFzMQys+vHF3ullZsurHtfwOOBDyq9qA2YAdrLStHNTVKAsRS8DfoFFbNc/a3i8yrJujaGXdfACA1hwP5afDjJhlhb31Oww== 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=/o2ZxmogQcza1hLItGbfLzkv0fKtOB5ObosuT7hH0Jc=; b=cf8QKrvzv7XGwciBN9drinqGxx6LOd6antaCJzXXJWS8cMevkoTKs1xXnuUzqmUAenV45T8x1dp9oOu57O1PO6Bu2pp+5u0dtLTPRIDEUCi6TmXWHfcVHJtbw41ikB3eWK37bG9YVWQs4kBqpAnVjRnNa6yAqqi7j8SOdK6fm/MKQegskyPBJw+C0xgShJHSUvr4OCqxMAzeWSvytNVUXGbRvg75YbsEQo7lzbzaiLLAGb5I8Ry7ImfL/6pXOWt4BZ9xDJqdwM0sFpnqbRt9ETtPKc8pjDK1MJjTTimQOtLcM0ZFj5wYKSN3twyVrGAHuF6GDKUJBi0jzkeQjQ+0sA== 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=/o2ZxmogQcza1hLItGbfLzkv0fKtOB5ObosuT7hH0Jc=; b=lWoSo2IxSZKEAZ5MFAs++qrqmJYMzeylQgfdzINgusfE60Konk/tbPtiXUiJUxleQorjXZPiq3azK3lx28chAAUY4jK00nHA1vYyNt56fYHMDRmszICft7evxw3ZgW/edP+g/6hX6bgDoOqvBUE/K22wNqtbUd2P7av42eDMY28= 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 MN2PR13MB3696.namprd13.prod.outlook.com (2603:10b6:208:1e0::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6500.25; Thu, 15 Jun 2023 03:28:03 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::d2cb:a650:e1ce:2174%3]) with mapi id 15.20.6455.045; Thu, 15 Jun 2023 03:28:03 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, James Hershaw , Long Wu , Chaoyong He Subject: [PATCH] net/nfp: changes to link status reporting Date: Thu, 15 Jun 2023 11:27:40 +0800 Message-Id: <20230615032740.1247408-1-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: BYAPR02CA0044.namprd02.prod.outlook.com (2603:10b6:a03:54::21) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|MN2PR13MB3696:EE_ X-MS-Office365-Filtering-Correlation-Id: c3b8a10b-92cf-4f85-e0bd-08db6d5086b1 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: m9WTqAyonqK/AoYFZoNgVs5qJmnq2Nm229CqUyEfq9GIvDEhWtWgJLsEFMVkX+o1AY523oxoVBMMU8P3IhdevcuS2CXI6EJC299rGj+JyMvVxuXVPYZ2zPAIly+3xEJjzYDtAM60WFhq/eaG4m+5E3h1RhWds8dVxpYE4r0ciccRruE0eHuyZmE2dfuAweXWZ8PuNV5119p+ieuI8nOEqyGxoOmt6rP44FHualmnGCEbEcoBCxy9aN6XR2aNKBDppKVmIknftt55QhIChBn2bp31I0Bz7jXLR3ptw6050F3nm++YLikoZuVYvIxwemP0usuai/lqcPy7GQz2bnjaK24oCfY03/ous06oERM8jKC1k2aT6jDrOD1R2fP7USvsYsUsLaxryNbJNVbvaJ2AMp/4WpgFvRIunWFxZoqFhmrD4IWsraPEdsonNqc06mKks2ClbZYegBmteQSTQfhB/NgouanXzSe4GyIcPuOII50vG2tXKCx23P78bm8IqhEZh21c47icGSMtAMNV8kfbZvLWThY76gyrcTn27/NliW0BqCXyfcLaZeYaU581Tk/vP3kFM2LRwmj5lxB+5v/ZgmE1hpBSzCG/Lh8lUAHQQ2szypDY/Bl7LiJdhCjZvjtWWL16of4NhTY8nZWFv1dSxZKKOW/2bDUgKFXlEMN8brk= 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:(13230028)(4636009)(136003)(346002)(396003)(376002)(366004)(39840400004)(451199021)(107886003)(1076003)(6512007)(6506007)(26005)(36756003)(186003)(478600001)(6666004)(52116002)(6486002)(2906002)(316002)(41300700001)(8936002)(44832011)(86362001)(8676002)(5660300002)(38100700002)(38350700002)(54906003)(83380400001)(66574015)(66899021)(2616005)(6916009)(4326008)(66476007)(66556008)(66946007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?QXFYcEFHdGZkSWthWGRwcjhyNUYvdzZmcklBdllEV080RWQ3UjBmbEp0aEpM?= =?utf-8?B?b3pmRW8rTFlKMUhVK3NadGcwNko0aFRTQVZ1R0ZXZFFwMXpvOWV4bFN1UDI3?= =?utf-8?B?UUxVdG40Qm8zeTZ0anMrRHgzamZGT0Q5aTExeW9qSEUvNnJZbGFZcjlhTUx3?= =?utf-8?B?akN4VVB5WElsYy8ySHl4LzZNR09xdVBpY2x2N0VjL3RmTWFLaDE1S21lc0NB?= =?utf-8?B?TTYwODQwZVhzaUQ3Qzkwc29NWVFJWC9pVTNNNm5FWnUvWGxvUWFRUlpTOW56?= =?utf-8?B?eVNVSEFNM0EvZXhOQnB2R0RoOTR5QUJNbS9ZWHNOVEEzL0pkN2JmMXRsRElM?= =?utf-8?B?WjlTZFY1c3k2QjFPRWRTdGdKWWtRMm11V0h1VDVxaDNDN1Q0TDNRd0FtUndF?= =?utf-8?B?MEtzbTFoaVlEQzZheDlYZnd4YjJCL1Y1OGgwVGZpQlF1RlNNeXd0Vm1rNVU0?= =?utf-8?B?SksvM2R5K2liU0s1bzdkd2xIelM5aTNQOEhlNUNFcEZ5MjhyTFBIWm1NMW5Z?= =?utf-8?B?eGk1VkVLT1JiK28rYTV5eUlTcG80cm9EOHVxS1VUcm95NGlISjN0L3B5RUFJ?= =?utf-8?B?TkRVNHdjTlpvQWUzbkFVZ1ZaRHF2Q0twNDNPdEs0RVJPY29mazVFNVJrZU9z?= =?utf-8?B?MCtWYVNNSW4wOERVZnBTeENlYnpnSmtsd2tmcWZmbEtuU0JobGswdFNPQVFa?= =?utf-8?B?cWFvZlZ0NHBSeWlmTkZCRjdCYjBHSitnUEZvSXY3SWQxYzMvVWVRT1NEbU0r?= =?utf-8?B?U2hnUms1VlRlTk5RM1gxNFN0dzg4eXo2T2JPVUZZdnAwbUpPcHpLQXRENm9R?= =?utf-8?B?T284UTFXR3I4QWY4RDV1eHRNdmlGeGV0L2FWd2ZROU9URzJCYnlWUTlCRmts?= =?utf-8?B?MzFONWRxRkdlOGVZaDNSaWJ6ajVjbStZREJMR2xaTTZHTnlXYVhyRlc4YVE5?= =?utf-8?B?YVQxejIrUEhLTmhtUU0yYlRlcGs2OXpUWDdDc3F5Z0dlUGVoTW5STi9qVzZE?= =?utf-8?B?M3VaSm16Rm84NE9DQ1RzVWlPcEF6OEpSSWVJT3ptRDZyZHc0SFR4NFJxRHZv?= =?utf-8?B?eVJLUUhMMFpuWDQzbFZmWHBuOGdyS2N5UGFUSGFzcmRHL3B2bWhOVDY0dDdn?= =?utf-8?B?SFRLRTgzS3Y2TU1GTHJseEFvSnI0KzFGTjNmdys3WmdXMTZySnhpckxweU5E?= =?utf-8?B?aGhDRU1lZU9TS1Y1ZkV3V0pSWXZlcVQ1eHZlN3BqZyswajg2MkZoQW1DQTl0?= =?utf-8?B?RE1kcFZZQ2o5VDBTMkFQRUVHS3dlUWFoSVN1TnRzUllsRWc2ZDlTWDMzbG5L?= =?utf-8?B?aGpXalJxQkg1MDVOQWpwb1Q4dmZpQVhNSVFCWE56cXJhczVKbUFsM2RCcHBj?= =?utf-8?B?TklOVDRpVWdyWEg4QXI4Q3NXVU9ZR2NYQjFhM25DMENGNmk5NWE0WmpZZmRS?= =?utf-8?B?S3l1citWdFpxY1BJem9KcVlWRTVNd2dxTXNFaVdpd3JadG9BcEMzNm94Wkl1?= =?utf-8?B?TU15ZDYySzhvVVlOYy9BNWcwbDlLOTJFR1E3aW9rSU83MSs0Z2RId2I0M2pV?= =?utf-8?B?ZHBhVFIvRFR0TTNyZGV6YWVhTGg5MEZuMWZ6cEVPTFA3R29uSCtFVDc0NlJB?= =?utf-8?B?N2JVdEFxNDFIRlFyU3QzSmFxcEFlb2MyNGVQbEIwc0J4V25BWU5HdlpvbEZ3?= =?utf-8?B?UXhZNVVGSTNWNHArcE05ZzdyVWdVTno2cndnM1l2NThBb3B0UW4xUUNRL3NU?= =?utf-8?B?QlZYNS9HUVJpRm1SZENrSGZ1WS9NaGZLUjdWWHhUREppQzVBdWhDT2NUU1Rq?= =?utf-8?B?VmRMN3c3ZloyZi8wLzZKS3RxOWVqZkhvcCt4OFBrY0Q1ckpqcmZSS3dySjlh?= =?utf-8?B?ZTlQd2tJb3ZWVDE0YVoxSmw0cytvbU1vNkRUTGpRV3B1UG5nMTNhcUJmSkRq?= =?utf-8?B?S284ZUZUVkt1MGNmVFBaVEhBcXc0UzNTaWM1dWFpNVlDQVNISDVFWHoxeS93?= =?utf-8?B?OGt1aEJUVG9sSUM5d1AwUG9PTVBtck05YzhmRE81dHVIb2JtUllrVFplWHE4?= =?utf-8?B?VUY5SmhBWXo3eitqcEk2N2cvazc2a1RpeTJ0Q1dGci9JQ1dqeG5LdkdPUlc2?= =?utf-8?B?SU04bHJ1RUoydGRyK25PVEdNaVRNQm1QTUxTK0ZUVURtNUZCQWdxTmgrL3lX?= =?utf-8?B?T2c9PQ==?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3b8a10b-92cf-4f85-e0bd-08db6d5086b1 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Jun 2023 03:28:03.1012 (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: k1VoXtOyxroyrpiWNdKDNXYrFok2JwTSE5h//GgX0wQFo5RWp4ahCm3XmA6p9mvvqck0Ssv8IbVp29vIbvDsE+5UcGjhprBcb5XZv5jmDuU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR13MB3696 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: James Hershaw The NFP PMD driver retrieves the linkspeed by reading the NFP_NET_CFG_STS_LINK register. This register is not set by all versions of the firmware. Changes in this patch include: Addition of listener function to deal with control messages of type NFP_FLOWER_CMSG_TYPE_PORT_MOD being received by the PMD. This ensures that the up/down status of the port is updated when a version of firmware is being used that does not write the link status to the NFP_NET_CFG_STS register. Update the nfp_flower_repr_link_update() function to preferably read the linkspeed from the port table, while keeping the old lookup method as a fallback in case that is not supported. Signed-off-by: James Hershaw Reviewed-by: Long Wu Reviewed-by: Chaoyong He Reviewed-by: Niklas Söderlund --- drivers/net/nfp/flower/nfp_flower_cmsg.h | 3 ++ drivers/net/nfp/flower/nfp_flower_ctrl.c | 40 +++++++++++++++++++ .../net/nfp/flower/nfp_flower_representor.c | 39 +++++++++++------- 3 files changed, 67 insertions(+), 15 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h index 96e080a8e9..ec76e6cf9c 100644 --- a/drivers/net/nfp/flower/nfp_flower_cmsg.h +++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h @@ -132,6 +132,9 @@ struct nfp_flower_cmsg_port_mod { rte_be16_t mtu; }; +#define NFP_FLOWER_CMSG_PORT_MOD_INFO_LINK RTE_BIT32(0) +#define NFP_FLOWER_CMSG_PORT_MOD_MTU_CHANGE_ONLY RTE_BIT32(1) + struct nfp_flower_tun_neigh { uint8_t dst_mac[RTE_ETHER_ADDR_LEN]; uint8_t src_mac[RTE_ETHER_ADDR_LEN]; diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index 72c0d5e7d9..de4e333aa9 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -15,6 +15,7 @@ #include "nfp_flower.h" #include "nfp_flower_ctrl.h" #include "nfp_flower_cmsg.h" +#include "nfp_flower_representor.h" #define MAX_PKT_BURST 32 @@ -274,6 +275,42 @@ nfp_flower_cmsg_rx_qos_stats(struct nfp_mtr_priv *mtr_priv, rte_spinlock_unlock(&mtr_priv->mtr_stats_lock); } +static int +nfp_flower_cmsg_port_mod_rx(struct nfp_app_fw_flower *app_fw_flower, + struct rte_mbuf *pkt_burst) +{ + uint32_t port; + struct nfp_flower_representor *repr; + struct nfp_flower_cmsg_port_mod *msg; + + msg = rte_pktmbuf_mtod_offset(pkt_burst, struct nfp_flower_cmsg_port_mod *, + NFP_FLOWER_CMSG_HLEN); + port = rte_be_to_cpu_32(msg->portnum); + + switch (NFP_FLOWER_CMSG_PORT_TYPE(port)) { + case NFP_FLOWER_CMSG_PORT_TYPE_PHYS_PORT: + repr = app_fw_flower->phy_reprs[NFP_FLOWER_CMSG_PORT_PHYS_PORT_NUM(port)]; + break; + case NFP_FLOWER_CMSG_PORT_TYPE_PCIE_PORT: + if (NFP_FLOWER_CMSG_PORT_VNIC_TYPE(port) == NFP_FLOWER_CMSG_PORT_VNIC_TYPE_VF) + repr = app_fw_flower->vf_reprs[NFP_FLOWER_CMSG_PORT_VNIC(port)]; + else + repr = app_fw_flower->pf_repr; + break; + default: + PMD_DRV_LOG(ERR, "ctrl msg for unknown port %#x", port); + return -EINVAL; + } + + repr->link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX; + 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; + + return 0; +} + static void nfp_flower_cmsg_rx(struct nfp_app_fw_flower *app_fw_flower, struct rte_mbuf **pkts_burst, @@ -316,6 +353,9 @@ nfp_flower_cmsg_rx(struct nfp_app_fw_flower *app_fw_flower, } else if (cmsg_hdr->type == NFP_FLOWER_CMSG_TYPE_QOS_STATS) { /* Handle meter stats */ nfp_flower_cmsg_rx_qos_stats(mtr_priv, pkts_burst[i]); + } else if (cmsg_hdr->type == NFP_FLOWER_CMSG_TYPE_PORT_MOD) { + /* Handle changes to port configuration/status */ + nfp_flower_cmsg_port_mod_rx(app_fw_flower, pkts_burst[i]); } rte_pktmbuf_free(pkts_burst[i]); diff --git a/drivers/net/nfp/flower/nfp_flower_representor.c b/drivers/net/nfp/flower/nfp_flower_representor.c index c3764b4de7..b4cf49c933 100644 --- a/drivers/net/nfp/flower/nfp_flower_representor.c +++ b/drivers/net/nfp/flower/nfp_flower_representor.c @@ -191,9 +191,11 @@ nfp_flower_repr_link_update(struct rte_eth_dev *dev, __rte_unused int wait_to_complete) { int ret; + uint32_t i; uint32_t nn_link_status; struct nfp_net_hw *pf_hw; struct rte_eth_link *link; + struct nfp_eth_table *nfp_eth_table; struct nfp_flower_representor *repr; static const uint32_t ls_to_ethtool[] = { @@ -209,23 +211,30 @@ nfp_flower_repr_link_update(struct rte_eth_dev *dev, repr = dev->data->dev_private; link = &repr->link; + link->link_speed = RTE_ETH_SPEED_NUM_NONE; pf_hw = repr->app_fw_flower->pf_hw; - memset(link, 0, sizeof(struct rte_eth_link)); - nn_link_status = nn_cfg_readl(pf_hw, NFP_NET_CFG_STS); - - if (nn_link_status & NFP_NET_CFG_STS_LINK) - link->link_status = RTE_ETH_LINK_UP; - - link->link_duplex = RTE_ETH_LINK_FULL_DUPLEX; - - nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) & - NFP_NET_CFG_STS_LINK_RATE_MASK; - - if (nn_link_status >= RTE_DIM(ls_to_ethtool)) - link->link_speed = RTE_ETH_SPEED_NUM_NONE; - else - link->link_speed = ls_to_ethtool[nn_link_status]; + if (link->link_status == RTE_ETH_LINK_UP) { + if (pf_hw->pf_dev != NULL) { + nfp_eth_table = pf_hw->pf_dev->nfp_eth_table; + if (nfp_eth_table != NULL) { + uint32_t speed = nfp_eth_table->ports[pf_hw->idx].speed; + for (i = 0; i < RTE_DIM(ls_to_ethtool); i++) { + if (ls_to_ethtool[i] == speed) { + link->link_speed = speed; + break; + } + } + } + } else { + nn_link_status = nn_cfg_readw(pf_hw, NFP_NET_CFG_STS); + nn_link_status = (nn_link_status >> NFP_NET_CFG_STS_LINK_RATE_SHIFT) & + NFP_NET_CFG_STS_LINK_RATE_MASK; + + if (nn_link_status < RTE_DIM(ls_to_ethtool)) + link->link_speed = ls_to_ethtool[nn_link_status]; + } + } ret = rte_eth_linkstatus_set(dev, link); if (ret == 0) { -- 2.39.1