From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70088.outbound.protection.outlook.com [40.107.7.88]) by dpdk.org (Postfix) with ESMTP id 078823195 for ; Wed, 3 Oct 2018 10:01:25 +0200 (CEST) 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=NXgIbqr1acypFA9vmPsvsHa+lWN1uKUDtAOWOrb84LA=; b=LnCp8QOaeo9PileGM3kY6994j9h+8/sA6HR3yqajrQJA+UFLbxMBghV2bipZAhzaTNxFCfz4dvgZQ53rA5UQCuAw9AqPWEPUWkvEuC8oIYMEFUVAkjgM8j74+wGAm5v6ni6t5OGnhd4ruk8Dc0sfGb7pKKl6C1iXqZSbDe7s1qA= Received: from VI1PR0502MB3743.eurprd05.prod.outlook.com (52.134.8.154) by VI1PR0502MB3070.eurprd05.prod.outlook.com (10.175.20.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1185.25; Wed, 3 Oct 2018 08:01:23 +0000 Received: from VI1PR0502MB3743.eurprd05.prod.outlook.com ([fe80::e48b:53fa:f268:753]) by VI1PR0502MB3743.eurprd05.prod.outlook.com ([fe80::e48b:53fa:f268:753%2]) with mapi id 15.20.1207.021; Wed, 3 Oct 2018 08:01:23 +0000 From: Ophir Munk To: "dev@dpdk.org" , Yongseok Koh CC: Asaf Penso , Shahaf Shuler , Thomas Monjalon , Olga Shern , Ophir Munk Thread-Topic: [PATCH] net/mlx5: allow multi probing Thread-Index: AQHUWu9GH42gSE5On0iFhzMSfK8Wwg== Date: Wed, 3 Oct 2018 08:01:23 +0000 Message-ID: <1538553677-32010-1-git-send-email-ophirmu@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM4PR0101CA0062.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::30) To VI1PR0502MB3743.eurprd05.prod.outlook.com (2603:10a6:803:11::26) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [37.142.13.130] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR0502MB3070; 6:GU5cvoZWV9ew8nOd3QFkokqo2857oT23+0TP4iGd9OJlYPKbB7NU4UqOfkc+XdU0A0no5z60xfIaIKHZ3GNfOlWI+6flPtg1o+1/doDZCrpkJZ3wjSln5Q7IsBLAIPKCzDdkse7LzBi2v80aWJlt1sRiZhMI5ISqzB1SDxRQfbQorMAmNDa+OkXvwu7JwPjET5bhILtBA9I9D1k5sXvPiTpmDZMNOAS8oLLMFN7QHWeAhBW3WycuyYZGfkrAItv1ztHJMK2T3L1eLFpx+QlcX2SURVavfpuW5B8/+kxS/RMbRqmcOTYs/SjPj/F1hw6+qkRmkY5Oltyo2zA2nkXRBbtuBC7HNx8eGJMRJdvjd7GpmPQrpoewO5KN/qy47G05Kd6PCEyGSRXTDBad3OVGI29UXKS4x2DOkpEYTbZNtU5RFaODQRVkJiSJBR0n6QITQQoGCUIaBTYIVd0oz1bacg==; 5:cUEQTZuKwFsUrc0qy6nQelofDU/1mMpK1f4P0+KYGQ4yWzRqe4dymJbAjMumM33xVK4d8IhxdXwuj7LeaMKDbFJMt8ArI9hgzB9Jjuh/41rbgy13ezhp9RKaTHHGRVWIU2nsISrYL09Eca3M8CBDZR5wHoCddyTWBKNHeBlmxH8=; 7:G15W5WQbmJPcTp3dJlUoa+RQ2DyokKvFV+SmtIPoD3VZzbRQll5GVaduHhVC7UFMx+jZidkBrnl6LaJzt+uB+JU0ZBa50a0l5XTo1Y8FgxbRER4Ee4Dl7aXebtgdb/dixm7JY1Muni4Qp0xtsUH/4cMZ5xPcRLlgurof/TFGvovFnZzQVNmGv9p6gy3aYnON3cfT6ciE79/O/XCe/97M4x5dRVql/VVWTA0M7bruy8pbpSnROGoPL/D8k1O5xkfN x-ms-office365-filtering-correlation-id: 48c2a4c9-ece4-4f7c-5166-08d629066937 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0502MB3070; x-ms-traffictypediagnostic: VI1PR0502MB3070: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3231355)(944501410)(52105095)(3002001)(6055026)(149066)(150057)(6041310)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123558120)(20161123562045)(201708071742011)(7699051); SRVR:VI1PR0502MB3070; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0502MB3070; x-forefront-prvs: 0814A2C7A3 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(366004)(136003)(396003)(376002)(346002)(199004)(189003)(6116002)(3846002)(2900100001)(4326008)(5660300001)(256004)(5024004)(14444005)(305945005)(71200400001)(71190400001)(316002)(66066001)(6636002)(68736007)(7736002)(2906002)(486006)(5250100002)(2501003)(36756003)(8676002)(476003)(2616005)(6486002)(81166006)(81156014)(6436002)(54906003)(110136005)(1857600001)(102836004)(99286004)(6512007)(86362001)(575784001)(107886003)(6306002)(186003)(53936002)(386003)(6506007)(52116002)(106356001)(25786009)(8936002)(97736004)(14454004)(966005)(478600001)(105586002)(26005); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0502MB3070; H:VI1PR0502MB3743.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: mTnJQvbABcMqgynvQNWCpc5lBbEp5XhPtwVcEq/hqEDDKtz8svLvcUJx2q/arRpGFqDI4NM5F88kiBA1mSnRb0Agy7abnTJ/Ht1PMt05i7VyqkgYekz28ygh5jn+NhLWEV+/eAvJzkVsKtO80pPOfCMhwcHraZPVTRi+GgpAtVT3tHHJE0urFb/kZlSah+4nXdyXi+vP3scATqvVUGQXzRcFgpj/vJ/yihOz35OZwppfjrINXAAnV9zhZLqTg98Wm+ueXlbLMUpiu14Qv7/JbGfBhPkolFX66RIlCJnf75qxvLndVUBU+wE7EESTApQMkQ/FI9Ql2nfiscQ+G8nDTIGXWb6jd2wuX7IZjgrtf38= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 48c2a4c9-ece4-4f7c-5166-08d629066937 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2018 08:01:23.4351 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0502MB3070 Subject: [dpdk-dev] [PATCH] net/mlx5: allow multi probing 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: , X-List-Received-Date: Wed, 03 Oct 2018 08:01:25 -0000 Implement probing of a device multiple times, see [1]. Consecutive probing requests with a devargs string may contain repetitive master and representors devices for which eth device should be created. If an eth device already exists - silently ignore it. [1] Serie: ("eal: allow hotplug to skip an already probed device") https://patches.dpdk.org/project/dpdk/list/?series=3D1580 Signed-off-by: Ophir Munk --- drivers/net/mlx5/mlx5.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index b2b0aaa..16a8b9d 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -736,6 +736,7 @@ struct ether_addr mac; char name[RTE_ETH_NAME_MAX_LEN]; int own_domain_id =3D 0; + uint16_t port_id; unsigned int i; =20 /* Determine if this port representor is supposed to be spawned. */ @@ -758,6 +759,17 @@ return NULL; } } + /* Build device name */ + if (!switch_info->representor) + rte_strlcpy(name, dpdk_dev->name, sizeof(name)); + else + snprintf(name, sizeof(name), "%s_representor_%u", + dpdk_dev->name, switch_info->port_name); + /* if dev (master or representor) is already spawned - return NULL */ + if (rte_eth_dev_get_port_by_name(name, &port_id) =3D=3D 0) { + rte_errno =3D EBUSY; + return NULL; + } /* Prepare shared data between primary and secondary process. */ mlx5_prepare_shared_data(); errno =3D 0; @@ -864,11 +876,6 @@ DEBUG("ibv_query_device_ex() failed"); goto error; } - if (!switch_info->representor) - rte_strlcpy(name, dpdk_dev->name, sizeof(name)); - else - snprintf(name, sizeof(name), "%s_representor_%u", - dpdk_dev->name, switch_info->port_name); DRV_LOG(DEBUG, "naming Ethernet device \"%s\"", name); if (rte_eal_process_type() =3D=3D RTE_PROC_SECONDARY) { eth_dev =3D rte_eth_dev_attach_secondary(name); @@ -1298,9 +1305,6 @@ struct mlx5_dev_spawn_data { assert(pci_drv =3D=3D &mlx5_driver); errno =3D 0; =20 - if (rte_dev_is_probed(&pci_dev->device)) - return -EEXIST; - ibv_list =3D mlx5_glue->get_device_list(&ret); if (!ibv_list) { rte_errno =3D errno ? errno : ENOSYS; @@ -1412,7 +1416,7 @@ struct mlx5_dev_spawn_data { if (!list[i].eth_dev) { if (rte_errno !=3D EBUSY) break; - /* Device is disabled, ignore it. */ + /* Device is disabled or already spawned. Ignore it. */ continue; } restore =3D list[i].eth_dev->data->dev_flags; --=20 1.8.3.1