From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0070.outbound.protection.outlook.com [104.47.42.70]) by dpdk.org (Postfix) with ESMTP id 6A483FA62 for ; Wed, 15 Feb 2017 20:07:33 +0100 (CET) Received: from BN6PR03CA0021.namprd03.prod.outlook.com (10.168.230.159) by DM2PR0301MB0735.namprd03.prod.outlook.com (10.160.97.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Wed, 15 Feb 2017 19:07:31 +0000 Received: from BL2FFO11FD022.protection.gbl (2a01:111:f400:7c09::153) by BN6PR03CA0021.outlook.office365.com (2603:10b6:404:23::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16 via Frontend Transport; Wed, 15 Feb 2017 19:07:31 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; caviumnetworks.com; dkim=none (message not signed) header.d=none;caviumnetworks.com; dmarc=fail action=none header.from=nxp.com;caviumnetworks.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD022.mail.protection.outlook.com (10.173.161.101) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.904.16 via Frontend Transport; Wed, 15 Feb 2017 19:07:31 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v1FJ5fM6020023; Wed, 15 Feb 2017 12:07:28 -0700 From: Hemant Agrawal To: CC: , , , , , Date: Thu, 16 Feb 2017 06:09:35 +0530 Message-ID: <1487205586-6785-37-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com> References: <1485172803-17288-1-git-send-email-hemant.agrawal@nxp.com> <1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131316592513972451; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(7916002)(39380400002)(39860400002)(39850400002)(39450400003)(39840400002)(39400400002)(39410400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(33646002)(110136004)(85426001)(626004)(389900002)(38730400002)(47776003)(92566002)(2906002)(4326007)(5660300001)(86362001)(5003940100001)(50466002)(8676002)(81166006)(81156014)(48376002)(8936002)(2351001)(189998001)(105606002)(50226002)(15650500001)(104016004)(76176999)(6666003)(50986999)(106466001)(68736007)(356003)(53936002)(305945005)(8656002)(54906002)(36756003)(2950100002)(6916009)(77096006)(97736004); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0735; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD022; 1:S6h9bHeoCcursRyMrSci8lCqEakzF1aIm20zJXR7gWhJprd0HKGzV3eZOsWavTddYrlvi5hDPOtxcaFJ0jaYawsWagIAP/47QHH4ueXcf+7TWm19B31rb9lIVDdRHH3jtsnZYSyTA2E/gGXn5N5TOLW5DFjNfVEnZww8qw5z3r6PVzymhctbLzFfT/jr2h4zKB+q/xdPCyMyE2GoSS9TLxRjMARffpdVFM83yVjdAwf12UuxZobE1kmglHlpOrDpAQabq/x9dI+1VixeVG5btVGSL+u218p/hm02gnOMLvLlrZN173d6zgsrohGTBspAkOyo6shsmd6FUr9WkKS/pJ1sKFASY5tKDd8FUeRIx+de/QO/FvZ33Y75UJX7vWDFUwAktXh/ubVmDEvk6QZVavwqFg2aco1DzIBg3pI03L4QQQog0qFwzhfLgSgwml/G1Tdheg7QX774gstxBrzNli0K+qndEKIaFCatMc5Q4pU6fWjToylQDUfkeJF1iFZ/iwa7gP8BI+StS/upUU0DxRjC1JT+bmNjS6US5Wix757IS0olc9GUYpALSPPPhklkubt2APQVTTpoZ8daulceAIA6CbmpmFz7/5yPkbGiQnZQWApmDLt7ni2ukORo55Som9Fvjni+WWJJraM3pwXuLA== MIME-Version: 1.0 Content-Type: text/plain X-MS-Office365-Filtering-Correlation-Id: c9212c65-99f5-43cf-9782-08d455d5e45d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DM2PR0301MB0735; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 3:9ZZi0nCWMr9XpF4A1ZOGNMWtuEpzyyowBbslrOy7fp9rTOGOgdJDC2FtnSDQ7oWzIuOzaaw1dYtVK9KwdGTrVis+kCgIThmDO7cDuaBh53KWWpvdu/VSpfpis58vgVu3DbO2z2tY7YmwNheNFEMgtzSW3EQK2T75qpugHjfmOuP6tyLvwIg4GGTQn79MQHRnB3y3f1KZAIWqi57gNNmZDw8YzKhZrvn9R50zf42iLnHQRlRGrCabJfNq4b2tuMHGqw7xAvPzEjG+nHyE1k1myCAhVl3Q2ST2VrviBr9N2I3rXbqSKmc8xtBMHz6OhyWxVwnU74zqciQ0J3BbIpW2b7hCM36pQXH6YEBNtMxtRa2aGQXcy6X9whCHbkWysWCS; 25:r7WUcbJhfTdngmdGkWsXr5ufAuY1F3usCyUuJ8LAAJJHRv9C/XPxbe1eul78TE55KtRsb00Z2p2bOUCgyQDQL5goet5KskcYDKmLfk4Nu31a1Zvy5z/HEijnLkkpcc3mhE+2mfIujn8Xcu1nuD+594MjUHApay4kQVm5W5MrD6isFSQtBAOWZ7+VlMWI9xQGSs4hz0j9khO3E6cAxJGPtHc21s2AXSC5lwD1lmZMD0mY9OupU8sJu4qGpqc5qdEUHhFjvV1cGuZuuRryPrDwy2Eeekjzk6B0qBZ/bSPun//BQRN48BU0v8iCeR607pOqw77z9bYtqmBbDelTmPYY8H/WKL8Lr9sauwHSid9WVR9qGoqIGnZMOJDyXMWsX4FQmGrpsJR3vPsDHBrKAujG8eXcE+BXmRu+fC2wucPTfaYCE03quhZLzUy1eGXMLb6Uhn72cveYTwloY/04pH8opQ== X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 31:Ymlds97GVTohWJJLOZyRo1eHRl2+6YPhgvOfuIbdGwvG4VA+KUvGNO1J6fd6IeHmk+fLaMSKayiWmVmgViXsnLrdDvKuhv8DS6p01E2I5Gbu0v55iKwb/7vPzLy7CON0kw8yOCdAIUOdrHdcx0blDtDADeVJEB2AOufTNmaF1kLphHsAtezWBh+P6c0f0Shj/Dq7tXsVd6DFQKhSa1f9Pm512Ghhq6yX3OjZTTIeUz6D7K9+BmteJc6/QdZhcpRu X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(8121501046)(13018025)(5005006)(13023025)(13024025)(13017025)(13015025)(3002001)(10201501046)(6055026)(6096035)(20161123556025)(20161123565025)(20161123563025)(20161123561025)(20161123559025); SRVR:DM2PR0301MB0735; BCL:0; PCL:0; RULEID:(400006); SRVR:DM2PR0301MB0735; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 4:72nT3Nr5UD+NCzGrs9Gep0k0lg5i0KKMSXbZHaC/bzmVthTaz/sF7oCzv05By38dSv36Mu7skkWL3csc1Z9bAlQoJRTglNE5RPVcap0Au5u7ztbgFVQQrOp54ZejO0xEyQTtkAaqvWYE6JIF1aYllMk/oy8eCohjBUbSadGRa3whQTQ148XmlvNiW1tTtFOxGK5SBQWKvjEyl6GiEC6E/+tC8saLdPbMch9SLagK5EfAjjY83O1I0Z81O1u71bYZWrAKhcKBGAMqhzACfv02w23jtbqBjQqCgjUgs72TcPlol3BPqNO2tp3DWeGqkz1dBL3eBG+SwvlH7NjYIqOEzzGfm+NDP5jKl/HVtibViUK6hXAhrI6bic5wQjrWekSCxDDwNL1RsoJwqZEpeqKTxO7AdoDp8ekL+zT30PUwAw/Qsr+MPrGdIcqBcMKDVnXYz+4JXJb4eg1J3CvLjue7qTa8MOsJEPjEO6efSxPPVmzTeAfeQ+N10KlfRf1NQtS5sp92eVRgSqOfRQOgmgO0Qeg1HvgSSBcC1+Owe1bz286AbVl8T+G9jlqjUaKw0mFUNdUYICrwd2XDye3vZbHeKV8QhauCkmYwjQr4rvOWChK2YuMLPw4xUYh8ootcYvtWAqhROjOmChHh2y+upZLe8WeXkuy+dfDnGvYtfSKRO5GCLq/NceVcA/S4526lnX0dG1hnJWyQuJCUgaDXNtrkPYyPOEJ/R0B8HBxvr4WmoZRS9vQ06qIS3FCXDTeGM6FL X-Forefront-PRVS: 021975AE46 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB0735; 23:LE/lFCABRYWWXhaSLlEnCgtpAVXPnmD69LS+TSD?= =?us-ascii?Q?fg2KD6Q+nmnpI2C9lN5V/ecskHC2b8RXWZAOGszVnS8TksWkYDMNtqX5nEC0?= =?us-ascii?Q?mMsbwi9aYFh3KO9vATBCIfJXGa3s6vef2uHa2iejm/eHkVhnOlIiIDvZwtS9?= =?us-ascii?Q?E1+nVc9H/VQOOic5QJkZwVSrysS0WX2ANZzHRroCiNUAbQOjLKYlNC8Jhd6+?= =?us-ascii?Q?U/B+6v4417w8IuZA4j3Pm4xg+slCCEjKhimIcIsw3lFgyalg3u/6ke2yzbxz?= =?us-ascii?Q?hktUGG5FoSlx2S0krPpdOI9f85NQzwFet9LSUBWui3Jzy2b9pPn8WUDICOlu?= =?us-ascii?Q?RrdDA0xuStarakypAMTT4t9FvfVJmqJW5Nena6JKlZx5j7VMxC2nNEGhSRvR?= =?us-ascii?Q?lnP+uAksxrZa9FCmT11TrswDHBBUqCtsxWhSKctyFjLN+CNZ3aOw+VY8KYDM?= =?us-ascii?Q?CUADCaabQGYCmAe1qtxVz/AmtM4scAuy3Q/VAkYBBwhmQ9qJPo9XyykYabl0?= =?us-ascii?Q?7KQ7htLL0eRzDeVgVR0+P6SpCJzuKpONFwaRLWn3I9VixXIe1yotODCgVBEF?= =?us-ascii?Q?2tviB/H9yGxnHLFJ77WGDlsjarbV4WzuHJPPFTXc/FVCpTPd0UrN4m5CUuFV?= =?us-ascii?Q?oRV14J5Ksn0ke9ZOmp6pqwq1CbXk738x55rsh0sdhCs7qamA3sfeocFwFhBY?= =?us-ascii?Q?Evv5b9/jFhhsTNJenBhwjOyF3zBMbNv+//uQkhRZFPnawJ2BKqvHR/knIuIO?= =?us-ascii?Q?pCmly8SmmqwoIjnb/5EJYTI6PwwhTdkbldWNpW+5eK9SI6qvtb4H4V8YqROk?= =?us-ascii?Q?xbKyGUwtAWhXTV3OaCHTtN4GHVz2Wc8UpLN1bUqWP3QI8q5qnujWUjAY/iZy?= =?us-ascii?Q?kNEMW7X/ZoN/myCDyMY8VijggMJtEpXf3qvONHbFgfyy3tg5eVeDM5YZ6iuP?= =?us-ascii?Q?V0t+Xe4W/HkKgn26+dHTBPItDb6NFzMbHZqrDS7rSjV1xm8G3ZRk/CMiLarX?= =?us-ascii?Q?DJuHwJN2/xTX8d42Ic8ZoT2cbBLI5Vh7aXxYznIt78t8AKc5Yok7toZQWlZY?= =?us-ascii?Q?Gq5MMYozcpNhQzS2g13uuekS8/EGpPO8n8MErsrvHU2O8rtjmblYnVyjn9D6?= =?us-ascii?Q?IV7f0hakpKh4PpJ0kPs64S4jNv/QAqDju5Jb1Gi2cpx9Qinql/I02tUbLxRn?= =?us-ascii?Q?K7R6P9EvZ7iumMq+nw4N9BQnQx0VHLQyFdjU2wNGqFtGectwmWMPKdlCTU65?= =?us-ascii?Q?VMTP7jBAGk43Ej7NkjZIh8scegzdcreZhHKNY0lP3ZJMk2bR0aa0smJ6vrHu?= =?us-ascii?Q?2goi+N2wbzeW3tOnpd8+MQ6CF6qPF+9JhcG9LvVDul/P75ghW9c5Nljj/9o+?= =?us-ascii?Q?S4St5Yw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 6:1lU66zWysABGPFQZcDzW+0wu4jQgNhimKBWe8syrptWQNrTUhi+tcOKtsw397RJDf/5IpagAznm/KbjZ+OD3OthNg4DQuweOiEJBazQIsvrfCV4Tu3VbExIlstOITfW28Q82w47CuLLtSqhWcPURPIo46NFiQRB2+WegE9fzyJFn6WhVH7zA0vX6Mkom3QT3+DoyZIEX16zJFNHa54q6GlSD4sHyDx+e59Z7LVaUQpen+oK7Z9Qh/rXGRbjJMxEy2EHG9dUm4nL/hUg0bgXtZ+Bpg2T30Vy2+nurAM9xidzn7NFiKEJo7qDmuwJwOzZ1CgCPg3VN4Iy3hiiljzR49XFh13IAuj/p7GNFqrHYxm5pKu5HtlQ3BauJsx4uZB7TsDvK9raTQbilRi+OaylsS8wnVDtJmmn9eyb7D2RF1kg=; 5:KecxOTvmggHWO0ogNxVS1lNLtpb9EahQ4N6cFo9WA+9tFTjfy535IxLBbpdRK+nnD/g1NpajV0zKG1IjkxOLfQIyohm1SN5hu3HgKCl/MZ5fIxVeVUIdP1bDCc+O6TA0UgT3OwQA8lTS0tTQwmRW+y5YRDNS5fKCMeI2A7y8gS0A5vhon7lI9kmTPSRNGgQk; 24:IuIgIr7lpM20QSFXJAyczf63fwrT3pa4Yb6PfIdczDyqTgpx2rnPcaSaTIWReQBkNy/2h4CXzz4RzoL7rJxgGmA7hZ4nyQBQyMnfVZ781oo= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0735; 7:GgiGGNnPAmp1eF9MDhO+bCGpVYZkfB/LA65wWBXYzQQJAPf7nh7AcpGQ7ZU033Y8dhBqQQnrUj12h3bx7pg9l3hnCiR0mA7/syaDWbkHy2lvJit8JXNgyQ5VFotTUsFJL3RgmLd0ijwg9RciVCwcdmKt19YILkrRItkXKOEUgWGycUSZTmm0LH2RBV8h0C8yHxfBxy7Qxp2D//pNHh9kWWo+hzNtwHhJoV8r9L5cvnJcHYnz9NDbCGNi+Y+rIptrBxg/B8DKw486WJMVwkw4uC27uGcUyhGPXewe4HTs/qfYi+d2hc5Z2Nh7I1MhQgKYzlTa72ZJyq2998dLMaHSog== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2017 19:07:31.2100 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0735 Subject: [dpdk-dev] [PATCHv7 36/47] net/dpaa2: link status update 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, 15 Feb 2017 19:07:34 -0000 Signed-off-by: Hemant Agrawal --- doc/guides/nics/features/dpaa2.ini | 1 + drivers/net/dpaa2/dpaa2_ethdev.c | 107 +++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini index 0746d4b..0660cab 100644 --- a/doc/guides/nics/features/dpaa2.ini +++ b/doc/guides/nics/features/dpaa2.ini @@ -4,6 +4,7 @@ ; Refer to default.ini for the full list of available PMD features. ; [Features] +Link status = Y Queue start/stop = Y MTU update = Y Promiscuous mode = Y diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c index c4131e1..14b9654 100644 --- a/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/drivers/net/dpaa2/dpaa2_ethdev.c @@ -54,6 +54,58 @@ static struct rte_dpaa2_driver rte_dpaa2_pmd; +/** + * Atomically reads the link status information from global + * structure rte_eth_dev. + * + * @param dev + * - Pointer to the structure rte_eth_dev to read from. + * - Pointer to the buffer to be saved with the link status. + * + * @return + * - On success, zero. + * - On failure, negative value. + */ +static inline int +dpaa2_dev_atomic_read_link_status(struct rte_eth_dev *dev, + struct rte_eth_link *link) +{ + struct rte_eth_link *dst = link; + struct rte_eth_link *src = &dev->data->dev_link; + + if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst, + *(uint64_t *)src) == 0) + return -1; + + return 0; +} + +/** + * Atomically writes the link status information into global + * structure rte_eth_dev. + * + * @param dev + * - Pointer to the structure rte_eth_dev to read from. + * - Pointer to the buffer to be saved with the link status. + * + * @return + * - On success, zero. + * - On failure, negative value. + */ +static inline int +dpaa2_dev_atomic_write_link_status(struct rte_eth_dev *dev, + struct rte_eth_link *link) +{ + struct rte_eth_link *dst = &dev->data->dev_link; + struct rte_eth_link *src = link; + + if (rte_atomic64_cmpset((uint64_t *)dst, *(uint64_t *)dst, + *(uint64_t *)src) == 0) + return -1; + + return 0; +} + static void dpaa2_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { @@ -430,6 +482,7 @@ struct dpaa2_dev_priv *priv = dev->data->dev_private; struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw; int ret; + struct rte_eth_link link; PMD_INIT_FUNC_TRACE(); @@ -439,6 +492,10 @@ ret, priv->hw_id); return; } + + /* clear the recorded link status */ + memset(&link, 0, sizeof(link)); + dpaa2_dev_atomic_write_link_status(dev, &link); } static void @@ -531,6 +588,55 @@ return 0; } +/* return 0 means link status changed, -1 means not changed */ +static int +dpaa2_dev_link_update(struct rte_eth_dev *dev, + int wait_to_complete __rte_unused) +{ + int ret; + struct dpaa2_dev_priv *priv = dev->data->dev_private; + struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw; + struct rte_eth_link link, old; + struct dpni_link_state state = {0}; + + PMD_INIT_FUNC_TRACE(); + + if (dpni == NULL) { + RTE_LOG(ERR, PMD, "error : dpni is NULL"); + return 0; + } + memset(&old, 0, sizeof(old)); + dpaa2_dev_atomic_read_link_status(dev, &old); + + ret = dpni_get_link_state(dpni, CMD_PRI_LOW, priv->token, &state); + if (ret < 0) { + RTE_LOG(ERR, PMD, "error: dpni_get_link_state %d", ret); + return -1; + } + + if ((old.link_status == state.up) && (old.link_speed == state.rate)) { + RTE_LOG(DEBUG, PMD, "No change in status\n"); + return -1; + } + + memset(&link, 0, sizeof(struct rte_eth_link)); + link.link_status = state.up; + link.link_speed = state.rate; + + if (state.options & DPNI_LINK_OPT_HALF_DUPLEX) + link.link_duplex = ETH_LINK_HALF_DUPLEX; + else + link.link_duplex = ETH_LINK_FULL_DUPLEX; + + dpaa2_dev_atomic_write_link_status(dev, &link); + + if (link.link_status) + PMD_DRV_LOG(INFO, "Port %d Link is Up\n", dev->data->port_id); + else + PMD_DRV_LOG(INFO, "Port %d Link is Down\n", dev->data->port_id); + return 0; +} + static struct eth_dev_ops dpaa2_ethdev_ops = { .dev_configure = dpaa2_eth_dev_configure, .dev_start = dpaa2_dev_start, @@ -538,6 +644,7 @@ .dev_close = dpaa2_dev_close, .promiscuous_enable = dpaa2_dev_promiscuous_enable, .promiscuous_disable = dpaa2_dev_promiscuous_disable, + .link_update = dpaa2_dev_link_update, .dev_infos_get = dpaa2_dev_info_get, .dev_supported_ptypes_get = dpaa2_supported_ptypes_get, .mtu_set = dpaa2_dev_mtu_set, -- 1.9.1