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 B5160A0C4B for ; Mon, 25 Oct 2021 12:38:54 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A80AC4003E; Mon, 25 Oct 2021 12:38:54 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2078.outbound.protection.outlook.com [40.107.244.78]) by mails.dpdk.org (Postfix) with ESMTP id 81FF34003E for ; Mon, 25 Oct 2021 12:38:53 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jgx66VY31DrBlWEYqJFvkJV4+WA7gd6x4oba7gEawPmfMqAHgQWqiIS7Jb/SdQ3jS9iRwlyjLT6uEkUYv6V1sI0aeH2fnLbSoPRXaSELNy84TAMdrQt8UXdLEC7ogNh4NqcsNKv9d782k3+J0tbPjB2IO0Ba1ehv4TdFIqiAJUPzRxtOSIX0rjh0+6m/sC/aQMMBaMCOojKZ2ADo6OEsktM+kZvVj2FJRelbFTXvGmNyrjt8NTSLnHD31K7mmrV6lY1+MC1HNLWfNW0JpG/8e9Cjao44Fr8Em3DxJpGH2yOkNKNuVjgk634juO5QqVdTs/B2GvgV3IqlNOA/vGCQEQ== 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=OSbdupmBIvBO3mDEKmgKuvQ2ttTJ0JwedTwke17bTy8=; b=K8BbrUYaUBkkEXyidoPy1JOVRN3cEbRLsZEkyezCMx26ntqAyRhbwi4r1EoPLi3yM3kt+lxfd/NsHYPR1yqbxJZy16cPtzJk7Ph/Bqyg41KJXOgsuaZCMMGKJUygqeLxEYgEJel8JYFRJNqwsi7ctavALkw4nvrcEY4akWtRjN+FgDzBAML5UZJigons7YSdTjnNfZjFdM23yOsSpbmZScJVikw7qhbcpqpQgW6lw2qd1ob7GkJTbNMqimHuqNNoVvZps1SutmCSzI+7Y2gSrt1cj7pvx4GXYEHkDFjRdaNZb/BNdOUlrmV3k4cdCJqUx5xIyBbu8R648CKM6d+YTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=redhat.com smtp.mailfrom=nvidia.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none 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=OSbdupmBIvBO3mDEKmgKuvQ2ttTJ0JwedTwke17bTy8=; b=WkAHvUZoXhyGoCGKFNMCtFbI4ijaZLIdaOkkAgxz0aoZQ/VdXeDunYZkJr88AIWDRgMKzNBWARXjoJE7wiiOiPZ2v7DcItGv3O/zLJ9cTJ+GXGTXrSDOvoXci07MS/2kLmh2ylbrxZxuV2jgWuIxPJUUmRS+6w7P9Yk149n59qcIDSMsQVX0Ps5+F3NhXd/79Mo0ACdgr2f7MqHwkz8dHNOUn1ipSXQFEOFK+q582zRCgzZpOgLFXaYa6+6FPty8eTMqMJ0TwfGiWFqKwu1s+a+xAtAofRYB2yoq+Y6fwpMdjLdsCZmS93uzbj243AqHuGLnaEbYUXp4GmobOgY/2A== Received: from BN9PR03CA0148.namprd03.prod.outlook.com (2603:10b6:408:fe::33) by DM6PR12MB3833.namprd12.prod.outlook.com (2603:10b6:5:1cf::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.15; Mon, 25 Oct 2021 10:38:51 +0000 Received: from BN8NAM11FT036.eop-nam11.prod.protection.outlook.com (2603:10b6:408:fe:cafe::6b) by BN9PR03CA0148.outlook.office365.com (2603:10b6:408:fe::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18 via Frontend Transport; Mon, 25 Oct 2021 10:38:51 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by BN8NAM11FT036.mail.protection.outlook.com (10.13.177.168) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4628.16 via Frontend Transport; Mon, 25 Oct 2021 10:38:51 +0000 Received: from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Mon, 25 Oct 2021 10:38:49 +0000 From: Viacheslav Ovsiienko To: CC: , , Date: Mon, 25 Oct 2021 13:38:33 +0300 Message-ID: <20211025103833.17917-1-viacheslavo@nvidia.com> X-Mailer: git-send-email 2.18.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [172.20.187.6] X-ClientProxiedBy: HQMAIL111.nvidia.com (172.20.187.18) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9a7940cd-dcbb-4a1f-0276-08d997a3a289 X-MS-TrafficTypeDiagnostic: DM6PR12MB3833: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:873; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: r89mdUPS8jSIdXtAZULvI5tjxUL9n6v+yAMMs2rCJ39MuBYhqJ6rA1iaJoJebsmg2KM7U3qeKZXccAXu+k/Nh380vCgChSEgSgq07WHXW4Om94Pt64Tb9vXvOmzdshXXKAmEa5jlgmhEXlbHbSCLE7B4U7j4ADV5ivcMWGfHOW3tyqLv0vNt1eDmJJCSNikPMD7O4R6cwp9b/Eim+gUXffY7IWyLnjQi+TCs/chW46x3OP0CtRgpahRCiXH2FfSrU8AwFvp3cQNpnyA6OdGXoT60/4pgwGCmTu2fDHwiCZnWPV4xDeugTvwWpPvKuVu/jkvcbnHTOvcFqtf6fswxYY8XETtoY3TCpOwI/WZVUUyY124VCQyaQbMTFer9OGFMYRqBEj8MasfiMI6dtpTcUyX4cyPhhw9z0C9q0qjuWtEVwEGFAhuT4fdk1EK+G5VvmW68e/6Trh2Ss8qypcGb19H6eYoXfKWG6gaClWz+/Pmi+Sd91Y9Nm7th8XM5KN1Pj34edjtxK3BZ2WvoUNIiFh83MHneJa6vtv4xapHaOOf5JuMX2NUb03o54hdaDhLTzY0s9dysjaCUwuHfb9USpe7AlEHscJXCnti1SDr4QbrTGX8YOMqio6n6I4VyguXIOV6Xro1bvgxkljlxExD4/V5c3Tz8ZW99/VZaogv9tlNQoGAxveKTuvJK251CdQ4igg0AkJU6vfeunSRJgMBVBw== X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(36906005)(7696005)(6286002)(336012)(86362001)(55016002)(16526019)(107886003)(54906003)(47076005)(5660300002)(316002)(8936002)(356005)(186003)(26005)(2616005)(82310400003)(508600001)(36756003)(6916009)(83380400001)(70206006)(36860700001)(6666004)(4326008)(1076003)(70586007)(7636003)(426003)(2906002)(8676002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2021 10:38:51.0158 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9a7940cd-dcbb-4a1f-0276-08d997a3a289 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT036.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB3833 Subject: [dpdk-stable] [PATCH] common/mlx5: fix sub-function representor parsing 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 Sender: "stable" From: Xueming Li [ upstream commit 59df97f1a832a0edfd7f77ffbe5149e553e860b5 ] This patch supports representor name parsing for SF. In sysfs, representor name stored under "phys_port_name" sysfs key, similar to VF representor, switch port name of SF representor is "pfsf". For netlink message, net SF type is supported. Examples: pf0sf1 pf0sf[0-3] This patch is required for LTS release(s) due to the PF device was not correctly recognized on BlueField SmartNIC hosts with confgiured SFs, this caused wrong unexpected DPDK ethernet device port assignments. Signed-off-by: Xueming Li Acked-by: Viacheslav Ovsiienko --- drivers/common/mlx5/linux/mlx5_common_os.c | 32 +++++++++++++++------- drivers/common/mlx5/linux/mlx5_nl.c | 3 ++ drivers/common/mlx5/mlx5_common.h | 2 ++ drivers/net/mlx5/linux/mlx5_ethdev_os.c | 3 ++ 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c b/drivers/common/mlx5/linux/mlx5_common_os.c index 0edd78ea6d..5cf9576921 100644 --- a/drivers/common/mlx5/linux/mlx5_common_os.c +++ b/drivers/common/mlx5/linux/mlx5_common_os.c @@ -97,22 +97,34 @@ void mlx5_translate_port_name(const char *port_name_in, struct mlx5_switch_info *port_info_out) { - char pf_c1, pf_c2, vf_c1, vf_c2, eol; + char ctrl = 0, pf_c1, pf_c2, vf_c1, vf_c2, eol; char *end; int sc_items; - /* - * Check for port-name as a string of the form pf0vf0 - * (support kernel ver >= 5.0 or OFED ver >= 4.6). - */ + sc_items = sscanf(port_name_in, "%c%d", + &ctrl, &port_info_out->ctrl_num); + if (sc_items == 2 && ctrl == 'c') { + port_name_in++; /* 'c' */ + port_name_in += snprintf(NULL, 0, "%d", + port_info_out->ctrl_num); + } + /* Check for port-name as a string of the form pf0vf0 or pf0sf0 */ sc_items = sscanf(port_name_in, "%c%c%d%c%c%d%c", &pf_c1, &pf_c2, &port_info_out->pf_num, &vf_c1, &vf_c2, &port_info_out->port_name, &eol); - if (sc_items == 6 && - pf_c1 == 'p' && pf_c2 == 'f' && - vf_c1 == 'v' && vf_c2 == 'f') { - port_info_out->name_type = MLX5_PHYS_PORT_NAME_TYPE_PFVF; - return; + if (sc_items == 6 && pf_c1 == 'p' && pf_c2 == 'f') { + if (vf_c1 == 'v' && vf_c2 == 'f') { + /* Kernel ver >= 5.0 or OFED ver >= 4.6 */ + port_info_out->name_type = + MLX5_PHYS_PORT_NAME_TYPE_PFVF; + return; + } + if (vf_c1 == 's' && vf_c2 == 'f') { + /* Kernel ver >= 5.11 or OFED ver >= 5.1 */ + port_info_out->name_type = + MLX5_PHYS_PORT_NAME_TYPE_PFSF; + return; + } } /* * Check for port-name as a string of the form p0 diff --git a/drivers/common/mlx5/linux/mlx5_nl.c b/drivers/common/mlx5/linux/mlx5_nl.c index 1f765dca07..145e354b2c 100644 --- a/drivers/common/mlx5/linux/mlx5_nl.c +++ b/drivers/common/mlx5/linux/mlx5_nl.c @@ -789,6 +789,7 @@ mlx5_nl_mac_addr_sync(int nlsk_fd, unsigned int iface_idx, int i; int ret; + memset(macs, 0, n * sizeof(macs[0])); ret = mlx5_nl_mac_addr_list(nlsk_fd, iface_idx, &macs, &macs_n); if (ret) return; @@ -1201,6 +1202,8 @@ mlx5_nl_check_switch_info(bool num_vf_set, case MLX5_PHYS_PORT_NAME_TYPE_PFHPF: /* Fallthrough */ case MLX5_PHYS_PORT_NAME_TYPE_PFVF: + /* Fallthrough */ + case MLX5_PHYS_PORT_NAME_TYPE_PFSF: /* New representors naming schema. */ switch_info->representor = 1; break; diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h index a484b74b9c..4c75addd08 100644 --- a/drivers/common/mlx5/mlx5_common.h +++ b/drivers/common/mlx5/mlx5_common.h @@ -153,6 +153,7 @@ enum mlx5_nl_phys_port_name_type { MLX5_PHYS_PORT_NAME_TYPE_UPLINK, /* p0, kernel ver >= 5.0 */ MLX5_PHYS_PORT_NAME_TYPE_PFVF, /* pf0vf0, kernel ver >= 5.0 */ MLX5_PHYS_PORT_NAME_TYPE_PFHPF, /* pf0, kernel ver >= 5.7, HPF rep */ + MLX5_PHYS_PORT_NAME_TYPE_PFSF, /* pf0sf0, kernel ver >= 5.0 */ MLX5_PHYS_PORT_NAME_TYPE_UNKNOWN, /* Unrecognized. */ }; @@ -161,6 +162,7 @@ struct mlx5_switch_info { uint32_t master:1; /**< Master device. */ uint32_t representor:1; /**< Representor device. */ enum mlx5_nl_phys_port_name_type name_type; /** < Port name type. */ + int32_t ctrl_num; /**< Controller number (valid for c#pf#vf# format). */ int32_t pf_num; /**< PF number (valid for pfxvfx format only). */ int32_t port_name; /**< Representor port name. */ uint64_t switch_id; /**< Switch identifier. */ diff --git a/drivers/net/mlx5/linux/mlx5_ethdev_os.c b/drivers/net/mlx5/linux/mlx5_ethdev_os.c index f641cb936e..08b51b7dc8 100644 --- a/drivers/net/mlx5/linux/mlx5_ethdev_os.c +++ b/drivers/net/mlx5/linux/mlx5_ethdev_os.c @@ -1013,6 +1013,9 @@ mlx5_sysfs_check_switch_info(bool device_dir, /* New representors naming schema. */ switch_info->representor = 1; break; + default: + switch_info->master = device_dir; + break; } } -- 2.18.1