From patchwork Wed Jun 10 17:17:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Parav Pandit X-Patchwork-Id: 71204 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id BDF68A051E; Wed, 10 Jun 2020 19:18:10 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 283771BF74; Wed, 10 Jun 2020 19:18:10 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140053.outbound.protection.outlook.com [40.107.14.53]) by dpdk.org (Postfix) with ESMTP id 0FF961BF70 for ; Wed, 10 Jun 2020 19:18:08 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mo9bqoNH7qEDzTPyxNXmyXWj2BFYAx4XenDZ7Z8FXHu+/PmnMzuUjElTDkhm7BwszSL3SwjjXOMFVk937ZXJHnhEVyZ6ZWWdQT4mBiSVBN4Jm0KsC2+mlzi9R42T42WKTgxqcfGyipHgbekFMsLxEgFHZUXGprNbegLuPu9Jw7yq131h/8+WDwPo/yhedhpA4sKhtOK33Btb0mUMgwswczIwZCk62M6vq0FgWHTAtLbXfKTEu41d6JkEykUKme5wa2ZrhZcdpoFxrBTo1ppm2DY6fVpMQ3xdumANgX6SEA7n1eZyMiKTfFnKaT3LVaJs5GzoiuxHvndhEmbzaFuNyg== 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-SenderADCheck; bh=3NdPQPQmPubvBWvfqC3RNVUKi1dlEz2S5BKFAhmUjHY=; b=CSkl3WIOfjU2sCENY+v80YWocKnichPL54dYwlzkxRztYH9vPc1yYWBw7ZVhZXiETwtKQTklONCjKfnm/UGSdXlwtz1rnSU+Odj+GPKy5fF0ALgbzsbzkKyr6gGanu1po9mPPAh1We0EBKx/WO4xat/WsJOK6tSnveemMXTt1MkayhIqJWsxClDmQ5Ojudt7pw+0qR0myyrc65Oobcn+6JxX3vxTWCoU8fptuqu5rxJAVqWitc05qLquR1bJ2SHmmjdZ0wUyulU2eqCdmf9SEe3i4oyUF6T46x+zIP0usmGFwNNcY6qpiYimqoluwX9+IAfxfWZT3ULkQE33ymUImw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3NdPQPQmPubvBWvfqC3RNVUKi1dlEz2S5BKFAhmUjHY=; b=K7Cwfvt6ZHGflIH8ccv5+09NbZ8s/C2wRG/wAl2FMecwmkVwXBJvPwJhu51osFLXxnrEJ9hROYftdZDRDPjJNPtHSfhkgQd6J+5pz/Wz6AaGkwZF551tE9ITdkq1qGUrv07T18U3iomXPkqz2kJPCfB/RoeMoN8knAuuWMnHRew= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) by AM0PR05MB5346.eurprd05.prod.outlook.com (2603:10a6:208:f5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 10 Jun 2020 17:18:06 +0000 Received: from AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7]) by AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7%2]) with mapi id 15.20.3066.023; Wed, 10 Jun 2020 17:18:06 +0000 From: Parav Pandit To: dev@dpdk.org Cc: ferruh.yigit@intel.com, thomasm@mellanox.com, orika@mellanox.com, matan@mellanox.com, Parav Pandit Date: Wed, 10 Jun 2020 17:17:23 +0000 Message-Id: <20200610171728.89-2-parav@mellanox.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20200610171728.89-1-parav@mellanox.com> References: <20200610171728.89-1-parav@mellanox.com> X-ClientProxiedBy: SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) To AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.21 via Frontend Transport; Wed, 10 Jun 2020 17:18:05 +0000 X-Mailer: git-send-email 2.25.4 X-Originating-IP: [208.176.44.194] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 49ef1083-2bed-4aa0-821d-08d80d623d87 X-MS-TrafficTypeDiagnostic: AM0PR05MB5346: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:655; X-Forefront-PRVS: 0430FA5CB7 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ulAneHAjbZY2DVw/f9PYsnZavD+Gkep/+YpMkkuE8TCeVK7a3fmQuWjKrE1rtHF/FjUxsJ85/IGlVCFkbDk06LDT3FZWiIAcYp2oDLcxBvLAIzjJcxdSTndcK99fSC9cFo4toeujGDprI14tp9WlOUmxpU8tw4C5ICFgGdNP2qvmIcHn+nv8jHa8g8JlXVCNsLpMAY07pARw58yyGfKGauQV5wrLyULefVIyQbWw2YTPpnMCGQLe4exUEhUyEpD1TBzy+LjBheHbfEYIpFigeoc7Lc6wPO3ucqfczFvZuF2VYQDFDX6GKSQlYfJM7PrFk6a9FdtxS2QHjBEBIdmANg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4866.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(136003)(39860400002)(376002)(66476007)(6506007)(36756003)(16526019)(6486002)(6916009)(2906002)(316002)(26005)(5660300002)(186003)(66556008)(66946007)(6512007)(6666004)(8936002)(8676002)(4326008)(2616005)(956004)(478600001)(1076003)(4744005)(86362001)(52116002)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 6pYxNKxK6hZjTcl4NjmmfOQQiLuFafhydH8DmYdGKkv3CkX5/GQo/JADXmPnsmHag96bFt8nvHGXCXBENdc+iObjprzf1x1OoCUMDTbUyzcjVjRBemAj2YdUvwUtimuduljtJO0oOL4tUDpzGq+nzOKs1rsgbzQVIXNIq3PulcsD9ogBlaQrYMQ6Qj9Vunbbg4mSHpmjRLeioLBj4DaaDKmvhWmGUqV7cbn9tMzeyaNOGaxUdfcXghsWFMbfAyt13jMt1NnQp+9D+Xrc6s3GIsxnWvu32sBNoWT08UMALYeOOqnjxNXdfxYg4aFiscJrcj+qU4uwp8FZbzqqBwx1eTxgeVwfPSNklr3YLaa4Yz0tOngpvTYLq7sxxnqzU6E4tVyxsJVvHda/8g9dOrtt4rG+xjKtSqy+YfV/0XI/9FAqArNxONA6h4gwgTa4K6hJTtBtTIIjrfag+4uD5YPI1lwkCT5CeyBrftMEmr6CZ17w/+ANJzIMrC38dfs0YDTH X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 49ef1083-2bed-4aa0-821d-08d80d623d87 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2020 17:18:06.8039 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /ObpHUUa7NcIl0t3LnvUhwu9JE/gHHLXu0Gdib3Zly8AAKliSLB7Xq7yJesaEyM8r0h4VWSfOaWeLTu6EPML5w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB5346 Subject: [dpdk-dev] [RFC PATCH 1/6] eal: introduce macros for getting value for bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" There are several drivers which duplicate bit generation macro. Introduce a generic bit macros so that such drivers avoid redefining same in multiple drivers. Signed-off-by: Parav Pandit --- lib/librte_eal/include/rte_bits.h | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lib/librte_eal/include/rte_bits.h diff --git a/lib/librte_eal/include/rte_bits.h b/lib/librte_eal/include/rte_bits.h new file mode 100644 index 000000000..37f284971 --- /dev/null +++ b/lib/librte_eal/include/rte_bits.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2020 Mellanox Technologies, Ltd. + */ + +#ifndef _RTE_BITS_H_ +#define _RTE_BITS_H_ + +#define RTE_BIT(bit_num) (1UL << (bit_num)) + +#endif From patchwork Wed Jun 10 17:17:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Parav Pandit X-Patchwork-Id: 71206 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id E29C2A051E; Wed, 10 Jun 2020 19:18:26 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D37451BFB9; Wed, 10 Jun 2020 19:18:12 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2089.outbound.protection.outlook.com [40.107.22.89]) by dpdk.org (Postfix) with ESMTP id B1F041BFA7 for ; Wed, 10 Jun 2020 19:18:11 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=maRR8LL6WVx0/Q3q6TMLKAYbT1Yi8ueqjCLbIM3NLUaE7cAsLbgpHGi/Sv/qlPRSjrm7JJycX24dzs4inRIDCR4WID3udz+nOKbG86Frxl7DW1ZR32c/U/nPVL5uIqxgLT/GApvPZLUrtE1eE+MFHVLUbSirDa6ykPmDFsp+Fm6RA/OwCnWKyAib/SXOaOq67rYS6Pqpuy5iDGPNYG7uRUyF2ODw3O9oHeZ7mzR8XLQScCojBCPdg3aWxPfmYxKaNVsWZMBBARLbGcYHjnmL1LVlipD9Fyn1l656ez9Lgvm0ToZ85KPCdQQAwa5oi/opoMM4c3TLu//lChpC3a63gQ== 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-SenderADCheck; bh=swvaHp4j8SSJlcCi3oWJoIvCr7XOOe7xjnEY4S0MirU=; b=ZLRt/5cMdjm4KTxyGrbVFuP2hNrcqT1SGZFkpg//rFMYxkooewsWJ+EF5y5k8wz1kQaCSJGoBGCXUeDvwk7EMdYCZflriB5xQWtxtXg9B8hvEShnYWnjWaZfIGKkFP+AP1E7tx5CwY1Bhc0EukqNhjoYE1tBIwoluDvMp1PR+kb/cashmq+GjxESI7Hj1HulDIeN1oB8JKUaQa9HMI+Exs5ikQjwW3gAXjn1C2i814BDvTf9imvg/axJRmKB1xj0ADTcVsvkayg6mBOMeT3DTpZXSSbKvzjJKk5Qmwec0dPa3a0sxcpDLMBUBMYH/BVUlMMkLKroqAtzaz2uBvV9pg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=swvaHp4j8SSJlcCi3oWJoIvCr7XOOe7xjnEY4S0MirU=; b=tigeXSzw71eaPgQ7USwQCeH7K1qvue4jgNs/b4fpd5SxBF7xjgkppW5+zYQ4FFeTTbeKVRABIv99ZbFdpptl9NE61XLOSuwx1exT07uaqB028W0zlYVk+IHobWvEntFhKB29uCJcoRSeNMawW0H0ebisjnqJ3sCVUi7fE+3ciQE= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) by AM0PR05MB5346.eurprd05.prod.outlook.com (2603:10a6:208:f5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 10 Jun 2020 17:18:10 +0000 Received: from AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7]) by AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7%2]) with mapi id 15.20.3066.023; Wed, 10 Jun 2020 17:18:10 +0000 From: Parav Pandit To: dev@dpdk.org Cc: ferruh.yigit@intel.com, thomasm@mellanox.com, orika@mellanox.com, matan@mellanox.com, Parav Pandit Date: Wed, 10 Jun 2020 17:17:24 +0000 Message-Id: <20200610171728.89-3-parav@mellanox.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20200610171728.89-1-parav@mellanox.com> References: <20200610171728.89-1-parav@mellanox.com> X-ClientProxiedBy: SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) To AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.21 via Frontend Transport; Wed, 10 Jun 2020 17:18:07 +0000 X-Mailer: git-send-email 2.25.4 X-Originating-IP: [208.176.44.194] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 749a08a4-8cc0-43ea-a8f3-08d80d623eb8 X-MS-TrafficTypeDiagnostic: AM0PR05MB5346: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5797; X-Forefront-PRVS: 0430FA5CB7 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UjsJEDmhtpgAYoaPhOyduCbpRaFu160p51woXHUGlYOom+A+nim6fEPvg/tl50BJBCje3ioG5ILDKgcA/ZjNUQTVoj2hDDRipoZTzuM4GvVEpnNdq5t2uqAjPGuqUnHvwtmVrNs1Zu8cEUxsyEf6TongZtmyGvvn2kLnEIwFOHZUswy79b1PKd5c4J2vBy5NZhqqyOeQpcnFa1H6hO/WC6hRWyUfVNKYLOQdKKQJ17PqfqCZiFJVEC89kOIjtXl74g8j2txa4cdMzOKz2re5kSdd6rQvM2JCEI1dCoOpexkbG9aAvSmPtk4cJXFpkM4DtF8WO4x3xQ2ao+891Ie+1g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4866.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(136003)(39860400002)(376002)(66476007)(6506007)(36756003)(16526019)(6486002)(6916009)(2906002)(316002)(26005)(5660300002)(186003)(66556008)(66946007)(6512007)(6666004)(8936002)(8676002)(4326008)(2616005)(83380400001)(956004)(478600001)(1076003)(86362001)(52116002)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: B9dss4eJEB9TYUOLMe8NHQZBx2PE2iTqeOJGTXIyPIBSJSI23S2JRFUZArjhdYy6BJYtSHbPG9/0J2ip1O512Ge2PAUFGe6DRJM+cF8bn2QZIEnULl50gOQXzmGRD6DAF9GiOwVPBiYSYENkPoDdGXowFJ7bvkWlHNeasT275ko3LUnjZOsaH+iZP+rTiLJ5MEswtaL3arR2t0XXWx15ZcAfgCmJkHOOolzvrBKCYQ1jAxKDTXKD9TItGgefj1kpiZTZLXd3mK3fncQeIRbkBYa2+DYFjFVibDXceFqHw3dBtuBqIxRjheKmZkQpilHUSWyUaW7YHYVBhoyHu/xqg90MdaFo8J86bOlqNexzAALplFC1Vs57PB7F55RPX25ZicKUDVMpVKfA8XO8ykjJhvBIYSNdM/bPdoN6iMk/nkt56rbESRUedJ15jipGXKFB/xq5K8NBwIaFep7itxwO7QeAe6jdpH/0J7aEb16iePVqUONpMHyHGj11Gd8VTLIR X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 749a08a4-8cc0-43ea-a8f3-08d80d623eb8 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2020 17:18:09.8981 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: fqtjFzsqeexLIEex4GkEzlw7feAa67XMp+oYu1+aawQ0me1H4bjfXOVHL++o9NJL1HlGyfqhZCn/5eoUnBZF7w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB5346 Subject: [dpdk-dev] [RFC PATCH 2/6] common/mlx5: use class enable check helper function X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Currently mlx5_class_get() returns enabled single valid class. To support multiple class and to improve readability of code, change it to mlx5_class_enabled(). With this function, each class enablement can be checked, to load class specific driver. Signed-off-by: Parav Pandit --- drivers/common/mlx5/mlx5_common.c | 12 +++++++----- drivers/common/mlx5/mlx5_common.h | 5 +++-- drivers/common/mlx5/rte_common_mlx5_version.map | 2 +- drivers/net/mlx5/linux/mlx5_os.c | 3 ++- drivers/vdpa/mlx5/mlx5_vdpa.c | 2 +- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/drivers/common/mlx5/mlx5_common.c b/drivers/common/mlx5/mlx5_common.c index db94d4aa8..96c415842 100644 --- a/drivers/common/mlx5/mlx5_common.c +++ b/drivers/common/mlx5/mlx5_common.c @@ -37,22 +37,24 @@ mlx5_class_check_handler(__rte_unused const char *key, const char *value, return 0; } -enum mlx5_class -mlx5_class_get(struct rte_devargs *devargs) +bool +mlx5_class_enabled(const struct rte_devargs *devargs, enum mlx5_class dev_class) { struct rte_kvargs *kvlist; const char *key = MLX5_CLASS_ARG_NAME; + /* Default NET CLASS is enabled if user didn't specify the class */ enum mlx5_class ret = MLX5_CLASS_NET; if (devargs == NULL) - return ret; + return dev_class == MLX5_CLASS_NET ? true : false; kvlist = rte_kvargs_parse(devargs->args, NULL); if (kvlist == NULL) - return ret; + return dev_class == MLX5_CLASS_NET ? true : false; if (rte_kvargs_count(kvlist, key)) rte_kvargs_process(kvlist, key, mlx5_class_check_handler, &ret); rte_kvargs_free(kvlist); - return ret; + + return (ret & dev_class) ? true : false; } diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h index 8e679c699..1d59873c8 100644 --- a/drivers/common/mlx5/mlx5_common.h +++ b/drivers/common/mlx5/mlx5_common.h @@ -202,13 +202,14 @@ int mlx5_dev_to_pci_addr(const char *dev_path, struct rte_pci_addr *pci_addr); #define MLX5_CLASS_ARG_NAME "class" enum mlx5_class { + MLX5_CLASS_INVALID, MLX5_CLASS_NET, MLX5_CLASS_VDPA, - MLX5_CLASS_INVALID, }; __rte_internal -enum mlx5_class mlx5_class_get(struct rte_devargs *devargs); +bool mlx5_class_enabled(const struct rte_devargs *devargs, + enum mlx5_class dev_class); __rte_internal void mlx5_translate_port_name(const char *port_name_in, struct mlx5_switch_info *port_info_out); diff --git a/drivers/common/mlx5/rte_common_mlx5_version.map b/drivers/common/mlx5/rte_common_mlx5_version.map index 350e77140..01fa0cc25 100644 --- a/drivers/common/mlx5/rte_common_mlx5_version.map +++ b/drivers/common/mlx5/rte_common_mlx5_version.map @@ -1,7 +1,7 @@ INTERNAL { global: - mlx5_class_get; + mlx5_class_enabled; mlx5_create_mr_ext; diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c index 92422dbe6..06772b7ae 100644 --- a/drivers/net/mlx5/linux/mlx5_os.c +++ b/drivers/net/mlx5/linux/mlx5_os.c @@ -1377,11 +1377,12 @@ mlx5_os_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct mlx5_dev_config dev_config; int ret; - if (mlx5_class_get(pci_dev->device.devargs) != MLX5_CLASS_NET) { + if (!mlx5_class_enabled(pci_dev->device.devargs, MLX5_CLASS_NET)) { DRV_LOG(DEBUG, "Skip probing - should be probed by other mlx5" " driver."); return 1; } + if (rte_eal_process_type() == RTE_PROC_PRIMARY) mlx5_pmd_socket_init(); ret = mlx5_init_once(); diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c index 1113d6cef..96776b64e 100644 --- a/drivers/vdpa/mlx5/mlx5_vdpa.c +++ b/drivers/vdpa/mlx5/mlx5_vdpa.c @@ -451,7 +451,7 @@ mlx5_vdpa_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct mlx5_hca_attr attr; int ret; - if (mlx5_class_get(pci_dev->device.devargs) != MLX5_CLASS_VDPA) { + if (!mlx5_class_enabled(pci_dev->device.devargs, MLX5_CLASS_VDPA)) { DRV_LOG(DEBUG, "Skip probing - should be probed by other mlx5" " driver."); return 1; From patchwork Wed Jun 10 17:17:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Parav Pandit X-Patchwork-Id: 71207 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5F5C5A051E; Wed, 10 Jun 2020 19:18:38 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6C6B91BFF5; Wed, 10 Jun 2020 19:18:14 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2084.outbound.protection.outlook.com [40.107.22.84]) by dpdk.org (Postfix) with ESMTP id 0E39A1BFC9 for ; Wed, 10 Jun 2020 19:18:13 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YQ+i2Qpj9ngEXMgYAFM5FxFqsnVfDI7/QUaiED6c1w/KzPX2tt3ove+M+InNSPh563j3PMhCHemKjsy2dlm4TZTSSVVhM1sr+p04wAb5bbGN4WjTZashKS9ueqJvyX3N5IxcxplKZXaStvGqQKnqvyVXwBdmojzlMngW53NInUwO6UU/poByCuHFgaUYvsFWx3PPeQpPdzGjhtWmm7pkHMC0Xq9MOS5z8k381mGbsPXlnIw1q3UiRx0gY4dwHgeQlhoaA/LwC/h8ywT+gprzNrqoailS7IW2NlrwY9x79kUS4e91Ju5cn1AVMnEptJ66SmlNUnftlfWT6LokDAO35w== 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-SenderADCheck; bh=pbl3939SMvTEUshYNOom7b5akis6U+kormiFn15Upx0=; b=C9IZ+LuFGXWbTzrAMKDELWQZxQKP5G/80rUn/wkPxyAOap01+jNRno06/+eoiFYDTmI4vT39zKy+ANb/LdFnV6c4NGYmgqLVhn1uzsaGdMFJGJrXZ342r/adf352uSq5TaFELl1pv3sPfCoLAvAxPiddsnOXTWQlW+m3pnT9Q9b91qrTLb8Wq4YCuKpHKKoLOa5MJuzpGQr5UsB5RibDIn0L02z+xwOXiuWb8+LSW5ojC/tYiNb4oI8IV+F2QSZnTOImwmaUYZ6USwPjijuMZF1K34RhIxk2TPohdGMj9tqKJSDDvSL7yumTss3TSB8BtXNEbVVY6w9G6Pb/trG4iw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=pbl3939SMvTEUshYNOom7b5akis6U+kormiFn15Upx0=; b=qR5E21dn3WXjCs8VArtyZSIyiMxAd4r7ZTSwnRMyexDMo78Y9E3GmHrLPj5N2Uz8A9QiDAj6k6FMKFvQhshM85p+eWOvErTzeYlVM7y6yR7g6qR40LT9Qv0e/GvvZp6N+sJGmuxiK7qpAbAo+yRJWhumCfIetLZU/UxP3lih5nE= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) by AM0PR05MB5346.eurprd05.prod.outlook.com (2603:10a6:208:f5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 10 Jun 2020 17:18:12 +0000 Received: from AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7]) by AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7%2]) with mapi id 15.20.3066.023; Wed, 10 Jun 2020 17:18:12 +0000 From: Parav Pandit To: dev@dpdk.org Cc: ferruh.yigit@intel.com, thomasm@mellanox.com, orika@mellanox.com, matan@mellanox.com, Parav Pandit Date: Wed, 10 Jun 2020 17:17:25 +0000 Message-Id: <20200610171728.89-4-parav@mellanox.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20200610171728.89-1-parav@mellanox.com> References: <20200610171728.89-1-parav@mellanox.com> X-ClientProxiedBy: SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) To AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.21 via Frontend Transport; Wed, 10 Jun 2020 17:18:10 +0000 X-Mailer: git-send-email 2.25.4 X-Originating-IP: [208.176.44.194] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 9a1656fa-f059-466a-9040-08d80d6240c5 X-MS-TrafficTypeDiagnostic: AM0PR05MB5346: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1079; X-Forefront-PRVS: 0430FA5CB7 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: N1SjTv9sA48mLn5FByhnhqXkgKREmUFq7/034iFQV9E1dxh3MyRUlYE3y9sG5hHNvMcVlbcny5Cji5XirtnCBuXpIyx7qKyBy/1ykveReUURUVwxC9lhejYbbcJUuFribZxX8HIignD+yICiowqXKObV0oKsGAzr2FPk1Uka4MKnpNGmy8W6ejowxRawk5kqq1Eiu2zVkaCTJqcgJFhtb9Lvdcll/2JkRK+L1Z1LUgw7bC7GD9Bi3GnKHwBQBwRFCeta4o1w483MOTn9AG/4QHvxQawfdJmjaGLOJBTnkyPUV59wCXh0VBL50P6bfNEQJZ7ycv2Tns9rfr5DAVItvA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4866.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(136003)(39860400002)(376002)(66476007)(6506007)(36756003)(16526019)(6486002)(6916009)(2906002)(316002)(26005)(5660300002)(186003)(66556008)(66946007)(6512007)(6666004)(8936002)(8676002)(4326008)(2616005)(83380400001)(956004)(478600001)(1076003)(86362001)(52116002)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: OBT/4S6vQAMSVKm5bzZdKSuxiT/xyfRAaqEZOqUBnMxkHLS3Ys2Cmn1xBGwIbjmwB9Ft3bsvEw5cerrsXG8yORbQifqcq62jMmW6c644f22AYlF1i+aONZTDUQ8+fxGPDwx90RD0GGGnE9zHByOf3ktcNhJmHrLCjfYswkd4jRORJf7eXvUcaREi/+c27xfqstC2PeZ3igZtKg0NTtNVlVFzyvqI5P6SMsL/ejqSP6m8oUor0q+hIZlgrG8rKAFaXpXgznRXRanw5yPVMde91IJG0fjYqiwSXpBg1y063FPh3MFr369DGF6p0zjHCudnXIAEPYp82hp5wCCmbkZt+BK4gz+FMsnhKlXVHP3YVGLZaIB1ULvzNtUxgx6npClVzEEfY0+0L2zYv2PLOyqM0AJdNFsbScnwyxql72ffNiQIyXUatmC4kQYubxlAOShFU3Uj3nZrlRjUfCCTstjzYJdlGKECnaz4RFIgvUZ4wOr5e8BDiaKWmTpoYP5l018G X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a1656fa-f059-466a-9040-08d80d6240c5 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2020 17:18:12.0658 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: BaTCI9DpMS8wVK5Qewwps0ReK3v2YFSszfaqS9i5VlM2jTMQ/yUHIOxXEnBp5+6UDgAdv1QEJGZxRv5f/2gcpA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB5346 Subject: [dpdk-dev] [RFC PATCH 3/6] common/mlx5: change mlx5 class enum values as bits X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" mlx5 PCI Device supports multiple classes of devices such as net, vdpa, and/or regex. To support these multiple classes, change mlx5_class to a bitmap values so that if users asks to enable multiple of them, all supported classes can be returned by mlx5_class_supported(). Signed-off-by: Parav Pandit --- drivers/common/mlx5/mlx5_common.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/common/mlx5/mlx5_common.h b/drivers/common/mlx5/mlx5_common.h index 1d59873c8..9fdbd341d 100644 --- a/drivers/common/mlx5/mlx5_common.h +++ b/drivers/common/mlx5/mlx5_common.h @@ -13,6 +13,7 @@ #include #include #include +#include #include "mlx5_prm.h" @@ -203,8 +204,8 @@ int mlx5_dev_to_pci_addr(const char *dev_path, struct rte_pci_addr *pci_addr); enum mlx5_class { MLX5_CLASS_INVALID, - MLX5_CLASS_NET, - MLX5_CLASS_VDPA, + MLX5_CLASS_NET = RTE_BIT(0), + MLX5_CLASS_VDPA = RTE_BIT(1), }; __rte_internal From patchwork Wed Jun 10 17:17:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Parav Pandit X-Patchwork-Id: 71208 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 736BAA051E; Wed, 10 Jun 2020 19:18:47 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9BEAD1BFFD; Wed, 10 Jun 2020 19:18:16 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2043.outbound.protection.outlook.com [40.107.22.43]) by dpdk.org (Postfix) with ESMTP id E6B8A1BFF8 for ; Wed, 10 Jun 2020 19:18:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TdaBu1fnwAysBLy69UJTaUEwZtRVmgZ0I3kSd9VBh1cwUfksmD05G3oMLtfR1LJKIC9RHhMfFiFOEOreYEDZpYt/t4gnUOAh9kBYpiv6Pzy4Q2FVsrNTB2/2S6l1kGv98w5SnDcxhpkDgz87IXIsqnadlk4cUrNXrKLLuMxHCmTWsYIuYqtkEaoYSGWiXyiGOqQcV+hIib6ACEcJqLKuF/3j4AVHue60+zLD+K7bk6LCEcWy+A7mXxTjWk/Ii5WMQsvil0hv0KyYWreYtOvD7Hhu4pay+fszWvXLgZb18U71tY47JsT6RsL1nQrQuEZHWyP0ai65dXpGXi/+3Gw5cw== 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-SenderADCheck; bh=faITFtC9rQsOnswzgiX7okpveEvEETFXx7fbXYOcJ+0=; b=Hw0IWz614rIdzWsFwu+qnNTHc5egsKiKX38LsDfy/4gIaiJe4iUdoAzOWPR77s4TivyJabHGvDsRb84UB4SNWXQHodSlwP2+d3k8ySE7N6Bjftc8gw8w1D8BjgVJIR4GKoGn/X02V1HxgbPr76QHO8dfkghGQezy7i1aza5s7BVi5S1Lg+zRhuY35fIH2YQsUijAT6WhSvzOZcSxj37kB94e4W6X3PW3HLzssSq7XbwSnOuQyptNkhO0A/LaOW0b27+3qJHB0edUfGuItdntoOt7wY+pGSKeSyM6K01GkJjlc9eGMF4SVPITv8fQbXF/qiSuA6ul+MzSZIfYlp2g0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=faITFtC9rQsOnswzgiX7okpveEvEETFXx7fbXYOcJ+0=; b=hK7ZhU/n5i+cR+1vQMsBtmrKI0zKexUogjapcNSH1f5c659OMPWjTWulZZFVTQ4RaxuJjJkaMOHZmxyEMHc9uFaUDU8UOiaUnqkHkJKuwgCsErc+CE182IO0eiszyn4l+3++k4BZ+Nb3ocp1FXA2GwpSfoob4MmVh6Y1VljkGXI= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) by AM0PR05MB5346.eurprd05.prod.outlook.com (2603:10a6:208:f5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 10 Jun 2020 17:18:13 +0000 Received: from AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7]) by AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7%2]) with mapi id 15.20.3066.023; Wed, 10 Jun 2020 17:18:13 +0000 From: Parav Pandit To: dev@dpdk.org Cc: ferruh.yigit@intel.com, thomasm@mellanox.com, orika@mellanox.com, matan@mellanox.com, Parav Pandit Date: Wed, 10 Jun 2020 17:17:26 +0000 Message-Id: <20200610171728.89-5-parav@mellanox.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20200610171728.89-1-parav@mellanox.com> References: <20200610171728.89-1-parav@mellanox.com> X-ClientProxiedBy: SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) To AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.21 via Frontend Transport; Wed, 10 Jun 2020 17:18:12 +0000 X-Mailer: git-send-email 2.25.4 X-Originating-IP: [208.176.44.194] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6575a660-ec3d-4d3f-a15e-08d80d6241ba X-MS-TrafficTypeDiagnostic: AM0PR05MB5346: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-Forefront-PRVS: 0430FA5CB7 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UDKMqEKpAyalZbCOsq9UYs8NonBZyMH2VgyrhqMmTYQyz5Hn8kmc58AwZVImB/tywIrVBSXkGtktvUV3EJhAuIyvDoJ3641j2bTV5Bpnv2pycR2AmDVLD/Zq03MUtKZvHQ0V9hwWdV+Xxp3w2Aw3jWAZtUl3nNlEXyGMRSrs7QJggtKIlD07B8xi9Rdmx09aAPBVU2eNmkvbTh2pAEqvaKNqqBCx+fYO7SMpyFPDohQB6v/NFZwxLCy81hCVcL2JXnVqI1CKgDkxm1yQ1+mjOzCzeMcq6aYP3OznCDGkjFXMrc9gn8VNsBFsaG/I3GLz X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4866.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(136003)(39860400002)(376002)(66476007)(6506007)(36756003)(16526019)(6486002)(6916009)(2906002)(316002)(26005)(5660300002)(186003)(66556008)(66946007)(6512007)(6666004)(8936002)(8676002)(4326008)(2616005)(83380400001)(956004)(478600001)(1076003)(86362001)(52116002)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: hGKCIrDAi3Mng0bIC1qd41wp5QJ7DiZsOlzKC0vER+hdQnaeC15Q1eAkM4WrvIwzE3ChEHkLGpib3bJ6bG//0QJyPgQTHCDeCTbiC07SR/8z6z9teS7EwAAPpN6xnvVJuISPKKmSi9xz/xWjdGKBK1Lj4v1rcJViKnPE68Ag83LB4E0W3bMFgS4Oky18FpMvEgO6z6hydUFYQDFZzuKmdkwes4gC9BMrJrTPkEtRcgzFNJXS+ytccYl9TwWk6aCasJKz60z49Tgz5YYWlh45w4E5H7ez4ZNN9rr+Xko73dPdlRxzRkYpqoZx/uCeXNTqzkPIJdd1b2JSBg7W6+bN3YngKR7Y8iI0qkEsy48kPYQrjanpjagrZkCvcJ5RhXxRa7KzVREhslUgeQXz+Gty6Xhkms5zEPc2AQF/A/X00V7+WxwS9heKQfpai7q9J+D8zkuAoeZ069iKRzcQ5TmqOj8WkN/qOBrXqcuJ2X6CsvLQNet1LNSEGFQU7fJJHYmo X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6575a660-ec3d-4d3f-a15e-08d80d6241ba X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2020 17:18:13.7718 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: JYmL43I9z97oZUBpKy6rkRBm6Dj6NG7fNYyIOo4BKRMDDGruK+13Mg+8K0xp03mlnAXwuwXqs/VHLXeDj/o98A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB5346 Subject: [dpdk-dev] [RFC PATCH 4/6] bus/mlx5_pci: add mlx5 PCI bus X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add mlx5 PCI bus which enables multiple mlx5 drivers to bind to single pci device. Signed-off-by: Parav Pandit --- config/common_base | 6 ++ config/defconfig_arm64-bluefield-linuxapp-gcc | 6 ++ drivers/bus/meson.build | 2 +- drivers/bus/mlx5_pci/Makefile | 48 ++++++++++++++ drivers/bus/mlx5_pci/meson.build | 6 ++ drivers/bus/mlx5_pci/mlx5_pci_bus.c | 14 ++++ drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h | 65 +++++++++++++++++++ .../bus/mlx5_pci/rte_bus_mlx5_pci_version.map | 5 ++ 8 files changed, 151 insertions(+), 1 deletion(-) create mode 100644 drivers/bus/mlx5_pci/Makefile create mode 100644 drivers/bus/mlx5_pci/meson.build create mode 100644 drivers/bus/mlx5_pci/mlx5_pci_bus.c create mode 100644 drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h create mode 100644 drivers/bus/mlx5_pci/rte_bus_mlx5_pci_version.map diff --git a/config/common_base b/config/common_base index c7d5c7321..f75b333f9 100644 --- a/config/common_base +++ b/config/common_base @@ -366,6 +366,12 @@ CONFIG_RTE_LIBRTE_IGC_DEBUG_TX=n CONFIG_RTE_LIBRTE_MLX4_PMD=n CONFIG_RTE_LIBRTE_MLX4_DEBUG=n +# +# Compile Mellanox PCI BUS for ConnectX-4, ConnectX-5, +# ConnectX-6 & BlueField (MLX5) PMD +# +CONFIG_RTE_LIBRTE_MLX5_PCI_BUS=n + # # Compile burst-oriented Mellanox ConnectX-4, ConnectX-5, # ConnectX-6 & BlueField (MLX5) PMD diff --git a/config/defconfig_arm64-bluefield-linuxapp-gcc b/config/defconfig_arm64-bluefield-linuxapp-gcc index b49653881..15ade7ebc 100644 --- a/config/defconfig_arm64-bluefield-linuxapp-gcc +++ b/config/defconfig_arm64-bluefield-linuxapp-gcc @@ -14,5 +14,11 @@ CONFIG_RTE_CACHE_LINE_SIZE=64 CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=n CONFIG_RTE_LIBRTE_VHOST_NUMA=n +# +# Compile Mellanox PCI BUS for ConnectX-4, ConnectX-5, +# ConnectX-6 & BlueField (MLX5) PMD +# +CONFIG_RTE_LIBRTE_MLX5_PCI_BUS=n + # PMD for ConnectX-5 CONFIG_RTE_LIBRTE_MLX5_PMD=y diff --git a/drivers/bus/meson.build b/drivers/bus/meson.build index 80de2d91d..b1381838d 100644 --- a/drivers/bus/meson.build +++ b/drivers/bus/meson.build @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -drivers = ['dpaa', 'fslmc', 'ifpga', 'pci', 'vdev', 'vmbus'] +drivers = ['dpaa', 'fslmc', 'ifpga', 'pci', 'mlx5_pci', 'vdev', 'vmbus'] std_deps = ['eal'] config_flag_fmt = 'RTE_LIBRTE_@0@_BUS' driver_name_fmt = 'rte_bus_@0@' diff --git a/drivers/bus/mlx5_pci/Makefile b/drivers/bus/mlx5_pci/Makefile new file mode 100644 index 000000000..b36916e52 --- /dev/null +++ b/drivers/bus/mlx5_pci/Makefile @@ -0,0 +1,48 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright 2020 Mellanox Technologies, Ltd + +include $(RTE_SDK)/mk/rte.vars.mk + +# +# library name +# +LIB = librte_bus_mlx5_pci.a + +CFLAGS += -O3 +CFLAGS += $(WERROR_FLAGS) +CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5 +CFLAGS += -I$(BUILDDIR)/drivers/common/mlx5 +CFLAGS += -I$(RTE_SDK)/drivers/bus/pci +CFLAGS += -Wno-strict-prototypes +LDLIBS += -lrte_eal +LDLIBS += -lrte_common_mlx5 +LDLIBS += -lrte_pci -lrte_bus_pci + +# versioning export map +EXPORT_MAP := rte_bus_mlx5_pci_version.map + +SRCS-y += mlx5_pci_bus.c + +# DEBUG which is usually provided on the command-line may enable +# CONFIG_RTE_LIBRTE_MLX5_DEBUG. +ifeq ($(DEBUG),1) +CONFIG_RTE_LIBRTE_MLX5_DEBUG := y +endif + +# User-defined CFLAGS. +ifeq ($(CONFIG_RTE_LIBRTE_MLX5_DEBUG),y) +CFLAGS += -pedantic +ifneq ($(CONFIG_RTE_TOOLCHAIN_ICC),y) +CFLAGS += -DPEDANTIC +endif +AUTO_CONFIG_CFLAGS += -Wno-pedantic +else +CFLAGS += -UPEDANTIC +endif + +# +# Export include files +# +SYMLINK-y-include += rte_bus_mlx5_pci.h + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/bus/mlx5_pci/meson.build b/drivers/bus/mlx5_pci/meson.build new file mode 100644 index 000000000..cc4a84e23 --- /dev/null +++ b/drivers/bus/mlx5_pci/meson.build @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2020 Mellanox Technologies Ltd + +deps += ['pci', 'bus_pci', 'common_mlx5'] +install_headers('rte_bus_mlx5_pci.h') +sources = files('mlx5_pci_bus.c') diff --git a/drivers/bus/mlx5_pci/mlx5_pci_bus.c b/drivers/bus/mlx5_pci/mlx5_pci_bus.c new file mode 100644 index 000000000..66db3c7b0 --- /dev/null +++ b/drivers/bus/mlx5_pci/mlx5_pci_bus.c @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2020 Mellanox Technologies, Ltd + */ + +#include "rte_bus_mlx5_pci.h" + +static TAILQ_HEAD(mlx5_pci_bus_drv_head, rte_mlx5_pci_driver) drv_list = + TAILQ_HEAD_INITIALIZER(drv_list); + +void +rte_mlx5_pci_driver_register(struct rte_mlx5_pci_driver *driver) +{ + TAILQ_INSERT_TAIL(&drv_list, driver, next); +} diff --git a/drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h b/drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h new file mode 100644 index 000000000..b0423f99e --- /dev/null +++ b/drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2020 Mellanox Technologies, Ltd + */ + +#ifndef _RTE_BUS_MLX5_PCI_H_ +#define _RTE_BUS_MLX5_PCI_H_ + +/** + * @file + * + * RTE Mellanox PCI Bus Interface + * Mellanox ConnectX PCI device supports multiple class (net/vdpa/regex) + * devices. This bus enables creating such multiple class of devices on a + * single PCI device by allowing to bind multiple class specific device + * driver to attach to mlx5_pci bus driver. + */ + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#include +#include + +#include + +/** + * A structure describing a mlx5 pci driver. + */ +struct rte_mlx5_pci_driver { + enum mlx5_class dev_class; /**< Class of this driver */ + struct rte_driver driver; /**< Inherit core driver. */ + pci_probe_t *probe; /**< Class device probe function. */ + pci_remove_t *remove; /**< Class device remove function. */ + pci_dma_map_t *dma_map; /**< Class device dma map function. */ + pci_dma_unmap_t *dma_unmap; /**< Class device dma unmap function. */ + TAILQ_ENTRY(rte_mlx5_pci_driver) next; + const struct rte_pci_id *id_table; /**< ID table, NULL terminated. */ +}; + +/** + * Register a mlx5_pci device driver. + * + * @param driver + * A pointer to a rte_mlx5_pci_driver structure describing the driver + * to be registered. + */ +__rte_internal +void +rte_mlx5_pci_driver_register(struct rte_mlx5_pci_driver *driver); + +#define RTE_PMD_REGISTER_MLX5_PCI(nm, drv) \ +static const char *mlx5_pci_drvinit_fn_ ## nm; \ +RTE_INIT(mlx5_pci_drvinit_fn_ ##drv) \ +{ \ + (drv).driver.name = RTE_STR(nm); \ + rte_mlx5_pci_driver_register(&drv); \ +} \ +RTE_PMD_EXPORT_NAME(nm, __COUNTER__) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _RTE_BUS_MLX5_PCI_H_ */ diff --git a/drivers/bus/mlx5_pci/rte_bus_mlx5_pci_version.map b/drivers/bus/mlx5_pci/rte_bus_mlx5_pci_version.map new file mode 100644 index 000000000..4cfd3db10 --- /dev/null +++ b/drivers/bus/mlx5_pci/rte_bus_mlx5_pci_version.map @@ -0,0 +1,5 @@ +INTERNAL { + global: + + rte_mlx5_pci_driver_register; +}; From patchwork Wed Jun 10 17:17:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Parav Pandit X-Patchwork-Id: 71209 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id EA7E8A051E; Wed, 10 Jun 2020 19:18:57 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D01FE1C00F; Wed, 10 Jun 2020 19:18:18 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2085.outbound.protection.outlook.com [40.107.22.85]) by dpdk.org (Postfix) with ESMTP id CEA2E1C001 for ; Wed, 10 Jun 2020 19:18:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SDv3L91T0FCSfsZFCSywcPzxBl9L1UABnXzBPkwGmBHYkpu5gOgosU6KoyW3UH/NV0EqGIxdl6kS0tNbFarXxveSLRiy/Xhm+riwgq75u4LbLInx85Q+kS+6tIbLCBjA5FoIOAUnC4naNxruTrfTHwIFI89hC0ndXr6DTRftEhfo3SP1ibxdCdtNyXfv1X9OCtzwp/tZCJ4Ovzj7SPJkkO+gMxSfBxNDry2gqEyEd4ybKyGeRRfas5ctFXDhSEoIUh09MN0cJ72Wmm+/toTel7I+R9GBcb4C/BQ3hlVX26eZve8TeqcCC6Ae3kmQqmN5wl4On29osRoVa79ZLfjU0g== 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-SenderADCheck; bh=K+klCllpONd47z76Tr5dhpDF2C+vsILEa+yIQSRBKms=; b=NJTaJqaNgOMxStBDRaSKbk0mFwsl8j/GJ8kHNjd/UbUH/aBEzFdFTMXoD4PDQBFbAwfU9dAf1r0CpwhMO6kdtw7KYaOt2H4jnzOP3OPg0WSDmxKOeHmwGoJHEr4kcXgZB6BZNlYUUD/Rh6iqAvY6Y0jbpQRdXW4zOKDY+7atFnwgLEgFYdY05B8xJ3T0urc1cRQgWAlYVsPiDn4aXiLuefizdISnEaYk/IDW/xJgMdo34zKfTIUQvMXWext48SJ5LDVorwpkrjiH26JpLqGKcTZzVG9/TzKJj0D7+Wv6u+YLXEJZrslG1b5Wc7q+J6j5e7rYLF5ZJq9g+RBHGoVYcQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K+klCllpONd47z76Tr5dhpDF2C+vsILEa+yIQSRBKms=; b=bsgHG+VmViFEy2ZgWWM88II86V0v50oBW2IhbwnRSBMW7XjNZ+1vpMN0cxiDOz4CW/oTeIS2fpklgjxdkjNvdbTFZD3TGrbvRd7zmUXSqiNZuN8a006iiZ8R9DMNM0qQNxVRnbJ3OhrNlG3qQSa0gwaFEX32cF6mWjY423zXmgQ= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) by AM0PR05MB5346.eurprd05.prod.outlook.com (2603:10a6:208:f5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 10 Jun 2020 17:18:15 +0000 Received: from AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7]) by AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7%2]) with mapi id 15.20.3066.023; Wed, 10 Jun 2020 17:18:15 +0000 From: Parav Pandit To: dev@dpdk.org Cc: ferruh.yigit@intel.com, thomasm@mellanox.com, orika@mellanox.com, matan@mellanox.com, Parav Pandit Date: Wed, 10 Jun 2020 17:17:27 +0000 Message-Id: <20200610171728.89-6-parav@mellanox.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20200610171728.89-1-parav@mellanox.com> References: <20200610171728.89-1-parav@mellanox.com> X-ClientProxiedBy: SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) To AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.21 via Frontend Transport; Wed, 10 Jun 2020 17:18:14 +0000 X-Mailer: git-send-email 2.25.4 X-Originating-IP: [208.176.44.194] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b04cccab-6d63-470b-b8cf-08d80d6242cf X-MS-TrafficTypeDiagnostic: AM0PR05MB5346: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4303; X-Forefront-PRVS: 0430FA5CB7 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JtHaJ2Md8hNDgu+Ai0Ktn9W+lKCl7iOab84x+GdIliiSj1vLoEuJ4QBtqlNbD42OAcUbLi+4ViSk2yiPDjKMWIeoHSIpdy3/UAEAmMYM7uzBIZWO0fH0TXooNv0t9YVT03rHNKyGn3ZSV3+pnQjQhZ+RC80x1k+O35iaVXdczEwNGD1UDjBumzuu0Gd5wpnyrk3DjQLzKK7EvedLZFLDqnErSXlK+ROY5MHtgOi5bpRk1U4FzjWt0i9ljewXlrh+pbTVm3QAzDjsMjm/G39qzhPdREvfOUiretkKzik1/1lvC7l4KIb29P+fJq1y/mUY X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4866.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(136003)(39860400002)(376002)(66476007)(6506007)(36756003)(16526019)(6486002)(6916009)(2906002)(316002)(26005)(5660300002)(186003)(66556008)(66946007)(6512007)(6666004)(8936002)(8676002)(4326008)(2616005)(83380400001)(956004)(478600001)(1076003)(86362001)(52116002)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: uKFZl2Q+fwXJYZAWvLrIO9TsrnFLGO+X5eZcJUxUiR6b8sFMeP9uX3XsLgiXj+GshLq5RUD913hSsF4Dq7DG26BGvX8rmNKdtB66T/+hkaRY+4VQVxDx/rFkCRVp3XAvsCHfQlExwYVx4xqLgc5Zi/KViuioemSKEje5o2ayiT/MxCYG5WJ3SRXXIj1Sm8e7tTmuLJAq4lKBkZKkxk43kw29mQpL56/PBOt7h+kHM/n7gGIskt7K/zYhIJq2rPoLnlPf+Bn6xNLjd9YOpVrSa91yyQz8ebz/Rl4QdQzn5BRThYNPs/VggBdFVr7FDnJEIFWuer9ntJULUNV1xzSYNVI3o04a/c81n3ezlV/IS93M36xSjc5caAoMbAFYxDLDi0ic/wZnPLRw4NPYHTbIk6xTOCCZXPji0i6gnww3aa/ZuT/uSb6Tv2sgvG4wO8UuppzvcejLnfBQIUr+K3C+8jXXvSqCoQ4G8J4Mqv7WrBHntSVW20+sSqgaXmurbnPX X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: b04cccab-6d63-470b-b8cf-08d80d6242cf X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2020 17:18:15.5238 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HzpHqCJFUIKnrgR5f5U/qmO86m7vwl71eogSN0BSG6HJGVc9wmfvh6elQZmDejg7P+O3xVhNr8R1r55dlpIVBQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB5346 Subject: [dpdk-dev] [RFC PATCH 5/6] bus/mlx5_pci: register a PCI driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Create a mlx5 bus driver framework for invoking drivers of multiple classes who have registered with the mlx5_pci bus driver. Validate user class arguments for supported class combinations. Signed-off-by: Parav Pandit --- drivers/bus/mlx5_pci/Makefile | 1 + drivers/bus/mlx5_pci/meson.build | 2 +- drivers/bus/mlx5_pci/mlx5_pci_bus.c | 253 ++++++++++++++++++++++++ drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h | 1 + 4 files changed, 256 insertions(+), 1 deletion(-) diff --git a/drivers/bus/mlx5_pci/Makefile b/drivers/bus/mlx5_pci/Makefile index b36916e52..327076fe4 100644 --- a/drivers/bus/mlx5_pci/Makefile +++ b/drivers/bus/mlx5_pci/Makefile @@ -15,6 +15,7 @@ CFLAGS += -I$(BUILDDIR)/drivers/common/mlx5 CFLAGS += -I$(RTE_SDK)/drivers/bus/pci CFLAGS += -Wno-strict-prototypes LDLIBS += -lrte_eal +LDLIBS += -lrte_kvargs LDLIBS += -lrte_common_mlx5 LDLIBS += -lrte_pci -lrte_bus_pci diff --git a/drivers/bus/mlx5_pci/meson.build b/drivers/bus/mlx5_pci/meson.build index cc4a84e23..5111baa4e 100644 --- a/drivers/bus/mlx5_pci/meson.build +++ b/drivers/bus/mlx5_pci/meson.build @@ -1,6 +1,6 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2020 Mellanox Technologies Ltd -deps += ['pci', 'bus_pci', 'common_mlx5'] +deps += ['pci', 'bus_pci', 'common_mlx5', 'kvargs'] install_headers('rte_bus_mlx5_pci.h') sources = files('mlx5_pci_bus.c') diff --git a/drivers/bus/mlx5_pci/mlx5_pci_bus.c b/drivers/bus/mlx5_pci/mlx5_pci_bus.c index 66db3c7b0..8108e35ea 100644 --- a/drivers/bus/mlx5_pci/mlx5_pci_bus.c +++ b/drivers/bus/mlx5_pci/mlx5_pci_bus.c @@ -3,12 +3,265 @@ */ #include "rte_bus_mlx5_pci.h" +#include static TAILQ_HEAD(mlx5_pci_bus_drv_head, rte_mlx5_pci_driver) drv_list = TAILQ_HEAD_INITIALIZER(drv_list); +struct class_map { + const char *name; + enum mlx5_class dev_class; +}; + +const struct class_map mlx5_classes[] = { + { .name = "vdpa", .dev_class = MLX5_CLASS_VDPA }, + { .name = "net", .dev_class = MLX5_CLASS_NET }, +}; + +static const enum mlx5_class mlx5_valid_class_combo[] = { + MLX5_CLASS_NET, + MLX5_CLASS_VDPA, + /* New class combination should be added here */ +}; + +static const struct class_map *is_valid_class(const char *class_name) +{ + unsigned int i; + + for (i = 0; i < sizeof(mlx5_classes) / sizeof(struct class_map); + i++) { + if (strcmp(class_name, mlx5_classes[i].name) == 0) + return &mlx5_classes[i]; + + } + return NULL; +} + +static int is_valid_class_combo(const char *class_names) +{ + enum mlx5_class user_classes = 0; + char *nstr = strdup(class_names); + const struct class_map *entry; + char *copy = nstr; + int invalid = 0; + unsigned int i; + char *found; + + while (nstr) { + /* Extract each individual class name */ + found = strsep(&nstr, ":"); + if (!found) + continue; + + /* Check if its a valid class */ + entry = is_valid_class(found); + if (!entry) { + invalid = EINVAL; + break; + } + user_classes |= entry->dev_class; + } + if (copy) + free(copy); + if (invalid) + return invalid; + + /* Verify if user specified valid supported combination */ + for (i = 0; + i < sizeof(mlx5_valid_class_combo) / sizeof(enum mlx5_class); + i++) { + if (mlx5_valid_class_combo[i] == user_classes) + break; + } + /* Not found any valid class combination */ + if (i == sizeof(mlx5_valid_class_combo) / sizeof(enum mlx5_class)) + return -EINVAL; + else + return 0; +} + +static int +mlx5_bus_opt_handler(__rte_unused const char *key, const char *value, + void *opaque) +{ + int *ret = opaque; + + *ret = is_valid_class_combo(value); + if (*ret) + DRV_LOG(ERR, "Invalid mlx5 classes %s. Maybe typo in device" + " class argument setting?", value); + return 0; +} + +static int +mlx5_bus_options_valid(const struct rte_devargs *devargs) +{ + struct rte_kvargs *kvlist; + const char *key = MLX5_CLASS_ARG_NAME; + int ret = 0; + + if (devargs == NULL) + return 0; + kvlist = rte_kvargs_parse(devargs->args, NULL); + if (kvlist == NULL) + return 0; + if (rte_kvargs_count(kvlist, key)) + rte_kvargs_process(kvlist, key, mlx5_bus_opt_handler, &ret); + rte_kvargs_free(kvlist); + return ret; +} + void rte_mlx5_pci_driver_register(struct rte_mlx5_pci_driver *driver) { TAILQ_INSERT_TAIL(&drv_list, driver, next); } + +static bool +mlx5_bus_match(const struct rte_mlx5_pci_driver *drv, + const struct rte_pci_device *pci_dev) +{ + const struct rte_pci_id *id_table; + + for (id_table = drv->id_table; id_table->vendor_id != 0; id_table++) { + /* check if device's ids match the class driver's ones */ + if (id_table->vendor_id != pci_dev->id.vendor_id && + id_table->vendor_id != PCI_ANY_ID) + continue; + if (id_table->device_id != pci_dev->id.device_id && + id_table->device_id != PCI_ANY_ID) + continue; + if (id_table->subsystem_vendor_id != + pci_dev->id.subsystem_vendor_id && + id_table->subsystem_vendor_id != PCI_ANY_ID) + continue; + if (id_table->subsystem_device_id != + pci_dev->id.subsystem_device_id && + id_table->subsystem_device_id != PCI_ANY_ID) + continue; + if (id_table->class_id != pci_dev->id.class_id && + id_table->class_id != RTE_CLASS_ANY_ID) + continue; + + return true; + } + return false; +} + +/** + * DPDK callback to register to probe multiple PCI class devices. + * + * @param[in] pci_drv + * PCI driver structure. + * @param[in] dev + * PCI device information. + * + * @return + * 0 on success, 1 to skip this driver, a negative errno value otherwise + * and rte_errno is set. + */ +static int +mlx5_bus_pci_probe(struct rte_pci_driver *drv __rte_unused, + struct rte_pci_device *dev) +{ + struct rte_mlx5_pci_driver *class; + int ret = 0; + + ret = mlx5_bus_options_valid(dev->device.devargs); + if (ret) + return ret; + + TAILQ_FOREACH(class, &drv_list, next) { + if (!mlx5_bus_match(class, dev)) + continue; + + if (!mlx5_class_enabled(dev->device.devargs, class->dev_class)) + continue; + + ret = class->probe(drv, dev); + if (!ret) + class->loaded = true; + } + return 0; +} + +/** + * DPDK callback to remove one or more class devices for a PCI device. + * + * This function removes all class devices belong to a given PCI device. + * + * @param[in] pci_dev + * Pointer to the PCI device. + * + * @return + * 0 on success, the function cannot fail. + */ +static int +mlx5_bus_pci_remove(struct rte_pci_device *dev) +{ + struct rte_mlx5_pci_driver *class; + + /* Remove each class driver in reverse order */ + TAILQ_FOREACH_REVERSE(class, &drv_list, mlx5_pci_bus_drv_head, next) { + if (!mlx5_class_enabled(dev->device.devargs, class->dev_class)) + continue; + + if (class->loaded) + class->remove(dev); + } + return 0; +} + +static int +mlx5_bus_pci_dma_map(struct rte_pci_device *dev, void *addr, + uint64_t iova, size_t len) +{ + struct rte_mlx5_pci_driver *class; + int ret = -EINVAL; + + TAILQ_FOREACH(class, &drv_list, next) { + if (!class->dma_map) + continue; + + return class->dma_map(dev, addr, iova, len); + } + return ret; +} + +static int +mlx5_bus_pci_dma_unmap(struct rte_pci_device *dev, void *addr, + uint64_t iova, size_t len) +{ + struct rte_mlx5_pci_driver *class; + int ret = -EINVAL; + + TAILQ_FOREACH_REVERSE(class, &drv_list, mlx5_pci_bus_drv_head, next) { + if (!class->dma_unmap) + continue; + + return class->dma_unmap(dev, addr, iova, len); + } + return ret; +} + +static const struct rte_pci_id mlx5_bus_pci_id_map[] = { + { + .vendor_id = 0 + } +}; + +static struct rte_pci_driver mlx5_bus_driver = { + .driver = { + .name = "mlx5_bus_pci", + }, + .id_table = mlx5_bus_pci_id_map, + .probe = mlx5_bus_pci_probe, + .remove = mlx5_bus_pci_remove, + .dma_map = mlx5_bus_pci_dma_map, + .dma_unmap = mlx5_bus_pci_dma_unmap, + .drv_flags = RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_INTR_RMV | + RTE_PCI_DRV_PROBE_AGAIN, +}; + +RTE_PMD_REGISTER_PCI(mlx5_bus, mlx5_bus_driver); +RTE_PMD_REGISTER_PCI_TABLE(mlx5_bus, mlx5_bus_pci_id_map); diff --git a/drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h b/drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h index b0423f99e..7be9a15cd 100644 --- a/drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h +++ b/drivers/bus/mlx5_pci/rte_bus_mlx5_pci.h @@ -36,6 +36,7 @@ struct rte_mlx5_pci_driver { pci_dma_unmap_t *dma_unmap; /**< Class device dma unmap function. */ TAILQ_ENTRY(rte_mlx5_pci_driver) next; const struct rte_pci_id *id_table; /**< ID table, NULL terminated. */ + bool loaded; }; /** From patchwork Wed Jun 10 17:17:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Parav Pandit X-Patchwork-Id: 71210 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4ABBFA051E; Wed, 10 Jun 2020 19:19:10 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 61ABA1C036; Wed, 10 Jun 2020 19:18:20 +0200 (CEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2058.outbound.protection.outlook.com [40.107.22.58]) by dpdk.org (Postfix) with ESMTP id 3EE751BF70 for ; Wed, 10 Jun 2020 19:18:18 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gT7J48bGJH5UneufnmZendFZuvHMid5KoAib0WfSkgKT0doIMpHg+/1Bfi4p8b9dgtPwDeyC5D3xlMlf74mSXNAHoRWQtXf9MeFhf/Tqt/WTYS1PAnxLIsH10cI38rb+TyzMonWcG6OCqJsAXRbSx49cPWHG4IP/Zasdo4lHMh2RbdmIDz8Lct5qeBG2EkrPXd2SojOHvHFPyKuF0T1XidxZAkRjZywHfA6vQYmuJejmxNhxjRtngcK2GQe9OC8d/Q5tp4R9/NfsDSXk9AEyTTPKLfIiZW9XAoBWtmHOaoHUuAFyvK4bAqOz2fZ9ckjdmVAp+8dt2s7ZLI5SwlmQkQ== 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-SenderADCheck; bh=6f7daIVq/O2us2F12OzzSCsJcBUdN33buu19egEKOqU=; b=bVxIx7Ko1pcyPlnf2aGOki587lSINK+eNwGfDSP10c+/XVxJJF/uch0PcN2hDMPjZsRbRAj3hN4be2g5AzKVL1NBOEvkNbYpynLF7DpEsXnL2sYZHaECqUhZSiepgO3CZV7Tj5WLfN/4To9RsOShBgDltTm4sge0TIzS2d4uZha9vaWM+7zKvQgXYNgHmv1oWezNmYO6u6C1Lk+f+AvxqMIZDdopdPuZNuM43qsEz6UwphY+s9F+p/oCrZrfFlxYySJo4JDeorSQ4EWjfZGxlGF0HfkYtmEZ8LwT8grmvi08rD4WCQdGmUqGFdeRmdgiYhcfkOuzcD1WAYtCaJyOYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6f7daIVq/O2us2F12OzzSCsJcBUdN33buu19egEKOqU=; b=JQcbTEyavF4aA09u085i9F9QqjoBQIEWGOC3s18AVMrXZcFncsAw89Qm8efnCqZgz00kj+oSMN06zGxPlyfaw4KQwofZv7T1vZ/5h1rB1mg38bS/c5wZleLRjX7vxFQfy0NuNpyn860LMku9O1nof1Ig8gPF0x3N2mZttwMt7+A= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=mellanox.com; Received: from AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) by AM0PR05MB5346.eurprd05.prod.outlook.com (2603:10a6:208:f5::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3066.18; Wed, 10 Jun 2020 17:18:17 +0000 Received: from AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7]) by AM0PR05MB4866.eurprd05.prod.outlook.com ([fe80::d44d:a804:c730:d2b7%2]) with mapi id 15.20.3066.023; Wed, 10 Jun 2020 17:18:17 +0000 From: Parav Pandit To: dev@dpdk.org Cc: ferruh.yigit@intel.com, thomasm@mellanox.com, orika@mellanox.com, matan@mellanox.com, Parav Pandit Date: Wed, 10 Jun 2020 17:17:28 +0000 Message-Id: <20200610171728.89-7-parav@mellanox.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: <20200610171728.89-1-parav@mellanox.com> References: <20200610171728.89-1-parav@mellanox.com> X-ClientProxiedBy: SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) To AM0PR05MB4866.eurprd05.prod.outlook.com (2603:10a6:208:c0::32) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sw-mtx-036.mtx.labs.mlnx (208.176.44.194) by SN6PR16CA0060.namprd16.prod.outlook.com (2603:10b6:805:ca::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3088.21 via Frontend Transport; Wed, 10 Jun 2020 17:18:15 +0000 X-Mailer: git-send-email 2.25.4 X-Originating-IP: [208.176.44.194] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: e02a7528-b853-4caa-9572-08d80d6243ca X-MS-TrafficTypeDiagnostic: AM0PR05MB5346: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:568; X-Forefront-PRVS: 0430FA5CB7 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 8uvLX19T5KOlqmPVs8Y7soJuSLr8JwsaoI5YWH8/YW1ig/Ajq6Hu2fM6dqeheefsDwy7r6URxo0bGNljZURFPeSVk4WO2wzUFPxUUxms/HVyQGQfLlHYi7Dp4jWbkT5GYfP59Pjlnc/IdrLGK0amzffuZ/IXYsu8IO8rgnKvrE1Kc2S0+gEZapNDnqKdjL/CDdEwsNIEYuOwZE8u0BdS460vZaQ384AFvNa1vJO7i7rRe3YddpqiTOxyUvJlXyXcJXtxURopXX4SSTx6DuEH8by+DJFwisFWJzURYWPSTq8neyVeXo9/jcV+VXrifDet X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM0PR05MB4866.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(366004)(346002)(396003)(136003)(39860400002)(376002)(66476007)(6506007)(36756003)(16526019)(6486002)(6916009)(2906002)(316002)(26005)(5660300002)(186003)(66556008)(66946007)(6512007)(6666004)(8936002)(8676002)(4326008)(2616005)(83380400001)(956004)(478600001)(1076003)(86362001)(52116002)(107886003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 0dqeD04mIz2WnebYiGcBAHv/lERbXcqhW5BxvSRYxRVbCNYF4A25W7Da1vtHO2gI6LLf5vUI1VwTlq2/ds/yalixGkp84Q6Sbrj6G82ci0laiZm+UYYIM1tTQiAixkdl+0yh7ECGxsL4NoqAIReC6Mp9zf+ithXDeTKaf738w2hlfaTEuNBd5/gsh+c2y+sX83jJZdfEFqGAI7xCYmn68yCTrYYVcIvOnh6ESpiIcknSiMzBdwVroUF0joNX6KdHm+V5BgLKgzOhqaQwbtnSrQt8viEfb95HfremPbuJzJkqGlBFQxmhC1jiqMlboCx25gyuaAYRHJxW0U7lWV6K5x+V5+yVoZjDu9RljyFoc/ZiV5BMTwTnlcgEuYQ9ohRDmTUNtRQ6Yjel4YeTBl5LiQWY0zy7q/Q7UutQWKw7E/F1x2GqQbPIKVFeAyPyGbl230NJ+JJuYqUkJ+tir32bi/tvqJJ5JJDoB731Ihpi1t3K4b9Fb3uacur5yr4RfwG4 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: e02a7528-b853-4caa-9572-08d80d6243ca X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2020 17:18:17.2039 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Prm/LMcj5kngGck7WGLNScbNkfvSjNwTpYgKybtfDGvGeb2udxkXRpBjxDbnEkiIEmsX+KpupZVof9cLAsaYwQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB5346 Subject: [dpdk-dev] [RFC PATCH 6/6] bus/mlx5_pci: enable net and vDPA to use mlx5 PCI bus driver X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Enable class driver to match with the mlx5 pci devices. Migrate mlx5 net PMD and vdpa PMD to start using mlx5 common class driver. Signed-off-by: Parav Pandit --- drivers/bus/Makefile | 3 ++ drivers/bus/mlx5_pci/mlx5_pci_bus.c | 60 +++++++++++++++++++++++++++++ drivers/net/mlx5/Makefile | 3 +- drivers/net/mlx5/linux/mlx5_os.c | 1 - drivers/net/mlx5/linux/mlx5_os.h | 3 -- drivers/net/mlx5/meson.build | 2 +- drivers/net/mlx5/mlx5.c | 7 ++-- drivers/net/mlx5/mlx5.h | 1 - drivers/vdpa/mlx5/Makefile | 3 +- drivers/vdpa/mlx5/meson.build | 2 +- drivers/vdpa/mlx5/mlx5_vdpa.c | 10 ++--- mk/rte.app.mk | 1 + 12 files changed, 79 insertions(+), 17 deletions(-) diff --git a/drivers/bus/Makefile b/drivers/bus/Makefile index cea3b55e6..3840ac51c 100644 --- a/drivers/bus/Makefile +++ b/drivers/bus/Makefile @@ -8,6 +8,9 @@ ifeq ($(CONFIG_RTE_EAL_VFIO),y) DIRS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc endif DIRS-$(CONFIG_RTE_LIBRTE_IFPGA_BUS) += ifpga +ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y) +DIRS-y += mlx5_pci +endif DIRS-$(CONFIG_RTE_LIBRTE_PCI_BUS) += pci DIRS-$(CONFIG_RTE_LIBRTE_VDEV_BUS) += vdev DIRS-$(CONFIG_RTE_LIBRTE_VMBUS) += vmbus diff --git a/drivers/bus/mlx5_pci/mlx5_pci_bus.c b/drivers/bus/mlx5_pci/mlx5_pci_bus.c index 8108e35ea..ca001f3c6 100644 --- a/drivers/bus/mlx5_pci/mlx5_pci_bus.c +++ b/drivers/bus/mlx5_pci/mlx5_pci_bus.c @@ -245,6 +245,66 @@ mlx5_bus_pci_dma_unmap(struct rte_pci_device *dev, void *addr, } static const struct rte_pci_id mlx5_bus_pci_id_map[] = { + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX4) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX4VF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX4LX) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX4LXVF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX5) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX5VF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX5EX) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX5EXVF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX5BF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX5BFVF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX6) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX6VF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX6DX) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX6DXVF) + }, + { + RTE_PCI_DEVICE(PCI_VENDOR_ID_MELLANOX, + PCI_DEVICE_ID_MELLANOX_CONNECTX6DXBF) + }, { .vendor_id = 0 } diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile index 41ab73e5c..ccb38245d 100644 --- a/drivers/net/mlx5/Makefile +++ b/drivers/net/mlx5/Makefile @@ -43,16 +43,17 @@ CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5/linux CFLAGS += -I$(RTE_SDK)/drivers/net/mlx5 CFLAGS += -I$(RTE_SDK)/drivers/net/mlx5/linux CFLAGS += -I$(BUILDDIR)/drivers/common/mlx5 +CFLAGS += -I$(RTE_SDK)/drivers/bus/mlx5_pci CFLAGS += -D_BSD_SOURCE CFLAGS += -D_DEFAULT_SOURCE CFLAGS += -D_XOPEN_SOURCE=600 CFLAGS += $(WERROR_FLAGS) CFLAGS += -Wno-strict-prototypes LDLIBS += -lrte_common_mlx5 +LDLIBS += -lrte_bus_mlx5_pci LDLIBS += -lm LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring LDLIBS += -lrte_ethdev -lrte_net -lrte_kvargs -LDLIBS += -lrte_bus_pci # A few warnings cannot be avoided in external headers. CFLAGS += -Wno-error=cast-qual diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c index 06772b7ae..61e3b8a80 100644 --- a/drivers/net/mlx5/linux/mlx5_os.c +++ b/drivers/net/mlx5/linux/mlx5_os.c @@ -1391,7 +1391,6 @@ mlx5_os_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, strerror(rte_errno)); return -rte_errno; } - MLX5_ASSERT(pci_drv == &mlx5_driver); errno = 0; ibv_list = mlx5_glue->get_device_list(&ret); if (!ibv_list) { diff --git a/drivers/net/mlx5/linux/mlx5_os.h b/drivers/net/mlx5/linux/mlx5_os.h index f310f1773..70972244f 100644 --- a/drivers/net/mlx5/linux/mlx5_os.h +++ b/drivers/net/mlx5/linux/mlx5_os.h @@ -12,7 +12,4 @@ enum { DEV_SYSFS_PATH_MAX = IBV_SYSFS_PATH_MAX }; -#define PCI_DRV_FLAGS (RTE_PCI_DRV_INTR_LSC | \ - RTE_PCI_DRV_INTR_RMV | \ - RTE_PCI_DRV_PROBE_AGAIN) #endif /* RTE_PMD_MLX5_OS_H_ */ diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build index e71b2c515..fd9f41d6e 100644 --- a/drivers/net/mlx5/meson.build +++ b/drivers/net/mlx5/meson.build @@ -8,7 +8,7 @@ if not (is_linux or is_windows) subdir_done() endif -deps += ['hash', 'common_mlx5'] +deps += ['hash', 'common_mlx5', 'bus_mlx5_pci'] sources = files( 'mlx5.c', 'mlx5_ethdev.c', diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 7c5e23d9f..6b250771f 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -34,6 +34,7 @@ #include #include #include +#include #include #include @@ -2106,16 +2107,16 @@ static const struct rte_pci_id mlx5_pci_id_map[] = { } }; -struct rte_pci_driver mlx5_driver = { +static struct rte_mlx5_pci_driver mlx5_driver = { .driver = { .name = MLX5_DRIVER_NAME }, + .dev_class = MLX5_CLASS_NET, .id_table = mlx5_pci_id_map, .probe = mlx5_os_pci_probe, .remove = mlx5_pci_remove, .dma_map = mlx5_dma_map, .dma_unmap = mlx5_dma_unmap, - .drv_flags = PCI_DRV_FLAGS, }; /** @@ -2133,7 +2134,7 @@ RTE_INIT(rte_mlx5_pmd_init) mlx5_set_cksum_table(); mlx5_set_swp_types_table(); if (mlx5_glue) - rte_pci_register(&mlx5_driver); + rte_mlx5_pci_driver_register(&mlx5_driver); } RTE_PMD_EXPORT_NAME(net_mlx5, __COUNTER__); diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 8c4b234e5..b357543dd 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -129,7 +129,6 @@ struct mlx5_local_data { }; extern struct mlx5_shared_data *mlx5_shared_data; -extern struct rte_pci_driver mlx5_driver; /* Dev ops structs */ extern const struct eth_dev_ops mlx5_dev_sec_ops; diff --git a/drivers/vdpa/mlx5/Makefile b/drivers/vdpa/mlx5/Makefile index 91c89d604..a2231f021 100644 --- a/drivers/vdpa/mlx5/Makefile +++ b/drivers/vdpa/mlx5/Makefile @@ -24,13 +24,14 @@ CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5/linux CFLAGS += -I$(RTE_SDK)/drivers/net/mlx5_vdpa CFLAGS += -I$(RTE_SDK)/lib/librte_sched CFLAGS += -I$(BUILDDIR)/drivers/common/mlx5 +CFLAGS += -I$(RTE_SDK)/drivers/bus/mlx5_pci CFLAGS += -D_BSD_SOURCE CFLAGS += -D_DEFAULT_SOURCE CFLAGS += -D_XOPEN_SOURCE=600 CFLAGS += $(WERROR_FLAGS) CFLAGS += -Wno-strict-prototypes LDLIBS += -lrte_common_mlx5 -LDLIBS += -lrte_eal -lrte_vhost -lrte_kvargs -lrte_pci -lrte_bus_pci -lrte_sched +LDLIBS += -lrte_eal -lrte_vhost -lrte_kvargs -lrte_pci -lrte_bus_mlx5_pci -lrte_sched # A few warnings cannot be avoided in external headers. CFLAGS += -Wno-error=cast-qual diff --git a/drivers/vdpa/mlx5/meson.build b/drivers/vdpa/mlx5/meson.build index 2963aad71..f4175c34e 100644 --- a/drivers/vdpa/mlx5/meson.build +++ b/drivers/vdpa/mlx5/meson.build @@ -8,7 +8,7 @@ if not is_linux endif fmt_name = 'mlx5_vdpa' -deps += ['hash', 'common_mlx5', 'vhost', 'pci', 'bus_pci', 'eal', 'sched'] +deps += ['hash', 'common_mlx5', 'vhost', 'pci', 'bus_mlx5_pci', 'eal', 'sched'] sources = files( 'mlx5_vdpa.c', 'mlx5_vdpa_mem.c', diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c index 96776b64e..c85283f65 100644 --- a/drivers/vdpa/mlx5/mlx5_vdpa.c +++ b/drivers/vdpa/mlx5/mlx5_vdpa.c @@ -6,7 +6,7 @@ #include #include #include -#include +#include #include #include @@ -428,7 +428,7 @@ mlx5_vdpa_roce_disable(struct rte_pci_addr *addr, struct ibv_device **ibv) } /** - * DPDK callback to register a PCI device. + * DPDK callback to register a mlx5 PCI bus device. * * This function spawns vdpa device out of a given PCI device. * @@ -598,14 +598,14 @@ static const struct rte_pci_id mlx5_vdpa_pci_id_map[] = { } }; -static struct rte_pci_driver mlx5_vdpa_driver = { +static struct rte_mlx5_pci_driver mlx5_vdpa_driver = { + .dev_class = MLX5_CLASS_VDPA, .driver = { .name = "mlx5_vdpa", }, .id_table = mlx5_vdpa_pci_id_map, .probe = mlx5_vdpa_pci_probe, .remove = mlx5_vdpa_pci_remove, - .drv_flags = 0, }; /** @@ -618,7 +618,7 @@ RTE_INIT(rte_mlx5_vdpa_init) if (mlx5_vdpa_logtype >= 0) rte_log_set_level(mlx5_vdpa_logtype, RTE_LOG_NOTICE); if (mlx5_glue) - rte_pci_register(&mlx5_vdpa_driver); + rte_mlx5_pci_driver_register(&mlx5_vdpa_driver); } RTE_PMD_EXPORT_NAME(net_mlx5_vdpa, __COUNTER__); diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 0ce8cf541..d7c1d90e4 100644 --- a/mk/rte.app.mk +++ b/mk/rte.app.mk @@ -203,6 +203,7 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_MEMIF) += -lrte_pmd_memif _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX4_PMD) += -lrte_pmd_mlx4 ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y) _LDLIBS-y += -lrte_common_mlx5 +_LDLIBS-y += -lrte_bus_mlx5_pci endif _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_PMD) += -lrte_pmd_mlx5 _LDLIBS-$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD) += -lrte_pmd_mlx5_vdpa