From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60049.outbound.protection.outlook.com [40.107.6.49]) by dpdk.org (Postfix) with ESMTP id 8E7D8288C for ; Fri, 27 Jul 2018 04:30:30 +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=1WfwbKZMAHYnVk2EoRR1w5YZycJUuYsJtN6SqcgzEvY=; b=P5ttMY2p3fRJgTUVJnWAiG8pj+HeS/9FkyJMJpL64kmH8ObL/zJN1upqEA9jAIzn3vILJwpf+mCJ0a/tgoU9Q9i2Aat1fTdoK/zzn2CgZ/lFY9nuz2gWUu2U+wv7eXLIeqCJYoifbl1ZUn5J/fseRgXl2FfXC+ULsQTXHA8RKiE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=yskoh@mellanox.com; Received: from mellanox.com (209.116.155.178) by VI1PR0501MB2048.eurprd05.prod.outlook.com (2603:10a6:800:36::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.995.17; Fri, 27 Jul 2018 02:30:27 +0000 From: Yongseok Koh To: Xiaoyun Li Cc: Qi Zhang , dpdk stable Date: Thu, 26 Jul 2018 19:29:53 -0700 Message-Id: <20180727022955.38613-8-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180727022955.38613-1-yskoh@mellanox.com> References: <20180727022955.38613-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: BN6PR1001CA0005.namprd10.prod.outlook.com (2603:10b6:405:28::18) To VI1PR0501MB2048.eurprd05.prod.outlook.com (2603:10a6:800:36::22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8fa1632e-b96a-4717-c487-08d5f368eae6 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600074)(711020)(4618075)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:VI1PR0501MB2048; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2048; 3:NVSp6xmFdRgNdLX6dA9Qaqg3NPF+XMzDji++UBex2PkPSk8PIKbtU8OAmBJX1m3pVConhYgmO6+IVYWbsIrCTcsvB5JaAaq/QNbQkPKX2vLv2maXGVaEfgF/2cDJN0Z6VGEduV4mmlI75ih+yo48xNXW5ymvlL7MMa0TNpaPenDmslazhXwahdmGJP0tpwMYUxd527cOsJ0N7EjWPJyZ7SX1Ub8tx75ClxaRrSbkQqGj3p5th+xrCGcFPBDWZaEm; 25:2SP4fmqzmUwYTUVhYYtq+kfNK2sPgAyNwzkmVFHDD/cujOhUOHU954MWWoQKWT0PDQf7rQk0JyhF4fLFU5nN5+6pp186D2Tk+PDSMVtAlqUAN7U/mxBXWXFl3FjpqVJc2bpOJuD53pk04//8DqTUPxueafZm4L8sHjIhGZNSVgC2lakSycL7EBe5pfN7d6Vzg6f8RxZe9t96lsAwQEQlNoUSOE7HrSEBdCoXMga5faU78ZJoduamn4grnau2s53eBeyrxzJfELQi6Ja4YfMTZ/Z3tIiaXUL+snRXxuczsi1CUvZ6YfDdz1ummOV4r4KkcoQxznJz0baTrdWwouSw6A==; 31:wEzxgeZtuNdhsD8Dbha4o4ECZvPB9f+Z1RucJpxh38GSJ5MLpAjB3lTzviAMMXIFXkifcTfeWRWY6PipxDSEvap3tPZgsjOv/9NCTdqelUB/OLnmiS/CRBig+5ag/eHk5EtgJgQWJNiehZsKjon6rNVslIdOtRw1i8P0I+4G+9eS0ymADhrpA0dhvirIO0hXmzBMnm+mVj/qO1xQ/Z+AYl7e3vBnCxizFN5LrkyM3Q8= X-MS-TrafficTypeDiagnostic: VI1PR0501MB2048: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2048; 20:0W4QhpLLucRatgeWktPMKMHDu66HH3ClrI+fIPXN6xlpFYjnM22SjwSsjwtsm9/u0PL8m1RP0LIRr3nO973xHl2QL0Lbn1eHdRA0idaO2oSxU6quZNEQbc5EbDmmXnjiYyEMS5XiSsmDHl4GyDI8U4iMz7vwvLVKNTmBAI47N4wTTbcSXOormhYYN/CDZQvag+atVBu4n+er9lJ+Y9fyipGU+b3KJR0wVnjKGNKr6DYeNrEkYa1PDDe5LV7ZUPCQAvpNf7Ma4w+BbfOmClK0v3d+bK/Zn0CQ/866CjVJ3RDXSsP90DvReXtYyL0PQRUlAHS94xiy+7i/Ird0YXrbGo9BPcPKO2tVcms+Q2Xu2xjhjtDGR7gF3ftG9jI0iqCxJM2nt06PZ41yBISGrDBaXNXYJZMV4gFGttFAv/mG59rw3M+2nI4iX5YUq3xzQ2GICDI16y7vfI0D40ylIHDwNXdvlBFS00lszSApD9aJHD1LNYkXYP9ut+mUxcQNGpRw; 4:AK1UOOR6iTwugvO3ZmpSU5ngDQCqll8bMeXi2kLNkWvk5OTxaT6ejsxZKlNngxCYTzmzvU+rk2XaOTOfPI17zqXt4Ch72vRhYVtW14OdFX2//WClozSLaTaclJbGis57+QWIPrHvDnrefp/1c+iKc9AdCQp+2aEhok59PwHWmOmtxyLCIAvMfWpKUl1cdIXAp4oor7UVG5HQTZsu2dKgw28ak6ovbMHj4f9yJB1eY7NgMdPSpxSusrmhaT8o1co/JSsZFgL7vvSQZw23aaQ5OKeCqUrBaYbltCTFfWRX6Jf+phBDXTAFCdIz/V9jhP3q X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3231311)(944501410)(52105095)(93006095)(93001095)(3002001)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011)(7699016); SRVR:VI1PR0501MB2048; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0501MB2048; X-Forefront-PRVS: 07467C4D33 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(136003)(396003)(366004)(346002)(376002)(39850400004)(189003)(199004)(69234005)(28163001)(54906003)(6116002)(76176011)(53546011)(16586007)(966005)(14444005)(97736004)(52116002)(3846002)(386003)(1720100001)(21086003)(6666003)(305945005)(316002)(7736002)(6916009)(36756003)(5660300001)(6306002)(51416003)(1076002)(7696005)(66066001)(50466002)(48376002)(55016002)(105586002)(106356001)(4326008)(50226002)(486006)(478600001)(53936002)(186003)(575784001)(86362001)(47776003)(69596002)(446003)(81156014)(81166006)(16526019)(2906002)(11346002)(2616005)(8676002)(25786009)(26005)(956004)(476003)(68736007)(8936002)(53376002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0501MB2048; 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; VI1PR0501MB2048; 23:7x1qQMNwGTBdhGUx8ZsH4a1nM1APUT4+L29Ufgb?= =?us-ascii?Q?rjqmoaQhY7Wz6G6g6NHHUfuDHi5BNlhXJ+v2D/f820S4dMPWfiZYOs5EC0J6?= =?us-ascii?Q?m4coP5QpRW7vb6E/hGwjFAJeWRjuUf1SKGY1TlEnkHDTbThHlu9XG1WguXlx?= =?us-ascii?Q?oYNDVAH+unL+qvDs9mUJxSPkf0IT9wPYqdMpPm1Gdloyii35AUkjx7v2X6Cj?= =?us-ascii?Q?chsh+BiXRZC4LW4wY2cshbr+yFrdY+lLFWcMG7GNQ/La2LzIzyJ0jFfKunbZ?= =?us-ascii?Q?9Ck8MUKWgyV1RVpgsK/WPYZEi8foOS2hSGoGEK4feqIzfTV8EpDsR0lIC+K7?= =?us-ascii?Q?qqFRal5YPREWA5iGwiy3VcikV0osPd5+1rjYDrYbByKKH8M+xwmFhUu/VvWt?= =?us-ascii?Q?yWWKxvu+47bpKmj9bYswR8oRVIhpBHmjqSqRtaaR4Vv9334EyBvyokWck5sZ?= =?us-ascii?Q?SJYjj+DUE9XCiWQ+irDw+3r9XryJ/45EUnCKC0idpDadNjf14w9VxwPjLU4e?= =?us-ascii?Q?85Oqqg4oAMFiXoPC5DkttCgvJwtgl0ON3aJfskjavqTILS991vZeZnsvOfH9?= =?us-ascii?Q?24Cg8i3j39iLRCEHxWzB3SwYNYyMeZP5mzy4XeNQu3AFigT06htFvkgOh7Sg?= =?us-ascii?Q?QaDs5kbjIYdL77t9wlTaCZMLi8uELcLTrosfZZ1Ok0WKNZrjZOhCqO4mToRK?= =?us-ascii?Q?k0MOQcf7OIH038Y9urS8sEie5pL3Dc0eN1BW08CHdmkoVy1dPeAc/V8AD1rG?= =?us-ascii?Q?/lIurTDcP9z5tgRLGM85wWru0trRMMkI3DuN215o2TKbIFXTJ4pE/LqjT+vY?= =?us-ascii?Q?SP46lI+vFKlo9lIMkfKBuqAjLWTBBeh6tcGWp1kvj4QF5tGjOU1JgUpgsYeR?= =?us-ascii?Q?wDh1oVgm56z8C7fSYgTPaymaFOHKqM0o7pRvc/u4x83a2GvbFT7J0bHNg4jm?= =?us-ascii?Q?JJFrE2KDvai/7K0ORs2qExBtNUHpcTu5PGCPtL8PzXUKSe4vT15FWShJqIIh?= =?us-ascii?Q?X/B5srQAjWPqr+Qude+1QfBlVPQWTraRNe0qoRF9sTeuPQPA9X1DEpyotMs8?= =?us-ascii?Q?/n0suqU7qk6ifwZ/e3DbGRxqh1o+NX1JgZ3HckItmtEhXNldj1YOs4aMYpub?= =?us-ascii?Q?MxAGg8q14RoHFCND1qyd8oFy/jLwObLb9TQf1/CeNBG3TDORc/6dAjs/J5o2?= =?us-ascii?Q?T+YYLFr/o2CM0OJ09LYiApPsnJ+9b0G/JaB+ybJBrTxo0L6388zjsYo2ucn1?= =?us-ascii?Q?GNr66rW5y7qgSZzcM/i3PfXDzvmbTPORdaSF0Z/z0Tj0yLtiZ3V6AU14hUWR?= =?us-ascii?Q?hm4/AsILMl0g0tnW55j4wFLjCOqsAvAQphcgmU6WRZOVooFMAJSiivUj7ytK?= =?us-ascii?Q?9hWpPRMNwl97ep/xNxN2/q9ksESGaAe/oS9Pc22n4XiCXSpnbB99D01lCu+c?= =?us-ascii?Q?1IYuMJFTWoQ=3D=3D?= X-Microsoft-Antispam-Message-Info: PbWCi5OGycDt30U7HOlqmovfDK/0j3RLFM2FUcWhyDkbEjLmKO4kyeueNAd0QtPpmHCrljN1UGpvRBnjxUJ05/X1Jb+edRR1IDIlo2k8Qi+yQA26QqjDwScgXngfsbGEKVXDSIdjs/ttc7jR1ctuqkT1d162Xu2lDzF5UMSjtuiv+vI+Pu3Nk8nIfi54RPLTLbf/Q3GlWurUO8bZ1M5edGazmIRJygKgXg1vjL5jUFf7CN3+U5mte2a4Tcf8QkPPwqISPdXe2AsfVjM0duciJzpyPhNYP46WyeQGT9Ug9r9Tzhw5A4VqNeMU6U8LXjhq3i7hPQxiGpLCPUcB+FBVlgv0EFPWowbndbiHhvnAPIU= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0501MB2048; 6:mCPY7SAAARx+BOR4q9Xr7ZhqqBd8Ryly5SRSSQXaYaOYGqKxhmJpkSafdbaKzXxTsgOZ5zEKbZfL/+QNZ1GG4C4Vh7V26vF6UR2J/09oV0OrIb4QmmJBltslLZZApdsijfC4fqnr6aCujXfY612NmADzUh9MJuYKm3zLDnr3NX8064AeWheEhSOg+dB7wLP3HR69C8/AQSb+LwDNf/ZnErsPfHjTYRD2SoFK8qpolJ5GlyaI8b+i/HzpVQqgGqpoxFdz9x6ZvP3Y0eEC9NAcPLU22L+3pzXsTJNykc1xqq/NSdZgxLw0Lcfjpo6dGXf6TWt2LOZSnyOKw2GeijCiZ72Vru6wfFT9E8lGKVbnRcKcqGzXDRvTbt3yWRsv5aVuK0ELKZAv7dNiUimp+27ivCFKLCm4TFgXXaWCfJB78TRI3FlZ81ftLI8SHGXSX1TQ9vHI58l/TqLDbF0CERh7qw==; 5:FrO0R88mYE7h1Pji79mxzrJlF5DDyQK+SkRQmeyk3h6DuL7/tKi3kD0aptVHiRBfXsqyK7lLIGWlPjhXKP0v56UUDLvebjmotMRi2sUlkuMsEW7A4lHiPPxWl7iO2TkazEIrU5rZtWtNNbzG9plWA0B8nBOL2aXDn3ZZ+1oRRVM=; 7:OiXF3H/MiNQqXNq1DGqCf1+hOXRgozfKBgQrKvqo9QUZVTOhoiUTF8lsm8dnz23+ztMbr9Qg7jzPZnGQI1pp/LcnDpcGRa93wiU8xD0f+AAIyNrYu6RF1oys/irmdoHiT4mb+D/xfkv3ThgLnqLBeWCYQs3fY6ErFarj4A3JyOeLHpkcCL9rgoS70D/HFV8jgaDm6Jkimfprr8IxNWz5Wf+L4SvfLuk4HNB87UfhfTVDF7JQXc2ZRE3tfL1OGZET SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jul 2018 02:30:27.5725 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8fa1632e-b96a-4717-c487-08d5f368eae6 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0501MB2048 Subject: [dpdk-stable] patch 'net/i40e: fix link speed' has been queued to LTS release 17.11.4 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 Jul 2018 02:30:30 -0000 Hi, FYI, your patch has been queued to LTS release 17.11.4 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/28/18. So please shout if anyone has objections. Thanks. Yongseok --- >>From 363b74e7b60779d3115bb3353810a5cbd0e8a388 Mon Sep 17 00:00:00 2001 From: Xiaoyun Li Date: Tue, 10 Jul 2018 17:30:54 +0800 Subject: [PATCH] net/i40e: fix link speed [ upstream commit 9214ee18eef97709eca481998cf7dca50520896c ] When link needs to go up, I40E_AQ_PHY_AN_ENABLED is always be set in DPDK. So all speeds are always set. This causes speed config never works. This patch fixes this issue and only allows to set available speeds. If link needs to go up and speed setting is not supported, it will print warning and set default available speeds. And when link needs to go down, link speed field should be set to non-zero to avoid link down issue when binding back to kernel driver. Fixes: ca7e599d4506 ("net/i40e: fix link management") Fixes: 1bb8f661168d ("net/i40e: fix link down and negotiation") Signed-off-by: Xiaoyun Li Acked-by: Qi Zhang --- drivers/net/i40e/i40e_ethdev.c | 67 ++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 26 deletions(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 70c51ff37..711c6e7b6 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -1983,27 +1983,40 @@ i40e_phy_conf_link(struct i40e_hw *hw, struct i40e_aq_get_phy_abilities_resp phy_ab; struct i40e_aq_set_phy_config phy_conf; enum i40e_aq_phy_type cnt; + uint8_t avail_speed; uint32_t phy_type_mask = 0; const uint8_t mask = I40E_AQ_PHY_FLAG_PAUSE_TX | I40E_AQ_PHY_FLAG_PAUSE_RX | I40E_AQ_PHY_FLAG_PAUSE_RX | I40E_AQ_PHY_FLAG_LOW_POWER; - const uint8_t advt = I40E_LINK_SPEED_40GB | - I40E_LINK_SPEED_25GB | - I40E_LINK_SPEED_10GB | - I40E_LINK_SPEED_1GB | - I40E_LINK_SPEED_100MB; int ret = -ENOTSUP; + /* To get phy capabilities of available speeds. */ + status = i40e_aq_get_phy_capabilities(hw, false, true, &phy_ab, + NULL); + if (status) { + PMD_DRV_LOG(ERR, "Failed to get PHY capabilities: %d\n", + status); + return ret; + } + avail_speed = phy_ab.link_speed; + /* To get the current phy config. */ status = i40e_aq_get_phy_capabilities(hw, false, false, &phy_ab, NULL); - if (status) + if (status) { + PMD_DRV_LOG(ERR, "Failed to get the current PHY config: %d\n", + status); return ret; + } - /* If link already up, no need to set up again */ - if (is_up && phy_ab.phy_type != 0) + /* If link needs to go up and it is in autoneg mode the speed is OK, + * no need to set up again. + */ + if (is_up && phy_ab.phy_type != 0 && + abilities & I40E_AQ_PHY_AN_ENABLED && + phy_ab.link_speed != 0) return I40E_SUCCESS; memset(&phy_conf, 0, sizeof(phy_conf)); @@ -2012,15 +2025,17 @@ i40e_phy_conf_link(struct i40e_hw *hw, abilities &= ~mask; abilities |= phy_ab.abilities & mask; - /* update ablities and speed */ - if (abilities & I40E_AQ_PHY_AN_ENABLED) - phy_conf.link_speed = advt; - else - phy_conf.link_speed = is_up ? force_speed : phy_ab.link_speed; - phy_conf.abilities = abilities; - + /* If link needs to go up, but the force speed is not supported, + * Warn users and config the default available speeds. + */ + if (is_up && !(force_speed & avail_speed)) { + PMD_DRV_LOG(WARNING, "Invalid speed setting, set to default!\n"); + phy_conf.link_speed = avail_speed; + } else { + phy_conf.link_speed = is_up ? force_speed : avail_speed; + } /* PHY type mask needs to include each type except PHY type extension */ for (cnt = I40E_PHY_TYPE_SGMII; cnt < I40E_PHY_TYPE_25GBASE_KR; cnt++) @@ -2056,11 +2071,18 @@ i40e_apply_link_speed(struct rte_eth_dev *dev) struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct rte_eth_conf *conf = &dev->data->dev_conf; + if (conf->link_speeds == ETH_LINK_SPEED_AUTONEG) { + conf->link_speeds = ETH_LINK_SPEED_40G | + ETH_LINK_SPEED_25G | + ETH_LINK_SPEED_20G | + ETH_LINK_SPEED_10G | + ETH_LINK_SPEED_1G | + ETH_LINK_SPEED_100M; + } speed = i40e_parse_link_speeds(conf->link_speeds); - abilities |= I40E_AQ_PHY_ENABLE_ATOMIC_LINK; - if (!(conf->link_speeds & ETH_LINK_SPEED_FIXED)) - abilities |= I40E_AQ_PHY_AN_ENABLED; - abilities |= I40E_AQ_PHY_LINK_ENABLED; + abilities |= I40E_AQ_PHY_ENABLE_ATOMIC_LINK | + I40E_AQ_PHY_AN_ENABLED | + I40E_AQ_PHY_LINK_ENABLED; return i40e_phy_conf_link(hw, abilities, speed, true); } @@ -2167,13 +2189,6 @@ i40e_dev_start(struct rte_eth_dev *dev) } /* Apply link configure */ - if (dev->data->dev_conf.link_speeds & ~(ETH_LINK_SPEED_100M | - ETH_LINK_SPEED_1G | ETH_LINK_SPEED_10G | - ETH_LINK_SPEED_20G | ETH_LINK_SPEED_25G | - ETH_LINK_SPEED_40G)) { - PMD_DRV_LOG(ERR, "Invalid link setting"); - goto err_up; - } ret = i40e_apply_link_speed(dev); if (I40E_SUCCESS != ret) { PMD_DRV_LOG(ERR, "Fail to apply link setting"); -- 2.11.0