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 AEE5EA0032; Fri, 18 Feb 2022 08:46:25 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A251941140; Fri, 18 Feb 2022 08:46:25 +0100 (CET) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam08on2051.outbound.protection.outlook.com [40.107.100.51]) by mails.dpdk.org (Postfix) with ESMTP id 5812B41140 for ; Fri, 18 Feb 2022 08:46:24 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fT/FFJEGaIqPDYf0PB3j78uOTxuf2XLq/uQXuURt6I0m7YBRyy9xDbRq5RhHR4PWYN1sn2UdFcVsdY7NbWq4RWPD8H4SGbksbEe+KCY0jRdM9Y7uV3gjcekrZnPG1jt375Hk9rq5qpwIRUewKc++7BnK03+4cZeYiMciC2fu+ffX5bq2p7ZHbC/Q+RWeyDBy+IqW8Y/x/qshIDQ+DLz1W1OUsi8Yxd1geSHn8BAWXkUk0Grhifl+cg656UNy9lKjcHcfR8kLs+hnSpodmkis7F7guCXhkNpx4zRvGt8Khv9K+QpXJwD+5St12I8MWvAY9K5k2pCJCR98C/ckDxyagw== 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=+H92bCbG4XRCK27SJpUdBOmuRhMxGcOR7wu97/qR54I=; b=deEAemIM4UPBxMCVjVI/1hV9fc7HSq+O3wv9bLwHuDhKfbwhae4H2mBXRbqJ18H9CDwZ0HlYYkbqGvk9lVjwUYDwoUeRSnBALvbftv/qzPYiuHGGDrKD/PHOKqRPuFM5Ci5aLk0QRqHd02tPRO5pyw41nu8A93m/vypu//HQeu7ucM1Db0AglZLiG8QiLLYhEvtmkiVjtrnY0knJJtfP3eG8zB0JedgMhevW65Pk5bm/NBydvOgPtn5fcAVvm+RvSvSdiwoFhR1/eRrhuRSm0dRi1wliLjYSsB3hYSDmiyMrMz6NiyoZBF3lNqachD7GfGrwIVNM9O9AUGUqHpR+xw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) smtp.rcpttodomain=monjalon.net 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 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=+H92bCbG4XRCK27SJpUdBOmuRhMxGcOR7wu97/qR54I=; b=kar1mwtEDzDcNUKl2S69K2f1IGJiGBqBKI4zKdh8GOfPOv+jkSSAtDK/xLnrnG2Z8z3ZeL2JQA6sRNMNhc9Zwp0HYqwW/KsMcgPUT3WDxhqouax0gmZd70G8j9u5CE+JU9VsSVHpwUKF8jyTAVh2HLdCtjIywsAQMmmyI67Yo9t9eEXmLFgyZjcbuqBIqAPZeQv5w7wVE1FM0+a1NGVl07AC1/ESfgi15+FTEVQOte1/wP86JouXDIIqNuv7qDlDNs580GoiNiPcbjKukVMexjEwmQct3np4L9NikixM+GYVKPYqsXH1qSs8P7G/sW1VrZ/Qdqcq9vfVznoBT838Mg== Received: from MWHPR18CA0048.namprd18.prod.outlook.com (2603:10b6:320:31::34) by BY5PR12MB3842.namprd12.prod.outlook.com (2603:10b6:a03:1ab::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4995.14; Fri, 18 Feb 2022 07:46:19 +0000 Received: from CO1NAM11FT039.eop-nam11.prod.protection.outlook.com (2603:10b6:320:31:cafe::90) by MWHPR18CA0048.outlook.office365.com (2603:10b6:320:31::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4975.11 via Frontend Transport; Fri, 18 Feb 2022 07:46:19 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) 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 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.238) by CO1NAM11FT039.mail.protection.outlook.com (10.13.174.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4995.15 via Frontend Transport; Fri, 18 Feb 2022 07:46:19 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 18 Feb 2022 07:46:17 +0000 Received: from nvidia.com (10.126.230.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.986.9; Thu, 17 Feb 2022 23:46:14 -0800 From: Shun Hao To: , , , , Xueming Li CC: , , Subject: [PATCH v2 1/2] common/mlx5: query E-Switch manager vport ID Date: Fri, 18 Feb 2022 09:45:55 +0200 Message-ID: <20220218074556.25036-2-shunh@nvidia.com> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20220218074556.25036-1-shunh@nvidia.com> References: <20220218074556.25036-1-shunh@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.230.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 57cb01f2-dbd7-43d7-b352-08d9f2b2c051 X-MS-TrafficTypeDiagnostic: BY5PR12MB3842:EE_ X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: LbosRCUiDnAhBv3S0+dQxcwPCsz1rdbPR8P2k4idqphh1B1+M+yHjGgpehdObJTapbnobg+uW8qA1t+4vQ0uO3CmK687PuXEsXesEaRkWOL+a2RhCSitQOd1vaDKALmGLztb/Iun883A30W6HX+DEjvsx8+zfaUvx5QVxkO0j0SpNGtJPqX2L8REDE7SG2WZKpVwI0tJfidbWdkRjxPav0OJdwvPCUV/lulV3gSjD7bQkv/TIpspRXQ6V7gpKC479eRPCygd6bsf5GDe4EZ9FLJhlEHxyX1rzkXt6KaJagIWpysqUo60eM4/jWpK19dput5cs5r+faWYDb203P7rsyFluosCfXmvO/UE5WXQXEWKqgjMKaecGXjlC96xvDUka1nPPCBfwmTm5oMSgOexE9i3LEcFQpLDbrJ2J7NIxv3C2tfzjcz5pf2NzfJ1YIfdYtGrRt8CMU8JrlZEhOAiGRSVfWAo1lANKTxcATZrhHZZXwfd2Wh69/f85/n3vQVj3wBNXGM6btOhwlNBYO8v010qQtKXHpsZyeIGcnRnWMZBe19+ODAEj1MINx7aFTYRqIeljowQRyqhdvW8L4BtEymBsT21mys+J/OPiSiSmlbCDN4tX+nKMvSGG9nIsE5b7HtBw1C1HgbHRFTAmAHxJBxlVwZCnD9ZwMQKD18tPKQhnuxQaQ4JPz29v8ljOYRUR7+Pf07AJJkX92J8eTRfAg== X-Forefront-Antispam-Report: CIP:12.22.5.238; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(26005)(82310400004)(86362001)(7696005)(8936002)(356005)(81166007)(40460700003)(5660300002)(6286002)(83380400001)(426003)(336012)(186003)(16526019)(2616005)(55016003)(36860700001)(316002)(70586007)(1076003)(6666004)(8676002)(70206006)(47076005)(508600001)(36756003)(4326008)(6636002)(110136005)(2906002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Feb 2022 07:46:19.3222 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 57cb01f2-dbd7-43d7-b352-08d9f2b2c051 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.238]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT039.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB3842 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 One of the E-Switch vports plays the special role - it is assigned as "E-Switch manager" and has some special exclusive rights and duties - it maintains all the representors, manages FDB domain flows, etc. By default, the E-Switch vport index was supposed to be zero on standalone NICs (regular ConnectX) and 0xFFFE SmartNIC (BlueField), but that was not always correct - this index can be assigned with any value by kernel/hypervisor. To handle this, this uses the DevX API to query E-Switch manager vport ID directly from firmware during initialization. Fixes: a564038699f9 ("net/mlx5: support E-Switch manager egress traffic match") Cc: stable@dpdk.org Signed-off-by: Shun Hao Acked-by: Viacheslav Ovsiienko --- drivers/common/mlx5/mlx5_devx_cmds.c | 12 ++++++++++++ drivers/common/mlx5/mlx5_devx_cmds.h | 2 ++ drivers/common/mlx5/mlx5_prm.h | 12 ++++++++++++ 3 files changed, 26 insertions(+) diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c index 2e807a0829..6d632b97ed 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.c +++ b/drivers/common/mlx5/mlx5_devx_cmds.c @@ -1130,6 +1130,18 @@ mlx5_devx_cmd_query_hca_attr(void *ctx, goto error; } } + if (attr->eswitch_manager) { + hcattr = mlx5_devx_get_hca_cap(ctx, in, out, &rc, + MLX5_SET_HCA_CAP_OP_MOD_ESW | + MLX5_HCA_CAP_OPMOD_GET_CUR); + if (!hcattr) + return rc; + attr->esw_mgr_vport_id_valid = + MLX5_GET(esw_cap, hcattr, + esw_manager_vport_number_valid); + attr->esw_mgr_vport_id = + MLX5_GET(esw_cap, hcattr, esw_manager_vport_number); + } return 0; error: rc = (rc > 0) ? -rc : rc; diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h index 37821b493e..4373761c29 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.h +++ b/drivers/common/mlx5/mlx5_devx_cmds.h @@ -252,6 +252,8 @@ struct mlx5_hca_attr { uint32_t umr_modify_entity_size_disabled:1; uint32_t umr_indirect_mkey_disabled:1; uint32_t log_min_stride_wqe_sz:5; + uint32_t esw_mgr_vport_id_valid:1; /* E-Switch Mgr vport ID is valid. */ + uint16_t esw_mgr_vport_id; /* E-Switch Mgr vport ID . */ uint16_t max_wqe_sz_sq; }; diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 495b63191a..b9e39aa717 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -1264,6 +1264,7 @@ enum { MLX5_GET_HCA_CAP_OP_MOD_QOS_CAP = 0xc << 1, MLX5_GET_HCA_CAP_OP_MOD_ROCE = 0x4 << 1, MLX5_GET_HCA_CAP_OP_MOD_NIC_FLOW_TABLE = 0x7 << 1, + MLX5_SET_HCA_CAP_OP_MOD_ESW = 0x9 << 1, MLX5_GET_HCA_CAP_OP_MOD_VDPA_EMULATION = 0x13 << 1, MLX5_GET_HCA_CAP_OP_MOD_PARSE_GRAPH_NODE_CAP = 0x1C << 1, MLX5_GET_HCA_CAP_OP_MOD_GENERAL_DEVICE_2 = 0x20 << 1, @@ -1926,6 +1927,16 @@ struct mlx5_ifc_cmd_hca_cap_2_bits { u8 reserved_at_100[0x700]; }; +struct mlx5_ifc_esw_cap_bits { + u8 reserved_at_0[0x60]; + + u8 esw_manager_vport_number_valid[0x1]; + u8 reserved_at_61[0xf]; + u8 esw_manager_vport_number[0x10]; + + u8 reserved_at_80[0x780]; +}; + union mlx5_ifc_hca_cap_union_bits { struct mlx5_ifc_cmd_hca_cap_bits cmd_hca_cap; struct mlx5_ifc_cmd_hca_cap_2_bits cmd_hca_cap_2; @@ -1934,6 +1945,7 @@ union mlx5_ifc_hca_cap_union_bits { struct mlx5_ifc_qos_cap_bits qos_cap; struct mlx5_ifc_virtio_emulation_cap_bits vdpa_caps; struct mlx5_ifc_flow_table_nic_cap_bits flow_table_nic_cap; + struct mlx5_ifc_esw_cap_bits esw_cap; struct mlx5_ifc_roce_caps_bits roce_caps; u8 reserved_at_0[0x8000]; }; -- 2.20.0