From patchwork Tue Jan 23 17:01:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shahaf Shuler X-Patchwork-Id: 34376 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 CE849A495; Tue, 23 Jan 2018 18:02:59 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01on0059.outbound.protection.outlook.com [104.47.0.59]) by dpdk.org (Postfix) with ESMTP id B856CA493 for ; Tue, 23 Jan 2018 18:02:58 +0100 (CET) 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; bh=k73orNKnYG8ynRUi4t39kIK86OL4TvI/TWR3pX+0azE=; b=B4XGeuLGwwdxlZNub7le3ZPd70ZJDrfAfCmNSxEK/zI2pStetK7GbBaNLO5txv6gY+0WXRHS1FDfTx6E7v8v4xPfTNpUO/KUZIjt7Q3aoEyoNpJNgawa6G2hWYrtSBOXH9Iug2oNJfHTPRfUEUI/yTnKLVaYwvvjZRr0+597s2w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shahafs@mellanox.com; Received: from mellanox.com (141.226.120.58) by VI1PR05MB3149.eurprd05.prod.outlook.com (2603:10a6:802:1b::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.428.17; Tue, 23 Jan 2018 17:02:54 +0000 From: Shahaf Shuler To: yskoh@mellanox.com, nelio.laranjeiro@6wind.com, adrien.mazarguil@6wind.com Cc: dev@dpdk.org Date: Tue, 23 Jan 2018 19:01:06 +0200 Message-Id: <20180123170106.9047-1-shahafs@mellanox.com> X-Mailer: git-send-email 2.12.0 MIME-Version: 1.0 X-Originating-IP: [141.226.120.58] X-ClientProxiedBy: AM5PR0701CA0012.eurprd07.prod.outlook.com (2603:10a6:203:51::22) To VI1PR05MB3149.eurprd05.prod.outlook.com (2603:10a6:802:1b::14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: efdc8822-e7af-43d5-a3d7-08d56283257b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR05MB3149; X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB3149; 3:eQIMWXmhhwlMHp9IEUMgeWOEHSHnGFeuTOI3jGmsMH5QeVGsJgYvj06W3YPjCk+G54sTVtRjI5RItbxy3Szj/GOXs+Ty83cK4xDd7+fNF5Bik0VPyDj3nObWJTw7feJew4U4FltgDSjmcZXyaxihLGXgRpeh1y1eP6AVYboZfron40tr8Qd2I+hX4x+pFqYCZvluiEdA3AUOf9b1Gs6Bf9ZQYS3zly7HME22hsFq0UUhuid8G56tZYc6ilQge+bB; 25:qpmsp+U7CCjKlv1y7KZVDpWmYVynNEURGgv4MgqrpQZ8zuh7EHcKrVWaNOa6UDSUF5YabmGPXWsHuTCm+gzDDFd+l+kFEcySL7hyGgD18AyJVr23tCr+NTQ0z97KkBTSgPjv9S3IxpJXGNihDLk6IYOXN3TX4D3sjsv0GoGk3HTDfyVFIjcV4FoxeD8YvjbZgwEqQxmd6JY1lb1XNt+fOp+litDfUhzNz+HvrWV2ADn318J7qJSarakGnFzhdkiOc66LxvXFvKVWbZYHkeOgamQCTphqu+J7NwNDaeoWdYad9Vw330lZKu1ZCmZE51qBawcm0VCDNO3ySO/6upA49Q==; 31:1eriC700zRNSg6pE1Wu1bjAtu1u8hbSJ7+VfsBK1s72dpG1A40OgQS9ybAWIqrbxDUwBErRmzu5IUSFIUqir/XKivZFGP40U4QQuePwW/Qu1n011k9S+dq4Or+JoIUB1YJRtWNpkqfSbeW7W96xIPTL5LMwkcHDOT2N7mgLKJLsovlTg971EEBy7GUV1y05XNDBXgkWWtUmLZgJOBgUidN49wOs3UdPEEM6a4NuQ+Ec= X-MS-TrafficTypeDiagnostic: VI1PR05MB3149: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB3149; 20:xe7b+WM5+BAiW3209vqWDHcse98TuRVhwuwIQjqBDxJoISsNw6uf6tvgsCsBJ4tMyDik2aeXsIoJ99tjvVvVw32z3ZtwwJe69a7cqeZDMkw6YccU7or/I1sgf1OugepTwqmtUfVvjMpvxgGddbOFCINC8j7px52pw5gkDDPfv2Ko5sZkuJyk8+zJSPRBYlJv9+A4DrslzmgiQwWzl0yxu5CzRKXEdLK9E4eK7y3jCuEuqbiLA94SwHl29+Mt2TCzDrTp7KOM2fyYyeZ/kPKs9d7vDdnOzD1+wfrq7vEOUCS5rNuKBQG5UyFeWnv177w41E6iohpKt/Nbwzhr67bbVa7FIZ/zbyZodMTWmXy7gbyXgqi+uv+rODdCA6vUBQRsx8kxl5xT3bDKZR42cDtDkIctsL7lmdhbClFfA2tYxBlF/uMagf9WKrep/NG3aVSBR9KXVNvBuqzx19Bh6aJd9scNMmw/WcO3ui6vpE7UMAF0dKB7bSgwRQa1c7txnb3F; 4:+YfT6kUWqYfcf6cvwl22LTjRsFrtWBvfKCpXanPjNFVSCpGK5J/qbGKiXeWslk4WBn5hsShsGBDIScAdpaN+6iXqf40/akKII2P2CYhziwhSaM7DLSsIqW9Ac8Q9eQIVAKWw4Lc0PFFnJXxhTLxj6kuADwV26ogwFDVbcSIrStqwjrwpCyNSgNifi6ucf7v+3nBkpZFywJwe8h8UGs2JdqTFOeGWEOZJ2QriZycHiIJmHCzEq2+f12H/1ygfTF4crVW5EbdfNMUgY/qACn2/CA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040501)(2401047)(5005006)(8121501046)(3231023)(2400081)(944501161)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041288)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:VI1PR05MB3149; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR05MB3149; X-Forefront-PRVS: 05610E64EE X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39860400002)(396003)(376002)(366004)(39380400002)(346002)(189003)(199004)(97736004)(47776003)(5660300001)(86362001)(1076002)(25786009)(55016002)(16586007)(6666003)(50226002)(53936002)(386003)(26005)(305945005)(16526018)(2906002)(8936002)(66066001)(4326008)(48376002)(7696005)(478600001)(36756003)(68736007)(52116002)(3846002)(51416003)(7736002)(81166006)(69596002)(81156014)(316002)(6116002)(21086003)(59450400001)(106356001)(8676002)(50466002)(105586002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3149; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR05MB3149; 23:53ywoujtNsST2th29sYh/lLL4sly2Bz3RNAT+pkYf?= 8p/TrligKoIfuNokZtJlT9u33e+j+TNUqoxIPlincPLm2p9+5q+LHt955+icAIbX7U5gB1mhnhNRbmsATm8mfvvod29aK530JSuycotsMJ2EeL8UL5C1k88Z2hNcpVynxuaKXjTNVjqL4xNM+1dNyJLbBOxaLS3xOklrJqhljIcp1aZ8K9VWwhC+Vd7xigpH/+bqysZKV+QKKFA9Q174q/v9u1HSyX/iUJ2YqfZEnL/h49/ZmjUzvExsVQOpzc4a+3PerLBKEicA9ORw1i5TDIZdWj7FDplPX7bZ9r2U4piqFMQFfuKmYZ/uVOEOpceX3x3v2fruwvdLXGnmrYry/3P4kRYSGePNKu4mHbp88JNSvDbOu6odfe+GBy2ITp5ytuK44KnonTBo0/r3MilKwtsRBh17bnz54XWjBKqH59FUZlIBRCx7xIgIBWeMhCZeFW2sMsNk/95iZ6By5iDXjmVpLglxt42t3XnpWFwnd9hm4wfG8swDGWOiJ7e5BTknzghQjUfbzXlvw5XzO7TB3H6VYmJo4HlTvlUb5DWOFhcuG573HVDEzUsVkAydMzmjdJ7akUpilz9OJga90vruCM4zxyls+yN0f1NMYKlKE8ak26t6lrW1uUIvoKScNZlAjKlkZ3hzNC05GfnzxSeEod44g/TT021D0dAWgNx+LXddY/c/PUmnV5tf5N2kZegnkarLiNrBe6afcoTOXyFQY82Z2hFOMkEQDehcpV+UwnD44XMnNtrzwO4njRKYnR6nOZdjeVP0rRlZ6ZKUKnjZfhOgESJrAqLblglbo8tsllpY3bggnkJwcOeULXfwfHww6kYvg1I4wdM5UxePltQ5gxAnvTH+t51GgmPPW1WZjIDgSP9GmhJFV912Q5v4NL0+gXbaEO/tZFeA7ecR1ciqEeOOvhYnrWa+gg5WJVchQ5A8dqcLbk404Y+tsH9rp4ZKXHz2XBlyUqroqlBEqlKKN37j5i5WOq4yFs15pnXAQwUl1FsX+f96A4jSEFTfOR/Z7ZShjlXJ30hKUoPPomQbC3+JuVLfEcRkIiojueVc5CI2w== X-Microsoft-Exchange-Diagnostics: 1; VI1PR05MB3149; 6:5hEY6OL8Qhj61sQniLTlX6pKnYjXYcpreYNQSEjUyzAyJq1pJHLAuGWvCEYDnW1fqfKY00k2lofh3RBpSoLqAPIQ7FZTlw+n/vyid0rxAwDt5IwsI2zrktD2npZv6J6otCMXlzDNIqsGYCVxCOPVYqkjL7qn5P2/KAJL3x96xBAG6FNQU6E/1NsbR1phxZKLTVJlDB+tMVIKEcep1OPuuY4Ok5hqWhhFI3t6dsBJQxIGxJdjOiN/e024POv6HStxsw/vgytfjo+Ddetk5vA9gJUs/kQHMLsGr0cB1zYhd0D/tvdpIeACHb9IgSU6rE4YjTwxwJFalSmrDAkGUc6qgMGEAtfaZsI7fkc209yJ3yM=; 5:GtRTljSZIKPB+/+ilO1ee2SdxEiDkSmQ1kAIj2nKojRD+OuLOUxypvcYnfj8QReQkkBkyMw5XBbq5ibTlwzkolhCBQtMNQU5zuBwTmdlUul+8GxYgpyTw1ac68Ki7taqN9XLtk4Kj9c6NJRp+WWpRUO1wdqf6+F6nyMv4w7x9Uo=; 24:ZTRGJs8hlzFAPvUVmiOFVQfFtIX85j1dTbXvp2DCkX9ckeC2/0yuwyPh2xgESxdmKw7WQ5hZYwIBYWG2a7LqYds1x8DP0VEYX8yghp+WLVU=; 7:ocR7Ml+HoO2vB62xrUce9a864jrY7QxljAyT6s/OXnQI3qY/6cVAbvcLdhB4L3dYMPpe1YR4C5MgVeDjnztaPSzwmCq6us2/o+4BeyWs6Sm+4eTlxiJfNE4ywq4H8+thwkbCFtdb61bJbxMYN8JQmHCwFTZpngPtoZhhTspoJzbh9LGE/x6yxOJj+gWGgUgSsUhWnsTAgqX7eUeBTAN7f45xX4NdD+cfY9tYx9Vh33gSyiF4Q0p5E1ZBFIZ26sQt SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2018 17:02:54.6265 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: efdc8822-e7af-43d5-a3d7-08d56283257b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3149 Subject: [dpdk-dev] [PATCH] net/mlx5: fix link state on device start 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" Following commit c7bf62255edf ("net/mlx5: fix handling link status event") the link state must be up in order for the burst function to be set on the device ops. As the link may take time to move between down and up state it is possible the rte_eth_dev_start call will return with wrong burst function (either null or the empty burst function). Fixing it by forcing the link to be up before returning from device start. In case the link is still not up after 5 seconds fail the function. Fixes: c7bf62255edf ("net/mlx5: fix handling link status event") Cc: yskoh@mellanox.com Signed-off-by: Shahaf Shuler --- drivers/net/mlx5/mlx5.h | 1 + drivers/net/mlx5/mlx5_defs.h | 3 +++ drivers/net/mlx5/mlx5_ethdev.c | 27 +++++++++++++++++++++++++++ drivers/net/mlx5/mlx5_trigger.c | 8 +++++++- 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index a7ec607c3..30b737f76 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -246,6 +246,7 @@ int mlx5_dev_configure(struct rte_eth_dev *); void mlx5_dev_infos_get(struct rte_eth_dev *, struct rte_eth_dev_info *); const uint32_t *mlx5_dev_supported_ptypes_get(struct rte_eth_dev *dev); int priv_link_update(struct priv *, int); +int priv_force_link_status_change(struct priv *, int); int mlx5_link_update(struct rte_eth_dev *, int); int mlx5_dev_set_mtu(struct rte_eth_dev *, uint16_t); int mlx5_dev_get_flow_ctrl(struct rte_eth_dev *, struct rte_eth_fc_conf *); diff --git a/drivers/net/mlx5/mlx5_defs.h b/drivers/net/mlx5/mlx5_defs.h index a71db281d..57f295c58 100644 --- a/drivers/net/mlx5/mlx5_defs.h +++ b/drivers/net/mlx5/mlx5_defs.h @@ -110,4 +110,7 @@ /* Supported RSS */ #define MLX5_RSS_HF_MASK (~(ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP)) +/* Maximum number of attempts to query link status before giving up. */ +#define MLX5_MAX_LINK_QUERY_ATTEMPTS 5 + #endif /* RTE_PMD_MLX5_DEFS_H_ */ diff --git a/drivers/net/mlx5/mlx5_ethdev.c b/drivers/net/mlx5/mlx5_ethdev.c index 6624888c9..523865d15 100644 --- a/drivers/net/mlx5/mlx5_ethdev.c +++ b/drivers/net/mlx5/mlx5_ethdev.c @@ -966,6 +966,33 @@ priv_link_update(struct priv *priv, int wait_to_complete) } /** + * Querying the link status till it changes to the desired state. + * Number of query attempts is bounded by MLX5_MAX_LINK_QUERY_ATTEMPTS. + * + * @param priv + * Pointer to private structure. + * @param status + * Link desired status. + * + * @return + * 0 on success, -1 on error. + */ +int +priv_force_link_status_change(struct priv *priv, int status) +{ + int try = 0; + + while (try < MLX5_MAX_LINK_QUERY_ATTEMPTS) { + priv_link_update(priv, 0); + if (priv->dev->data->dev_link.link_status == status) + return 0; + try++; + sleep(1); + } + return -1; +} + +/** * DPDK callback to retrieve physical link information. * * @param dev diff --git a/drivers/net/mlx5/mlx5_trigger.c b/drivers/net/mlx5/mlx5_trigger.c index 827db2e7e..c5429e182 100644 --- a/drivers/net/mlx5/mlx5_trigger.c +++ b/drivers/net/mlx5/mlx5_trigger.c @@ -166,7 +166,13 @@ mlx5_dev_start(struct rte_eth_dev *dev) priv_xstats_init(priv); /* Update link status and Tx/Rx callbacks for the first time. */ memset(&dev->data->dev_link, 0, sizeof(struct rte_eth_link)); - priv_link_update(priv, 1); + INFO("Forcing port %u link to be up", dev->data->port_id); + err = priv_force_link_status_change(priv, ETH_LINK_UP); + if (err) { + DEBUG("Failed to set port %u link to be up", + dev->data->port_id); + goto error; + } priv_dev_interrupt_handler_install(priv, dev); priv_unlock(priv); return 0;