From patchwork Fri Oct 19 08:12:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ophir Munk X-Patchwork-Id: 47068 X-Patchwork-Delegate: shahafs@mellanox.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 416E14CA5; Fri, 19 Oct 2018 10:13:02 +0200 (CEST) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10045.outbound.protection.outlook.com [40.107.1.45]) by dpdk.org (Postfix) with ESMTP id 9BA024CA1 for ; Fri, 19 Oct 2018 10:13:00 +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=XTVSP43D2z53SelTFrXVhB1dt83J9aI+iyg6pBBZ90k=; b=gnt99+uz99ZFVnVgO3Agj9xOwMP4OfxfEdLs7/pKYpO9xzHvyrANpEqrtVTG1AOoBVzgPRsN9VtGjXecZqUhzx0naLJp8U8kEdLyG3wltA8HSASCllNlQfWgscJ+9V+O3LEjbY18YhZqv0H66vOTwsrOAzIj8r33rGyeSLMZEpw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=ophirmu@mellanox.com; Received: from mellanox.com (37.142.13.130) by AM0PR0502MB3730.eurprd05.prod.outlook.com (2603:10a6:208:1e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.32; Fri, 19 Oct 2018 08:12:57 +0000 From: Ophir Munk To: dev@dpdk.org, Yongseok Koh Cc: Asaf Penso , Shahaf Shuler , Thomas Monjalon , Olga Shern , Ophir Munk Date: Fri, 19 Oct 2018 08:12:50 +0000 Message-Id: <1539936770-24252-1-git-send-email-ophirmu@mellanox.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1538737591-24022-1-git-send-email-ophirmu@mellanox.com> References: <1538737591-24022-1-git-send-email-ophirmu@mellanox.com> MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: LO2P265CA0177.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a::21) To AM0PR0502MB3730.eurprd05.prod.outlook.com (2603:10a6:208:1e::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4d957c60-761b-499a-f19d-08d6359aae4d X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR0502MB3730; X-Microsoft-Exchange-Diagnostics: 1; AM0PR0502MB3730; 3:yxauJEtTubwn2hI1K/mcA2Y3v5BhL4l4raAtRlT0sGOkw/l6ucvhSC0yuNAOWxyQroEgAAle1G9hMhzNY57QupRcBQtK9ajqZZojXtoiZLiNziDrCsArpnlRHjBK1yizfnevWpEEBHzWVvTkUS0dT9BMTmbkGVGg6GkRkLRBddCCmqirTZtN5PFgVz2ZrqIzpqV0Km06+71lQzUBmOfJOKQUGtEyJzN6/lzi4vXyWN5r75Hep4VzfejKbSAOXLGz; 25:1t+V0z2U7YvX5Uim7Aanbp9RPMNvsa/nULd+gg/6FonbiDXC+XqV+dZ2eU+VLlBaVTbzCZ32RvkT1Fys9iiDIv5jnXM7XcflsIYfxYrFGAE37U+t+8YTz0J9i4ilrZjKkKhBmSZzTOjnbzVvyh5XihKIpC8zEZXXLHEJU5EjVI++EkEj27t8gw9pPkq/O/G0kNQbm+WMpYWbrmZPsrhznBy6qbLzrgPXw72vP0lreahGa/zS0xet/jKa8fYTdczerIM0x9wGFHuAr8/3bSdQnV8RghqWto8xfaMhrMGf0fC+atq3EmIWq1pAYsAtbX8Fi/Td1DhHMLLw5tEJVSkh6A==; 31:IOCdqeIP1m2uRAVDQbS7zOgcceD2x3JWvsWuWy6r4AoBkjkM5f2F+CuXqbMbt23cAgU/9hjVy18/nCHesJ2TBOAI4LFiOFM8O00c1IVNyB7nq2hzFf8aQFvad/ZMk8Zy1tHuzKOv6t1a0AazIP1jzQi6/VRhdKjQaAJ5HOY5wnYy3dRAXKkWxYESSOR6VdKqvxHGLJx71GLiJ184BadRXURF4HftII5Gs6X4WfcyeSg= X-MS-TrafficTypeDiagnostic: AM0PR0502MB3730: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM0PR0502MB3730; 20:sTljSrnzDK8JODrhHxbCna5ulZZEeFOigQOaQ/Qu0iTcdwqOOrZoPZU4Pak+XQx/10fxmJzxB/18TRUp51oXEKTyw0NUq2MDjJH0pAKQkVVRV4hDam08WvGt527ekyRVz7ikW0sqiuvYxaNLYjSdhOi1GJJYoISSdWLcrAUoUGop/7znqaC2HOoII5rIQ4JYdYqps2s+dueU2nt9epQ0Qer4dSG1xYl55+kmG7lQ1f8AgDZScEcBGkU5sOGMoETfXEMfgQ1NcXv4t3CJwriEXQZwe3okx9SeEBejw0pRIswmXvi6yOOxBAwbwNVkxehB6RQ4NgA52k+zOs5h0Gw0q3v/cvdQ30hkp0Y/alTQqNRjGXauh3ffJcqW/wrdz9yLP1tfVs5dag+qzIpEyGcFyPXHRpkhVZosqdDjtoxiick21fSOvatgS6fLmTkxV0aVSUyYl/UudLf76uvPYgcKGNng5CjBILWYsVaws9gqXzyTlN8XMf+39PqjIY4NQs3U; 4:PCyWWWA2LvNjbata2kU6Mvh3Uz8Qo3EhZSAgksqcfMTz3mp7Xu2GdLX3az0ldtluKBNNgmJ9U5eo0StntHZbi9Qvtmn1LPVkaw6BY44f9rWCcOYhLA6k1+NzEdrxHi/mULxgFegMOsGGesBlQG6ijqaLyF1x6urFRVlkn0JOLE5Rmb9uGdHYoVW9DgD3mORgQghkMg5dKJVj+p7lja5oD3YVvHKXbBXL4x42R5lqtXkkrPF4+7GEHB8KUXeF2rlkyxfMndYU4DtwCbcZNfT31g== 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)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:AM0PR0502MB3730; BCL:0; PCL:0; RULEID:; SRVR:AM0PR0502MB3730; X-Forefront-PRVS: 0830866D19 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(346002)(136003)(396003)(376002)(189003)(199004)(6636002)(48376002)(4720700003)(966005)(21086003)(50466002)(36756003)(25786009)(4326008)(54906003)(16586007)(316002)(37006003)(6116002)(6666004)(3846002)(26005)(186003)(86362001)(16526019)(106356001)(105586002)(69596002)(2616005)(478600001)(476003)(486006)(446003)(76176011)(11346002)(956004)(386003)(7696005)(52116002)(51416003)(97736004)(81166006)(6862004)(7736002)(8676002)(81156014)(14444005)(5024004)(8936002)(8886007)(47776003)(6306002)(66066001)(55016002)(53936002)(50226002)(68736007)(33026002)(305945005)(5660300001)(2906002)(107886003); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR0502MB3730; H:mellanox.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM0PR0502MB3730; 23:3gPwAlY8hSzajYwThE2Tzw1tiJ2xL4B8Tu/D9WB?= sX9wtm8fVqif4eM+PXAe1hJV5TCptyEYlNsHCubav5ZgeFxE7YigCsDLzmlDfJAs0NBxcxTSfVbRVWQdRvjAETEOQDjMQyrM+gNxmfyY/fUBeHgSvqKW2Nh+lt/wtH6V1oSt4gA3SBXEMfMEqFUHN45aqv1V3ML0BZDKt16ZXEzj9bMC8UQJUSqXiio9imdWiVbXilk8dpUHzUF8hkfGUDknz/108jkwd5llDu7bfQXiJTN5fpZ7uEFWOOd42HaSMSHN0eJUBtOKyJ98JG8pksm2kMOA11Fh1qITHdb30yAqzuE5aa6Siwl9AbSZ7YWeyvSiB7TJxvdWbtg9gecuIDjUu1lEJ9+jA1RHukvHirxgmOM48AIbXLzgx5qtmQZ0+5pQfdQoGgY+xV+4omXZCvu+12hZE+FAgtYz92elV1klRpEn8+h1mF5CCIqYCxxCR2zmIguipM8ZwzyTYUZyRfMcrSOQvs7+eIB+E5cTeUGp0jznWeclVZi4pFeXD+BMGeMXD7G07lHIj13PQ2V6Dd6JHGS3VHJ/FyrpN4ffmJiDQQjsXl/ClcCA3wifhA9rgv/KXW+FJknCwT3W8ENpAFzMsOnsdxoWeeKpxgtXEI8WfyYrVRL3KFY5B9JmvAN9qF4F7gNdylyuC+DimcDLHVaRzZfDXCDNaLmaiP6IvUSDaClxMpUTTAY5tLSBTJVIgVXtXO+2EucyMHUkFfxGT/bbFYyq6oij6DlJHTeB5cEX6Hv1xnm1rQRdBx2GcVOijikpf0kMZ2tQJpWrY0XYl/Ysk24NV21EXXAWPe0ZeTRnKq+r5ApFjuCObeF+CzkRDjzWblVQ2w/c+MBo8NUxLs+hnL0PSHGXFz20vx5QiobW0KZXo6JhWIID0aA638PuQ+NQwruwnqYzC9dux51u5dXr9Eas9ZNPIUiHkWpSS7LdqK7TTs3vyxLvPUjCHInJKYhcDy7EFpDDHigy9sBHvvjirbCOK6UeUBZ/j/R560wLoZjW8cWTWbS4hsuLgdKP/DBzKbNLwqBsLdbOix2RKEwD1Dvm6QsihVHT0vf5jIpYH79P4801THkNY451/Cf6sVjyyA0xFY+kaZsFBERnpAxezcLj2KP+gwzhgGjeAjr6K7vH567zPEvXdJlIjMFJpsEVw3yXcf1bMHecO58NElLKaqnT/xMBOy8/o4F3TrBugRoohhKtbMZ4aEJXQ8EelBdkn1s+cfJtHJxhXBT86Ex89+4IbsKr77iApuO+e+QiCI0x/0NmBQSR0ST8uUyY/4y6CSRzGcN4K83nQhe1BAjzAHIQUKiSxr3fbUVa5/5XUpgRucbCymbUGi1hAphumLXqKPvUYbIjtKPCAca7GMMgEwcQB8PM6Wxc/aTMz0B79+A== X-Microsoft-Antispam-Message-Info: NKnteOV4YLRGttoL4yRn5obf0G/N01mgtT+eoTB3NG/KNMj8U2A4cKs6wg6WOLucgbUBkCNsm5gEIlPQFpohR9Tchh3y/PFljFY4nuEACMTjBbY0eyxuKS6UMV5hH6875Bc+7syJODspb+0MHSkc92XreyoNGIBEUb0YlAF11mnKCisuZ5CPizU9LBR/8q1NjuUv260Cncg53PJFMyELKmavW0HOyzlEZAqZuFzMcenGVRgYXVJhgObgmOqz/z2ei42mj1LY4Orj7qu4aB5o/qLbR+zNmkSLfw+QILYLAZCF5IeZBzrjGGdt4V9ufeg8B5afbJNHO55PB339kFL4iY3DiQhwWEXh9WbAJrYogf4= X-Microsoft-Exchange-Diagnostics: 1; AM0PR0502MB3730; 6:9oVOT+QG+FUMXIaH/Tp1QZUyL6FIFR8/M3ATnM4kwh8eogTdcG1L6hMu2ttbIFpflB3/LfBuFydKDxfCTPH6mYxf3pPmtihOqFmIhr04KFF9RdW0HUaXxtlcZw8CE5wCBx819fc95yvigdw3H84d8gv382o87NsSeqfpPVs1hGfEEKTWnQQGWx2X3O/ODpnJVw/o81sv57ySuMg7WpY9f2x4QsRddVWy5IyVyQ4wbCBUYqcbUqYDHkHPTlhFe6rv+bjqnCN9tYtcSS+aOSQKzsAksNUOZhljUfdKIBYBQomggpr2ujJ0SQs7Z+CivT03jC5Km4071LUwd3PTX6MYvlHV2BEgaOEmPX+ZDmydm3I7CQlt3KMMfzB93E5czJTNDaw8riZzTpGeMR98TbxO0wUg1Oy3Sx4NjEs7eZ8vnRcjpGHYnesKUF6sV4a/sPrT8eHZHSPn2YvkgtxfpvsC9g==; 5:xJzvOs0K9EilfLCq0TQp0ig2ryk9g0ejWSqZlVkQetkf57ks0pPQDPIL7jooSwEnRIwTJOqMiygn8/jXGcwE8I48QnwOgoBu0aMelcFJjgeejsBY8fcBG3/krA9xr5HnmV/7UVqWPASPsSlYVwlouoxLXQecsCBdX8AqsU9eg+E=; 7:rYtW04ySy2pwSQDZi5u+wCnoJoCShJf3WimuVTqaeCNOisPibnKHyd2+WP/7ynjjsklDghLgPhR9f/eDuQq+dURB3RmLUCp2D/euPHYlGWHIIdvgTQgV1xE+rupc5Lm5+LG9TqqNtIB1JCTnbsMaJ2wVVPwlgvmJBfSYmngMe+ZOg8TPk20XfSahEEXNZ5st0nz02BDzApRbbqsBVHBPF21TxpE0dr59nPexjPnPHkT0jkDvKZz3Vuo5A0eTRIdK SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Oct 2018 08:12:57.8051 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d957c60-761b-499a-f19d-08d6359aae4d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0502MB3730 Subject: [dpdk-dev] [PATCH v3] net/mlx5: allow multiple probing for representor 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" Implement probing of a rte device multiple times, see [1]. Set PCI driver RTE_PCI_DRV_PROBE_AGAIN flag to enable multiple probing of the PCI device by the PCI common driver. Consecutive probing requests with a devargs string may contain repetitive master and representors devices for which eth device should be created only once. In case an eth device already exists - silently ignore it. [1] https://patches.dpdk.org/patch/45601/ ("eal: allow probing a device again") Signed-off-by: Ophir Munk --- v1: Initial release v2: Rebase + code review updates https://patches.dpdk.org/patch/45927/ v3: - Set PCI driver RTE_PCI_DRV_PROBE_AGAIN flag required by PCI common driver - Update commit message drivers/net/mlx5/mlx5.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c index 2821aec..c08323c 100644 --- a/drivers/net/mlx5/mlx5.c +++ b/drivers/net/mlx5/mlx5.c @@ -696,9 +696,10 @@ * * @return * A valid Ethernet device object on success, NULL otherwise and rte_errno - * is set. The following error is defined: + * is set. The following errors are defined: * * EBUSY: device is not supposed to be spawned. + * EEXIST: device is already spawned */ static struct rte_eth_dev * mlx5_dev_spawn(struct rte_device *dpdk_dev, @@ -747,6 +748,7 @@ struct ether_addr mac; char name[RTE_ETH_NAME_MAX_LEN]; int own_domain_id = 0; + uint16_t port_id; unsigned int i; /* Determine if this port representor is supposed to be spawned. */ @@ -769,6 +771,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); + /* check if the device is already spawned */ + if (rte_eth_dev_get_port_by_name(name, &port_id) == 0) { + rte_errno = EEXIST; + return NULL; + } /* Prepare shared data between primary and secondary process. */ mlx5_prepare_shared_data(); errno = 0; @@ -875,11 +888,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() == RTE_PROC_SECONDARY) { eth_dev = rte_eth_dev_attach_secondary(name); @@ -1423,9 +1431,9 @@ struct mlx5_dev_spawn_data { list[i].eth_dev = mlx5_dev_spawn (&pci_dev->device, list[i].ibv_dev, vf, &list[i].info); if (!list[i].eth_dev) { - if (rte_errno != EBUSY) + if (rte_errno != EBUSY && rte_errno != EEXIST) break; - /* Device is disabled, ignore it. */ + /* Device is disabled or already spawned. Ignore it. */ continue; } restore = list[i].eth_dev->data->dev_flags; @@ -1520,7 +1528,8 @@ struct mlx5_dev_spawn_data { }, .id_table = mlx5_pci_id_map, .probe = mlx5_pci_probe, - .drv_flags = RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_INTR_RMV, + .drv_flags = RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_INTR_RMV | + RTE_PCI_DRV_PROBE_AGAIN, }; #ifdef RTE_LIBRTE_MLX5_DLOPEN_DEPS