From patchwork Fri Sep 20 16:22:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Belous X-Patchwork-Id: 59530 X-Patchwork-Delegate: ferruh.yigit@amd.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 88A401F525; Fri, 20 Sep 2019 18:22:09 +0200 (CEST) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-eopbgr820088.outbound.protection.outlook.com [40.107.82.88]) by dpdk.org (Postfix) with ESMTP id B3A8A1F503; Fri, 20 Sep 2019 18:22:05 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Fa6eaSVcjM5HRB7p+W4saWka7ps0vO/wA/pxq4HgxaaFr7fbKefdMm9QJWMxpDVVkCSb9H6AqKx8dqOV4wdaegluC8XdSWvK+4TtdTDlQ70l/qaNDJNTgogocdAHkn44QJm2xn4ybTQk5gxFUu+SdJBL7+mgZ4wmqgjEKEKUZ9VYMB2HRcUI7Ox8gd5Kln6fXoauBdm4O8bssgl/fPpzV5Ypz7alPkcEY9TgOR7nGrDb8mitrEUjXGN0TKVjkDATzmZVgBt/Vw00ouruSUH+PqqWzr13HZ7MWvyOuheeaQZu+3LgfK5C/7xhIASjDLAjqsVkuhfz9FGiwm9qAw9dqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ry6RHIEJ1wRo25HcCKoBqcDGv5GZbd4X5Wccr7Fz9as=; b=QMwVwwHLQ+0ogCM8I7eg2SiqVfkQgvuD3XbLRbCjEJT7KgXMFvUyk3D7n6T1I+9aQ4E16s7YdUjt27LZzt+5WnbfQpvuzLSdnXbH8J0NHcRd9jswV1HyD95FGY0FnW9n2QE6zjrJAzS/A+dAeDVlheGPDImMeawQp3DB7qTNNKAJR5cMsyvoFhVTjGqJ8X1Aydq5Jc+47wSacEucjtWnUUa6AnCWH/zWQC6bgGHPYei1NAmezECpEPzXoqCFqLwIMQbk+SPRDgm0dK1BFuI41oD8tdTp1zKMbLk8/RZC3Y4jh8RxSpRDvz2SAJA3H94Gyz3Oi/Kw4S9cBvcgeXLQYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aquantia.com; dmarc=pass action=none header.from=aquantia.com; dkim=pass header.d=aquantia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector2-AQUANTIA1COM-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Ry6RHIEJ1wRo25HcCKoBqcDGv5GZbd4X5Wccr7Fz9as=; b=dtdJl0AF//kTgk0kVHvmbkCUErHCx/55nC4mxkf+KeUpiTHaJ4KK+ACSMZGgXDXL1sYR0uXkc2+fjmyj2ioLcr6aHfEZRvd9QiANXkjObhc/BHAqJ72evGEBoldKuB9fDZpZptJ+l+0dKqXGiIKNubtniR2Xi8MIbIBr+vnj3JU= Received: from CY4PR1101MB2183.namprd11.prod.outlook.com (10.172.76.20) by CY4PR1101MB2165.namprd11.prod.outlook.com (10.174.54.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.19; Fri, 20 Sep 2019 16:22:02 +0000 Received: from CY4PR1101MB2183.namprd11.prod.outlook.com ([fe80::894e:7352:6cbd:bb25]) by CY4PR1101MB2183.namprd11.prod.outlook.com ([fe80::894e:7352:6cbd:bb25%11]) with mapi id 15.20.2284.009; Fri, 20 Sep 2019 16:22:02 +0000 From: Pavel Belous To: Ferruh Yigit CC: "dev@dpdk.org" , Igor Russkikh , Corey Melton , Pavel Belous , "stable@dpdk.org" Thread-Topic: [PATCH v2 1/3] net/atlantic: exclude MACSEC counters from xstats Thread-Index: AQHVb8+JjG3TvbEfKUK2vxB8IMPeWA== Date: Fri, 20 Sep 2019 16:22:02 +0000 Message-ID: <85744ec877be5433cc028e25c7d00f7231fa927c.1568994395.git.Pavel.Belous@aquantia.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1PR0401CA0063.eurprd04.prod.outlook.com (2603:10a6:3:19::31) To CY4PR1101MB2183.namprd11.prod.outlook.com (2603:10b6:910:18::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Pavel.Belous@aquantia.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [95.79.108.179] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 260708a0-d9e0-4a59-b0a3-08d73de6ab2e x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:CY4PR1101MB2165; x-ms-traffictypediagnostic: CY4PR1101MB2165: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:331; x-forefront-prvs: 0166B75B74 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(396003)(136003)(346002)(366004)(39850400004)(199004)(189003)(6506007)(386003)(76176011)(66446008)(66476007)(2616005)(102836004)(64756008)(2906002)(118296001)(316002)(50226002)(36756003)(186003)(8936002)(99286004)(26005)(6116002)(3846002)(8676002)(446003)(11346002)(256004)(52116002)(486006)(54906003)(44832011)(6916009)(476003)(81156014)(81166006)(66066001)(6486002)(25786009)(14454004)(66946007)(7736002)(5660300002)(6512007)(66556008)(86362001)(478600001)(6436002)(4326008)(71190400001)(305945005)(71200400001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1101MB2165; H:CY4PR1101MB2183.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 4OahqAxBH1EzmNPgo2f2Xyrd2ziv5VGdJWDPS/y0gxzlqt/2z5wgS5SZh4jEHYds9Mi2B4McjRCpZz7+sCkwA2yx/HpNKupqwHgyz7sXEkSZKk4VXTp/27cRIQLMfUhhEmiQHRDuNx41w4YzBUa/aWuGwcTI1JBDNR4a4sG0DgTnSw2A522L633at06H7sL73QIu6qfeXEEJy4DcV8tCkCAloy99yhOfzuqsghO7/qFcBXjJBKV8XrHOjLXMHPxK9OsxXiTQygxpEDS/Gv/H1nm9BRAf1CylG4034CD9k6+7IrbcBY2KFrjmWGlFREA0aMBMuuTjoD35ZaeVc8C0vC90vhy8bzbW/71ob1uP9R4DYuEibw8dLfSZRyd2/Cw+vXix014/tCvjTHypM6zFnDWoJyCs41qbXChNe69xDzM= MIME-Version: 1.0 X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 260708a0-d9e0-4a59-b0a3-08d73de6ab2e X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2019 16:22:02.6158 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: sjMI0wFhEK9GRbvRZFXolYeskRFBNPDjvnQk5qrk84SZnp/iFHktW5qgBPvHLeM6qw9aisSwYXAorcxRKK5PFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2165 Subject: [dpdk-dev] [PATCH v2 1/3] net/atlantic: exclude MACSEC counters from xstats 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" From: Pavel Belous Currently, driver always return full set of xstats counters, including MACSEC counters. But this driver also supports AQC100 chips, which does not have MACSEC feature. This fix adds checking for MACSEC availability (based on FW capability bits) and returns xstats without MACSEC counters if MACSEC feature is not available. Fixes: 09d4dfa85359 ("net/atlantic: implement MACsec statistics") Cc: stable@dpdk.org Signed-off-by: Pavel Belous Signed-off-by: Igor Russkikh --- drivers/net/atlantic/atl_ethdev.c | 52 ++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index 3c1b349..178f7db 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -993,20 +993,42 @@ atl_dev_stats_reset(struct rte_eth_dev *dev) } static int +atl_dev_xstats_get_count(struct rte_eth_dev *dev) +{ + struct atl_adapter *adapter = + (struct atl_adapter *)dev->data->dev_private; + + struct aq_hw_s *hw = &adapter->hw; + unsigned int i, count = 0; + + for (i = 0; i < RTE_DIM(atl_xstats_tbl); i++) { + if (atl_xstats_tbl[i].type == XSTATS_TYPE_MACSEC && + ((hw->caps_lo & BIT(CAPS_LO_MACSEC)) == 0)) + continue; + + count++; + } + + return count; +} + +static int atl_dev_xstats_get_names(struct rte_eth_dev *dev __rte_unused, struct rte_eth_xstat_name *xstats_names, unsigned int size) { unsigned int i; + unsigned int count = atl_dev_xstats_get_count(dev); - if (!xstats_names) - return RTE_DIM(atl_xstats_tbl); - - for (i = 0; i < size && i < RTE_DIM(atl_xstats_tbl); i++) - strlcpy(xstats_names[i].name, atl_xstats_tbl[i].name, - RTE_ETH_XSTATS_NAME_SIZE); + if (xstats_names) { + for (i = 0; i < size && i < count; i++) { + snprintf(xstats_names[i].name, + RTE_ETH_XSTATS_NAME_SIZE, "%s", + atl_xstats_tbl[i].name); + } + } - return i; + return count; } static int @@ -1020,9 +1042,10 @@ atl_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, struct macsec_msg_fw_response resp = { 0 }; int err = -1; unsigned int i; + unsigned int count = atl_dev_xstats_get_count(dev); if (!stats) - return 0; + return count; if (hw->aq_fw_ops->send_macsec_req != NULL) { req.ingress_sa_index = 0xff; @@ -1035,7 +1058,7 @@ atl_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, err = hw->aq_fw_ops->send_macsec_req(hw, &msg, &resp); } - for (i = 0; i < n && i < RTE_DIM(atl_xstats_tbl); i++) { + for (i = 0; i < n && i < count; i++) { stats[i].id = i; switch (atl_xstats_tbl[i].type) { @@ -1044,14 +1067,15 @@ atl_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, atl_xstats_tbl[i].offset); break; case XSTATS_TYPE_MACSEC: - if (err) - goto done; - stats[i].value = *(u64 *)((uint8_t *)&resp.stats + - atl_xstats_tbl[i].offset); + if (!err) { + stats[i].value = + *(u64 *)((uint8_t *)&resp.stats + + atl_xstats_tbl[i].offset); + } break; } } -done: + return i; } From patchwork Fri Sep 20 16:22:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Belous X-Patchwork-Id: 59531 X-Patchwork-Delegate: ferruh.yigit@amd.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 5D0E81F52D; Fri, 20 Sep 2019 18:22:12 +0200 (CEST) Received: from NAM04-BN3-obe.outbound.protection.outlook.com (mail-eopbgr680083.outbound.protection.outlook.com [40.107.68.83]) by dpdk.org (Postfix) with ESMTP id D16C61F50C; Fri, 20 Sep 2019 18:22:06 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OeoS7aJJBVJczE+mrCPsyVnqFMemud25x+cdRGKuBplNHjbs/5+EZD39VFdW2cvO5uedmYRfX5yBNHzMAVx4WsEwo+QIqTsGvK633NPBpsx5beA1oPmTCfH5duzsFjIXXpNX72ATIscbpzCOojwMhrAUTsQx9zAyl/jcObWcILoRolya3KxGLzPhEoVojBNUUgdvOzrhwMnc+TpFPNZ1rYf40uC6h+S0ytHeSWVwLZewbwS1sJenbd9K7WWeoVDNtbLoBYED5RKeoAiiaPD2glxwY8iC3BuPxE5+tDJw29xBTcImJl7W7kd5uYfYf3cTK6/YuP4XeK6IQMDktlnWiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=82e7a7fzlsQlm8qhQe92DoXfdJjAfI8FRnizJh6dHsY=; b=fyMotBBY2fKLsb0//klVZYiFHwuSS6yMgJTf6zgS4pGtCr5LzS5HvzioIr/C9L7OlWPRc8bQP9GfB/i1Fiu9Kw7fgW8VSK6NOSzji+Me1heya5Z93V1FX27yNH9PdiF3sSLC4b64d929EdBnPoRA/30aD6jsQ+A0maw+V9ZwgH//JMlN+JBEWpAKTmO6XEh4IBQrD7AI7d7el87dQAZORE1RxLAdh/U/lEoRcAplUYJgDEsCqrnrO107O0vlEAsRonkR9xYi79zSEqLsX+1afh8f9ljIDRviVx4hDD61WlAWXCF62TqEJLSUcbtiyC4TfwsYMXcnrv50SPIXzXXF9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aquantia.com; dmarc=pass action=none header.from=aquantia.com; dkim=pass header.d=aquantia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector2-AQUANTIA1COM-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=82e7a7fzlsQlm8qhQe92DoXfdJjAfI8FRnizJh6dHsY=; b=cyhsnJIJNz00ceONe/kPx7u3ovLQrPiYqwgJ1m9e1bWz543t6wXseHoGMvXHrnG2uT+K3/rGd51z4MF6luavun/AzX1r9Zk1FeFuPMH6TvGbzOYFG0cnCXqKK3D1cLpsJim+iXK73ane9wnGs4FlR4tsITdyXHzugWlw5BFYmjA= Received: from CY4PR1101MB2183.namprd11.prod.outlook.com (10.172.76.20) by CY4PR1101MB2165.namprd11.prod.outlook.com (10.174.54.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.19; Fri, 20 Sep 2019 16:22:05 +0000 Received: from CY4PR1101MB2183.namprd11.prod.outlook.com ([fe80::894e:7352:6cbd:bb25]) by CY4PR1101MB2183.namprd11.prod.outlook.com ([fe80::894e:7352:6cbd:bb25%11]) with mapi id 15.20.2284.009; Fri, 20 Sep 2019 16:22:05 +0000 From: Pavel Belous To: Ferruh Yigit CC: "dev@dpdk.org" , Igor Russkikh , Corey Melton , Pavel Belous , "stable@dpdk.org" Thread-Topic: [PATCH v2 2/3] net/atlantic: fix reported flow control mode Thread-Index: AQHVb8+K7Sd2PVLv1kSan+yxrhZjCA== Date: Fri, 20 Sep 2019 16:22:05 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1PR0401CA0063.eurprd04.prod.outlook.com (2603:10a6:3:19::31) To CY4PR1101MB2183.namprd11.prod.outlook.com (2603:10b6:910:18::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Pavel.Belous@aquantia.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [95.79.108.179] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f6c90a37-cf9e-4fea-e149-08d73de6acf6 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:CY4PR1101MB2165; x-ms-traffictypediagnostic: CY4PR1101MB2165: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:172; x-forefront-prvs: 0166B75B74 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(396003)(136003)(346002)(366004)(39850400004)(199004)(189003)(6506007)(386003)(76176011)(66446008)(66476007)(2616005)(102836004)(64756008)(2906002)(118296001)(316002)(50226002)(36756003)(186003)(8936002)(99286004)(26005)(6116002)(3846002)(8676002)(446003)(11346002)(256004)(52116002)(486006)(54906003)(44832011)(6916009)(476003)(81156014)(81166006)(66066001)(6486002)(25786009)(14454004)(66946007)(7736002)(5660300002)(6512007)(66556008)(86362001)(478600001)(6436002)(4326008)(71190400001)(305945005)(71200400001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1101MB2165; H:CY4PR1101MB2183.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: lCpKgEQDZeGkfIaVTfFAm9euk6pPc+GfMBZ4mSJ2BxJnBzW4INFG58FYqhADkYSfIz8ui8YDAgAlTYPfOEPr5pYcQss4448h1OfeKvhmoEgLgyZ6vx03fiYy3XKZzqT6aiBQ2rLjoAjD2/tjHXLcWj0jRKro5OGhbEsaw5p781jqWZZtqMKI+LXyf0imeF3wD32sEz/Lvwqlwu5tSBOhtc/jS0A7whfzOzg8vZCEx7HNFL9HRfOhAC5PzR856OMvnZUx6U3KXvyKbPKzBVTmbgQlzH67UUMA4Rh8dkW3CM90acubL0+Avou7WrYTlQtRthAxu7dHsk4DPmVoTJwaQuAv9AJ9rOOkQWJzMNUGLSBhQLbW78f1fOk+Qw5iFWBtjZBFGKx9bbQUoq5oALMYN83+bLArtr0KG8YzOgnMP2E= MIME-Version: 1.0 X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-Network-Message-Id: f6c90a37-cf9e-4fea-e149-08d73de6acf6 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2019 16:22:05.4635 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: T4RpmbgeaxVlsXbk3Kqb5Ll5w8wVsrw3a6Y0+BbguQ9S4g6SKX6H7Ca347vUkjbyZfb775tPHAiEZ0jXYiDgLw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2165 Subject: [dpdk-dev] [PATCH v2 2/3] net/atlantic: fix reported flow control mode 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" From: Pavel Belous Driver reports current flow control mode based on internal flow control settings. Currently this logic works incorrectly. Fixes: 921eb6b8ce31 ("net/atlantic: fix flow control by sync settings on Rx") Cc: stable@dpdk.org Signed-off-by: Pavel Belous Signed-off-by: Igor Russkikh --- drivers/net/atlantic/atl_ethdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index 178f7db..1b9d514 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -1535,11 +1535,11 @@ atl_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf) if (fc == AQ_NIC_FC_OFF) fc_conf->mode = RTE_FC_NONE; - else if (fc & (AQ_NIC_FC_RX | AQ_NIC_FC_TX)) + else if ((fc & AQ_NIC_FC_RX) && (fc & AQ_NIC_FC_TX)) fc_conf->mode = RTE_FC_FULL; else if (fc & AQ_NIC_FC_RX) fc_conf->mode = RTE_FC_RX_PAUSE; - else if (fc & AQ_NIC_FC_RX) + else if (fc & AQ_NIC_FC_TX) fc_conf->mode = RTE_FC_TX_PAUSE; return 0; From patchwork Fri Sep 20 16:22:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Belous X-Patchwork-Id: 59532 X-Patchwork-Delegate: ferruh.yigit@amd.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 79C8F1F534; Fri, 20 Sep 2019 18:22:14 +0200 (CEST) Received: from NAM05-CO1-obe.outbound.protection.outlook.com (mail-eopbgr720070.outbound.protection.outlook.com [40.107.72.70]) by dpdk.org (Postfix) with ESMTP id 85D8A1F524 for ; Fri, 20 Sep 2019 18:22:09 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NXpRc+/pbnLj7LoU2TChMcA10PGIdTbaXjVb4cDqNiWwpH/HyoIEht9WGH4D1McIPCMSLtb6aYi9mAHTBmFjS3Bjqj/8K9CkUShsjZWMVHh4WJNjSmVQ2yalxm7M9YKxsCPfmHdjf9APgHxEGtuU5CnM6SdvTihUeDvjMn46GLFHEpaJ/hgYrkuip52gBprxf67UNKcDleq/AXLhGKXvtYbK4Xq5fYj8DvQQqSTtN6JrTSN4dei/jEjXJvF9W3NYXCTUX41SZDopeclUXjE71+6Yi1vPDJivmgIjFvjTdqH6u7gpaV8OpYrWdQr91hYJy4vZbBjRFJhL5BPA9iuRGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jTMs1HGcHEgVfzDUF7ML1m+wTfxrpDArk1+TgjHgnvc=; b=PEUHSySDQn9Cy3wK98q+lMxvKPyoPvu3ZgQyrxGWmmAGKqqmrB+ohCMkc9bfHK541/vWlNIDLmVmdYU0YsHAGwlDYU3FRLc9XZI97ME0UDe3MnoQqoKOKw/SLFRJN2mlycaxwvoFrOTlMBNdQUzDn4BCoFX8CGQSuDf7Aa26INhu7uF9b6Wpr4ReXZuKU876MEL/PLt71FV0964JmVklXQDhMbf4eROW0wBSEMxasd4uRuHjSxwp+KxWUaoH3ihUPcofU99qTOT5sfNweYPHBKgEF16syjEM2ho6Vpq3SAWV9p/lNYy0ruiTfy5JeRSuosWTaL3lElBuTsYgdRLvfA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aquantia.com; dmarc=pass action=none header.from=aquantia.com; dkim=pass header.d=aquantia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector2-AQUANTIA1COM-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jTMs1HGcHEgVfzDUF7ML1m+wTfxrpDArk1+TgjHgnvc=; b=E02Gq6b4H2lDjNWtQ7yyYsiJIIYQGmDOilOk3QwFzVt4m96bNLgLFAGuuuK2Gp+560bXJ2jpAE2zwpX0EUZ9lL1bTFQGTVFjXhy79Us9Lb1/8fJizjcxx71utdXgm4RYhuEFJ5QHD8hWVDhaymPzNged1B8gQ7bnFD1d3hPv4ds= Received: from CY4PR1101MB2183.namprd11.prod.outlook.com (10.172.76.20) by CY4PR1101MB2165.namprd11.prod.outlook.com (10.174.54.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2284.19; Fri, 20 Sep 2019 16:22:08 +0000 Received: from CY4PR1101MB2183.namprd11.prod.outlook.com ([fe80::894e:7352:6cbd:bb25]) by CY4PR1101MB2183.namprd11.prod.outlook.com ([fe80::894e:7352:6cbd:bb25%11]) with mapi id 15.20.2284.009; Fri, 20 Sep 2019 16:22:08 +0000 From: Pavel Belous To: Ferruh Yigit CC: "dev@dpdk.org" , Igor Russkikh , Corey Melton , Pavel Belous Thread-Topic: [PATCH v2 3/3] net/atlantic: add FW mailbox guard mutex Thread-Index: AQHVb8+MtRmz9gSmrUCp52NxIvuKCQ== Date: Fri, 20 Sep 2019 16:22:07 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: HE1PR0401CA0063.eurprd04.prod.outlook.com (2603:10a6:3:19::31) To CY4PR1101MB2183.namprd11.prod.outlook.com (2603:10b6:910:18::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Pavel.Belous@aquantia.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.7.4 x-originating-ip: [95.79.108.179] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 68824f1b-aaf8-4330-aba0-08d73de6ae8b x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:CY4PR1101MB2165; x-ms-traffictypediagnostic: CY4PR1101MB2165: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:238; x-forefront-prvs: 0166B75B74 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(396003)(136003)(346002)(366004)(39850400004)(199004)(189003)(6506007)(386003)(76176011)(66446008)(66476007)(2616005)(102836004)(64756008)(2906002)(118296001)(316002)(50226002)(36756003)(186003)(15650500001)(8936002)(99286004)(26005)(6116002)(3846002)(8676002)(446003)(11346002)(256004)(52116002)(14444005)(486006)(54906003)(44832011)(6916009)(476003)(81156014)(81166006)(66066001)(6486002)(107886003)(25786009)(14454004)(66946007)(7736002)(5660300002)(6512007)(66556008)(86362001)(478600001)(6436002)(4326008)(71190400001)(305945005)(71200400001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR1101MB2165; H:CY4PR1101MB2183.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: GC0ngMrBJB4ptMPnAlXeoh85wp8XP0O4isSUaR8MnmkSUeGsDyQ6MJfXHukIAy4UlfYjC6BAE3zRUJ0WnCem8u6ggqEHED7p+3DYnG22Swod/SpQSFKqUJHKi5o8vAr+w68L+hUZd+Su/luxvZqgRGM102Nmt9848YnXYa4B/Ppx+1Ttav8/xE5AbDfURn8GQsa90xuGte2lcLnYghlXdK3ihMv4HDUpZ5JXcND6pO3s+fjR7oQk1cGdcQvpSwd9zaUJO1ElVRo9L2kMdOZqZc//UwbBEtFlMNfYLkpDeuir6aVZzal9hBVIIlnkyQ58ZDsef4uvu2CgbA4oqUMqJVYPC1SE7TncBVtuqs1u2lu8y/2ROH/hNrTxwR/Z+tRH2dw7e0arBYtiWKbaNsSHhj7HyiB3nbqIAbtZes6kPsM= MIME-Version: 1.0 X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68824f1b-aaf8-4330-aba0-08d73de6ae8b X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2019 16:22:08.0054 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: d43dc2NyCbiwJCtLlepwe8JzrB+Mj//hMg75voCnI5UQGj8j+YYpiUfVYQcIay8yI39dkMr0/Mga9tVnuaxuPA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1101MB2165 Subject: [dpdk-dev] [PATCH v2 3/3] net/atlantic: add FW mailbox guard mutex 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" From: Pavel Belous Driver uses the Firmware mailbox to read statistics and configure some features. This patch introduces a mutex to provide consistent access to the FW mailbox to prevent potential data corruption. Fixes: 86d36773bd42 ("net/atlantic: implement firmware operations") Signed-off-by: Pavel Belous Signed-off-by: Igor Russkikh --- drivers/net/atlantic/atl_ethdev.c | 4 ++ drivers/net/atlantic/atl_types.h | 3 + drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c | 82 ++++++++++++++++++------- 3 files changed, 68 insertions(+), 21 deletions(-) diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c index 1b9d514..1331b5f 100644 --- a/drivers/net/atlantic/atl_ethdev.c +++ b/drivers/net/atlantic/atl_ethdev.c @@ -410,6 +410,8 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev) hw->aq_nic_cfg = &adapter->hw_cfg; + pthread_mutex_init(&hw->mbox_mutex, NULL); + /* disable interrupt */ atl_disable_intr(hw); @@ -474,6 +476,8 @@ eth_atl_dev_uninit(struct rte_eth_dev *eth_dev) rte_free(eth_dev->data->mac_addrs); eth_dev->data->mac_addrs = NULL; + pthread_mutex_destroy(&hw->mbox_mutex); + return 0; } diff --git a/drivers/net/atlantic/atl_types.h b/drivers/net/atlantic/atl_types.h index 19aaf37..c200a1f 100644 --- a/drivers/net/atlantic/atl_types.h +++ b/drivers/net/atlantic/atl_types.h @@ -10,6 +10,7 @@ #include #include #include +#include typedef uint8_t u8; typedef int8_t s8; @@ -137,6 +138,8 @@ struct aq_hw_s { u32 rpc_addr; u32 rpc_tid; struct hw_aq_atl_utils_fw_rpc rpc; + + pthread_mutex_t mbox_mutex; }; struct aq_fw_ops { diff --git a/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c b/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c index 70d6e14..55dc728 100644 --- a/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c +++ b/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c @@ -6,6 +6,7 @@ */ #include +#include #include "../atl_hw_regs.h" #include "../atl_types.h" @@ -217,13 +218,15 @@ int aq_fw2x_get_mac_permanent(struct aq_hw_s *self, u8 *mac) u32 mac_addr[2] = { 0 }; u32 efuse_addr = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_EFUSE_ADDR); + pthread_mutex_lock(&self->mbox_mutex); + if (efuse_addr != 0) { err = hw_atl_utils_fw_downld_dwords(self, efuse_addr + (40U * 4U), mac_addr, ARRAY_SIZE(mac_addr)); if (err) - return err; + goto exit; mac_addr[0] = rte_constant_bswap32(mac_addr[0]); mac_addr[1] = rte_constant_bswap32(mac_addr[1]); } @@ -252,6 +255,10 @@ int aq_fw2x_get_mac_permanent(struct aq_hw_s *self, u8 *mac) h >>= 8; mac[0] = (u8)(0xFFU & h); } + +exit: + pthread_mutex_unlock(&self->mbox_mutex); + return err; } @@ -261,6 +268,9 @@ static int aq_fw2x_update_stats(struct aq_hw_s *self) u32 mpi_opts = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL2_ADDR); u32 orig_stats_val = mpi_opts & BIT(CAPS_HI_STATISTICS); + + pthread_mutex_lock(&self->mbox_mutex); + /* Toggle statistics bit for FW to update */ mpi_opts = mpi_opts ^ BIT(CAPS_HI_STATISTICS); aq_hw_write_reg(self, HW_ATL_FW2X_MPI_CONTROL2_ADDR, mpi_opts); @@ -271,9 +281,15 @@ static int aq_fw2x_update_stats(struct aq_hw_s *self) BIT(CAPS_HI_STATISTICS)), 1U, 10000U); if (err) - return err; + goto exit; + + err = hw_atl_utils_update_stats(self); + +exit: + pthread_mutex_unlock(&self->mbox_mutex); + + return err; - return hw_atl_utils_update_stats(self); } static int aq_fw2x_get_temp(struct aq_hw_s *self, int *temp) @@ -283,6 +299,8 @@ static int aq_fw2x_get_temp(struct aq_hw_s *self, int *temp) u32 temp_val = mpi_opts & BIT(CAPS_HI_TEMPERATURE); u32 temp_res; + pthread_mutex_lock(&self->mbox_mutex); + /* Toggle statistics bit for FW to 0x36C.18 (CAPS_HI_TEMPERATURE) */ mpi_opts = mpi_opts ^ BIT(CAPS_HI_TEMPERATURE); aq_hw_write_reg(self, HW_ATL_FW2X_MPI_CONTROL2_ADDR, mpi_opts); @@ -298,6 +316,9 @@ static int aq_fw2x_get_temp(struct aq_hw_s *self, int *temp) &temp_res, sizeof(temp_res) / sizeof(u32)); + + pthread_mutex_unlock(&self->mbox_mutex); + if (err) return err; @@ -515,6 +536,8 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, int dev_addr, if ((self->caps_lo & BIT(CAPS_LO_SMBUS_READ)) == 0) return -EOPNOTSUPP; + pthread_mutex_lock(&self->mbox_mutex); + request.msg_id = 0; request.device_id = dev_addr; request.address = offset; @@ -526,7 +549,7 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, int dev_addr, sizeof(request) / sizeof(u32)); if (err < 0) - return err; + goto exit; /* Toggle 0x368.CAPS_LO_SMBUS_READ bit */ mpi_opts = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR); @@ -541,17 +564,19 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, int dev_addr, 10U, 10000U); if (err < 0) - return err; + goto exit; err = hw_atl_utils_fw_downld_dwords(self, self->rpc_addr + sizeof(u32), &result, sizeof(result) / sizeof(u32)); if (err < 0) - return err; + goto exit; - if (result) - return -EIO; + if (result) { + err = -EIO; + goto exit; + } if (num_dwords) { err = hw_atl_utils_fw_downld_dwords(self, @@ -560,7 +585,7 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, int dev_addr, num_dwords); if (err < 0) - return err; + goto exit; } if (bytes_remains) { @@ -573,13 +598,16 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, int dev_addr, 1); if (err < 0) - return err; + goto exit; rte_memcpy((u8 *)data + len - bytes_remains, &val, bytes_remains); } - return 0; +exit: + pthread_mutex_unlock(&self->mbox_mutex); + + return err; } @@ -598,13 +626,15 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, int dev_addr, request.address = offset; request.length = len; + pthread_mutex_lock(&self->mbox_mutex); + /* Write SMBUS request to cfg memory */ err = hw_atl_utils_fw_upload_dwords(self, self->rpc_addr, (u32 *)(void *)&request, sizeof(request) / sizeof(u32)); if (err < 0) - return err; + goto exit; /* Write SMBUS data to cfg memory */ u32 num_dwords = len / sizeof(u32); @@ -617,7 +647,7 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, int dev_addr, num_dwords); if (err < 0) - return err; + goto exit; } if (bytes_remains) { @@ -633,7 +663,7 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, int dev_addr, 1); if (err < 0) - return err; + goto exit; } /* Toggle 0x368.CAPS_LO_SMBUS_WRITE bit */ @@ -648,7 +678,7 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, int dev_addr, 10U, 10000U); if (err < 0) - return err; + goto exit; /* Read status of write operation */ err = hw_atl_utils_fw_downld_dwords(self, self->rpc_addr + sizeof(u32), @@ -656,12 +686,17 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, int dev_addr, sizeof(result) / sizeof(u32)); if (err < 0) - return err; + goto exit; - if (result) - return -EIO; + if (result) { + err = -EIO; + goto exit; + } - return 0; +exit: + pthread_mutex_unlock(&self->mbox_mutex); + + return err; } static int aq_fw2x_send_macsec_request(struct aq_hw_s *self, @@ -677,13 +712,15 @@ static int aq_fw2x_send_macsec_request(struct aq_hw_s *self, if ((self->caps_lo & BIT(CAPS_LO_MACSEC)) == 0) return -EOPNOTSUPP; + pthread_mutex_lock(&self->mbox_mutex); + /* Write macsec request to cfg memory */ err = hw_atl_utils_fw_upload_dwords(self, self->rpc_addr, (u32 *)(void *)req, RTE_ALIGN(sizeof(*req) / sizeof(u32), sizeof(u32))); if (err < 0) - return err; + goto exit; /* Toggle 0x368.CAPS_LO_MACSEC bit */ mpi_opts = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR); @@ -697,13 +734,16 @@ static int aq_fw2x_send_macsec_request(struct aq_hw_s *self, 1000U, 10000U); if (err < 0) - return err; + goto exit; /* Read status of write operation */ err = hw_atl_utils_fw_downld_dwords(self, self->rpc_addr + sizeof(u32), (u32 *)(void *)response, RTE_ALIGN(sizeof(*response) / sizeof(u32), sizeof(u32))); +exit: + pthread_mutex_unlock(&self->mbox_mutex); + return err; }