From patchwork Tue Mar 27 15:07:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Vadim Lomovtsev X-Patchwork-Id: 891661 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=caviumnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="fn29NS8F"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409ZBh6YYJz9s0b for ; Wed, 28 Mar 2018 02:07:56 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752663AbeC0PHz (ORCPT ); Tue, 27 Mar 2018 11:07:55 -0400 Received: from mail-dm3nam03on0055.outbound.protection.outlook.com ([104.47.41.55]:5369 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752490AbeC0PHv (ORCPT ); Tue, 27 Mar 2018 11:07:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=0+Xu3/TV3fgPigasUjND3O6NTvy/Jhruv7JyiNzLaFo=; b=fn29NS8FFzcgoBRO5cbpM5Od7N9/NbcEjX3ZFbFuWL2gOttIbKwFUntZRjUkF0nyoIE/WaCExX3w7ZlzS7YM4Zk7uFhJhRzIzXlYw2/wqW82Ai/v3FIEq/UarSsjU/euTDEygiA0Q4yUX/blxAHFVMLGEOyQzbuuNd6HFjqdJmI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Received: from localhost.localdomain.com (50.233.148.156) by CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 15:07:47 +0000 From: Vadim Lomovtsev To: sgoutham@cavium.com, sunil.kovvuri@gmail.com, robert.richter@kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dnelson@redhat.com, Vadim Lomovtsev Subject: [PATCH 1/7] net: thunderx: move filter register related macro into proper place Date: Tue, 27 Mar 2018 08:07:30 -0700 Message-Id: <20180327150736.10718-2-Vadim.Lomovtsev@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> References: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: DM5PR20CA0003.namprd20.prod.outlook.com (2603:10b6:3:93::13) To CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fde7692e-b7ce-491c-4e21-08d593f48074 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 3:sq/dx8ovucY6nl8s5Fcwhqu3nLQUywIClssL0v5fc9QM6YWK+LYQnTieSC86c4At6kFCLasjwlaF7qkVALyQ+kKw7frqVIL8skEOSHzYsHTq66URaIZOIiriI1iekwCyxBlgS2Iau98Chp1z9hVZAHAqHYVbD5Xdv4+qnqrqqo/HnPo9meI2mwbxvPCVDZXBiyKaswTtnftMuGI6LKbb2RSO19SCGfmS0VCewCETRvCUWswcLG6IYA8huAWyWBLW; 25:6wuFrhVkvqfcXAAqznD528wkHVoHpeB/Wg4TUTWu6n7ug5Cnxe6OuagIzCLBZIsJO2uh+h8o/87jIrnr96O7Vx2CfkeXawTG8B8ydt3Ato0MY0ypLDLJ402fXLgHBdsMbGO5T432cAo8gJhgcLe2gftleVNJN3+Yl2wak8wPb2xTZKI7Xnp5wODtNFcfUbmK2EeYsve7P3zkZc4k1yL3CizNSMI8gFfPiqgUTpLz7/KUxkBYY9oxqa9IwAD7Ikw/bR4q1a7avRSFBzwHH2oSjXF/2OyJpkGezV1Loaj/tzHxTuzaMXROkEv0k2TTjd70zXV0dDz2rRVSQW9wDT2GgQ==; 31:IpsZEYyYtI1I3Vc8YjPbnv2d5pD1QAUmpiGg91DACBj1LtXb3Hfhd2k7sU+39Cscw3KcY7wFru2z51/qu0ulQrnCtyI0oQDOUUZ46t0SItf0uAzCa+absvu2hp4XreSw1EJRkuZJOJOeXSk6Cgu8E3YRurJmcE7YzHK+G/xcS0/ChXQ2F8k1dPt1fwWZaiF5RiXlLlGrGw1Zl46aoVIO4oycl2ewirwKcbDjpjspJeM= X-MS-TrafficTypeDiagnostic: CY4PR07MB2998: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 20:IVbSXQXHTN0DZu+CeIKvBlaBNc2hz7XRDReYFSx0Snq9Vy5ub5M4a/hGq5MVuMJH3+2V6XETbPXxAsCz19RZxnJRShGptoDsOcq/MjbXJ38Y1y3UoTsgFO1gFW6dnycXh3ruYHOvXHmA3/ByMbDGpShsSWYjbN22/SwTnPn17OnV6H0AdG0i7fIVxpsQZ9SwJHEeV+O7RjdMTZx2WKgnhU8xXSUiKY4OdTFoGQf2DQPbBox68Vc6R/xeYosIdIej6qd0Qw3XXMnzEXMWXY4sp0ib4Zd1ZY9DB5jvD/rRZmX/7WYb0PzxHH5ubIjw6M2lL1Jjkx/BkGXfTsLrwrzshIuKllb84Q9A5+fbkcDHIBgWQIEqcEvHxEVwDr/xgImkDzgH4vFC/HaFO+PaoNUYDXoT97K9HvA2mOZQ/YVoJz7jMg1GnaRgE6KXorksHmEdH6ApKfKDgahnjLLrlWhVDwDksV6v9YEqfSGxlNz7KvYUghkXVF9vYhB45VutAKym6A71W7DJhkrTyURk8j+aNgR6dJrG8qAIchS5xGBLocknxrPhnATYJGE7F9AlTjjX3UFFgbJAFshUqSS1wfzbqYkru6gk9G/De7JWvTOxGGU=; 4:hml9eA/9d2ZBEhkC9MhDuAJT63B4B4RWTOEA9tX/MhF5mQDS0SmkT33n4qqtwsMOnPqaYqS018iWx4viveXQthnyC9i8M8uwS48kYpvNByY39UJYXeXwwY4gBInd19P9eUeFDHC6mQtGiABhseQomVzz2TSyxx523VJ86TOf48Nh6/J/aBuZBoGcBBY01alNi2OPcEJwGS4wfvI+HwWL8V8OyR7LWP4xPCFvczUQGUzULbuS8dQhRVXdeAVotMa/ePjb4gkhmR3aiGm7zPcnrw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB2998; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2998; X-Forefront-PRVS: 0624A2429E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(346002)(366004)(39860400002)(396003)(39380400002)(376002)(189003)(199004)(446003)(2616005)(6116002)(478600001)(1076002)(107886003)(3846002)(6666003)(956004)(97736004)(39060400002)(50466002)(7736002)(53936002)(16526019)(66066001)(47776003)(26005)(486005)(486005)(6486002)(6512007)(316002)(305945005)(11346002)(105586002)(42882007)(6506007)(386003)(68736007)(59450400001)(69596002)(106356001)(72206003)(25786009)(2906002)(52116002)(53416004)(76176011)(81166006)(8676002)(36756003)(476003)(2870700001)(50226002)(4326008)(5660300001)(81156014)(23676004)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2998; H:localhost.localdomain.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BCY4PR07MB2998=3B23=3AkCbV?= =?utf-8?q?PSbw+alZHkwqMQ73uCbQ2+icpHiK74DJSHyj0pLBt3lMS4XTZdA6cObA?= =?utf-8?q?skmWfoKvqxJdkcFY3aBBm9+n97E4qniyJUMHE+pTD925KCMnJNAU+npR?= =?utf-8?q?gIsIfULLCUVp4Qlq5FyseH+N8671799TDsanTd36pZeu7Pd29CG3qO0n?= =?utf-8?q?muMXs95mLjJHh0KlQK1SD3s1T6Qlv6yn7E1cv5doLARm/UzhHhDE+pbN?= =?utf-8?q?x3KvMf2b7fnUSYDkohKGtYiKdVqJ2DMfNktQLrSEGgjIPLhpenIBFr0b?= =?utf-8?q?dGpxDh0c/y0bd9A6rg901iFQGcY45mzwI4KBN6YW90/V75IgH5CRfRi/?= =?utf-8?q?RtgCDBqMKvE11gKeAmKqDE+eCj+FUAGyMNRgEef3HaoHGi4FzCIKOPXs?= =?utf-8?q?ffhKkWCx4T3oBjmxN99rb88JtWS5B1fYCcos2PKGEgPYuyyy6XT7Zmox?= =?utf-8?q?nOhzghG8s6C4qka3ZYEAiq5ZscVh6bVl5iV/rfpP3KGQQCJa5YSCSheY?= =?utf-8?q?N14gp96uMFgkAPivPXPB3q9mil7aqcb+O0q5sZKrCzzSXVcjwLWS1/vW?= =?utf-8?q?kIZoRshqykQKhJV5YTcjfDRLddt6CF3G6N/opay/EazpxEriFCxbhKA6?= =?utf-8?q?iV11igKljagAnnqi0Mq5yRL0KdWqtRw9v7nAjpLcxgIBpmWCfV8BOM5h?= =?utf-8?q?aNAVZL+DirAGLKj/SBtQE78ZSLjbYSqqScu8MHXzMn5nKNCYwqeNVgn+?= =?utf-8?q?7jm4Tln78tWE5Q1dWmruMdZ2HMqmhU0SC0R/42X/oerRDoE5isP7cStV?= =?utf-8?q?132e+CBoKfq1wcvk0AThdEZ8f3Lb5AYZkcFpAtI24eANaZqy38zRfxmW?= =?utf-8?q?YqtV5MEMBAJ/Ogqb5dzSt7LTuFhiQx2vWbCEnPhQuEGH88Z+6UCaM3Vr?= =?utf-8?q?fGluKqw2/ItKPdcMp6BDME2NagifsynClSCneKeqKJZwPC0/jN65iRvm?= =?utf-8?q?N0adKn6dZAgiboFrTtvqt0XUyGUhelNnqKefmrWI2cDlB4NphL3VvJPG?= =?utf-8?q?bnJ+AzHefIp6dz0MzaKq3q7xQFT9pLQmX8gtjx4oOpYRUI0oHV7S62Ai?= =?utf-8?q?kEA989Hw/gRuw1WS7UrYfdvBa7es2oQkE5lSURivyQpF2p4cX6MZ12pG?= =?utf-8?q?cuTa//tOgLXW22x+uZ5gPmj+MpSA/bxSKFLWwzfOm3yWYHGPrKLZfi2K?= =?utf-8?q?dE2j9XgaXQtbkg4muAhsPzmh7cOuM1xbKNIzzYetu1gifMBF8V/YhkSZ?= =?utf-8?q?n+kwucef3r3r23NggW8kmzPtJQh+RRfsGEmSVzDYJaBMwfPYoFTeClFD?= =?utf-8?q?Oe8wIHO5yuM1i2kkeHC1zTz3YKyxc40=3D?= X-Microsoft-Antispam-Message-Info: flw9wQO39G8CImUpPbfozVNzizUH56GmwjPWc1pfa1jWX5xMFKu2/w5OJhqtTuLignNwKQbHp2wbQbzBXsDf8fNxXBcpMQ6uYF9BV1XgvOc3GwhxSH4vjEFG3w00TWWxfAF9kHRAXeAinrNfGxWH7JvWjOxOcPpLwlNds7sup7goLYTq9jg+rdUc9cbV5+14 X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 6:oOrSZGoIlNEEuuXoNQuOO+qjmJw/ygxK6VEYA6aYs3BkMnHtV8epbultLhdXiIhf4ZJ4ZlBecVTr5IDwgJ9wwpDWbrq/ikx4kMPEj0/H08g/9yZQY8uAucNxZfuVD/MQhPjCLJQ1wf+NpxMFECeAfiS8k4qRoU4Y2uKF085oDz6/8PzuYFJ6gWkljVRIe1/PLhD662qyd8Y/lA9NF587cisWDAOZMhH4LWlrbBV7a0Vyopac1au85SPQ8358vpu3JvqyjEn7zO23dTaEVZK3KXoJGQ0pYPzjzZf4pmRKK7qX9RZC0HYG6P+0jY7ffMF2LkiuzVm1zuDkvWDnHCWSTiw01bYTimm8APih/cXA2Qs1DKaXNRNO9Q3/Vs4dx+ZVBpZqVYB7crIc45mjtHSl9ne9aP1pIg7Mb3K7tZiKG02dgD05YQSaM2LdKghPGewl6p28OWM+PKYdp210XWRBzA==; 5:0LFy0xKafEEPH+ayMSmEup2YcAasEbAvc5u3c/akuXxePl4/sv4PkraPwHxxYDr7znu6kbuzuAS8hNqlU2UtARHYRaO1lqPUyXRokxMY3+IbB2pdzgnkNlKDao9TwgR3qp8G6Z3sFlkEPa2VqGCfujWpweR7j+LQvEzFj6r+kHk=; 24:dzaSuErekMjYUWNBXVWZJvWSucsnx8khAt1W50MZDoeJ0Y4T8sf9k9HbIOCHJt465FqWdiAQwqa5btsFLYSWn6IdOucCENKmIIl8ej2NhTc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 7:2xPGzLiCReqvOMCPef3yEDO7GGQ0zIuR1+XtCYN12+/tx5c0NEKGzeHm0TU6T2gjHtw97i2T4eEQDdWO8nOhiPcR31KsWl/gHzjjA27FpafBKt0Fp3OJ43oo6rJsNPF9uat15HslWIMocDLM8Rb8YBQTQVkPXbY422kfymRYp8KHXKXHaeEtvHAKBQHcBWE1MietcfJYBryw3i21XtPFPLSOCgnHBrS/gZW844FC0SJXZ+CDPRO5Somls040y4j8 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2018 15:07:47.2952 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fde7692e-b7ce-491c-4e21-08d593f48074 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2998 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Lomovtsev The ThunderX NIC has set of registers which allows to configure filter policy for ingress packets. There are three possible regimes of filtering multicasts, broadcasts and unicasts: accept all, reject all and accept filter allowed only. Current implementation has enum with all of them and two generic macro for enabling filtering et all (CAM_ACCEPT) and enabling/disabling broadcast packets, which also should be corrected in order to represent register bits properly. All these values are private for driver and there is no need to ‘publish’ them via header file. This commit is to move filtering register manipulation values from header file into source with explicit assignment of exact register values to them to be used while register configuring. Signed-off-by: Vadim Lomovtsev --- drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 13 +++++++++++++ drivers/net/ethernet/cavium/thunder/thunder_bgx.h | 11 ----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c index 91d34ea40e2c..0dd211605eb1 100644 --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c @@ -24,6 +24,19 @@ #define DRV_NAME "thunder_bgx" #define DRV_VERSION "1.0" +/* RX_DMAC_CTL configuration */ +enum MCAST_MODE { + MCAST_MODE_REJECT = 0x0, + MCAST_MODE_ACCEPT = 0x1, + MCAST_MODE_CAM_FILTER = 0x2, + RSVD = 0x3 +}; + +#define BCAST_ACCEPT BIT(0) +#define CAM_ACCEPT BIT(3) +#define MCAST_MODE_MASK 0x3 +#define BGX_MCAST_MODE(x) (x << 1) + struct lmac { struct bgx *bgx; int dmac; diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.h b/drivers/net/ethernet/cavium/thunder/thunder_bgx.h index 5a7567d31138..52439da62c97 100644 --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.h +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.h @@ -205,17 +205,6 @@ #define LMAC_INTR_LINK_UP BIT(0) #define LMAC_INTR_LINK_DOWN BIT(1) -/* RX_DMAC_CTL configuration*/ -enum MCAST_MODE { - MCAST_MODE_REJECT, - MCAST_MODE_ACCEPT, - MCAST_MODE_CAM_FILTER, - RSVD -}; - -#define BCAST_ACCEPT 1 -#define CAM_ACCEPT 1 - void octeon_mdiobus_force_mod_depencency(void); void bgx_lmac_rx_tx_enable(int node, int bgx_idx, int lmacid, bool enable); void bgx_add_dmac_addr(u64 dmac, int node, int bgx_idx, int lmac); From patchwork Tue Mar 27 15:07:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vadim Lomovtsev X-Patchwork-Id: 891672 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=caviumnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="CX5sq+G8"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409ZGq2bBNz9s0b for ; Wed, 28 Mar 2018 02:11:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752721AbeC0PLR (ORCPT ); Tue, 27 Mar 2018 11:11:17 -0400 Received: from mail-dm3nam03on0055.outbound.protection.outlook.com ([104.47.41.55]:5369 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752507AbeC0PHw (ORCPT ); Tue, 27 Mar 2018 11:07:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=IXwb2jPWIjbqzWxoNS1o4Ygr8u2Ek8jyVJs9QIhowHs=; b=CX5sq+G8rumobtobZ0OPshMmwELV1OyLjeCxOlsgGpokAJNSUSJ3zMcTYYnKo/MKmpo6Yj9syoS00wjku3N0gNYf0ArMWNmd3K/GqaARHigNzApEYe+BiHDAj4xl7PC9zs74DMVjcSbMvhYJp4W7sw/gsWWXwpwkC7tjF+MTMmw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Received: from localhost.localdomain.com (50.233.148.156) by CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 15:07:48 +0000 From: Vadim Lomovtsev To: sgoutham@cavium.com, sunil.kovvuri@gmail.com, robert.richter@kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dnelson@redhat.com, Vadim Lomovtsev Subject: [PATCH 2/7] net: thunderx: add MAC address filter tracking for LMAC Date: Tue, 27 Mar 2018 08:07:31 -0700 Message-Id: <20180327150736.10718-3-Vadim.Lomovtsev@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> References: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: DM5PR20CA0003.namprd20.prod.outlook.com (2603:10b6:3:93::13) To CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8a155892-517c-413b-f91e-08d593f48100 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 3:U01LDnJrRZkX+rAYZvGwsfltbGDda93NCaeGaNnVVCdfQXoWh/BO5lg1B3v7YhU7XJaLmIQQwrmuXhyhn2cGvvGIyjgLl6oMPSLkHLoI+PS+FlHtirDY9cQz5vFriHa7a2V2dr0/w4h9d5DieOTGDs4dPNIwix3wVYatPgQMeYu9fpDhEPju7xn7MtOK8K2CdJaAeYQ9EEk8B/+zYKV2s/jRrLS5290YYTyfLG6GffqyzMBGAEs4FGWOVv50Q8EP; 25:7icUU/PbnLyU0lcAeh8aH1D8tjaymg95GNQ0g8Aj3xsDeoOROg5E7mQs+z0I46z7/LrP/XBfk5tcbAjkSfDfuW1uQlPIXwyP75z+2oakM2CaVpl1cQw/ROraAgFM6sdU7KVgjv0qc6pv31sHCM63l3C+BmMdMUGkrM7PovhgSgA+G4wfTUVRGaIGuGacuDy/c0OTTJYe9zKk8sCX+FG3ujf1bJfmEdMzDhBQUx4LAlKapUusT+blJnCCLR8GMMsn84ZWRQn4m3lLAv8Q3ymJg6/OFHHRl1234S0Y34d/04Z16RLFWjOb+fDhAgDlhScFe4v4MhX1rTMsuzO7Qnt3ig==; 31:8WOpstxp7hP5BN/HMywxDdif0JrX+3Ao3/OsYxIvokqWGuc44lHrSlOPm1TCBS/1w0v6deVa3FJBdtvkWy7nqIO+kXibfBe8zvBKAuQBKHTc8QBpH7uQ0Aua3JiCcbNCbFqO4UJQVaP9eVQFbwkguAoM7dyomh3ilNlaNUxiEIInkOBNFG6HlwDX7Wr7IuJVwoD7cbZuugex98rkYIiYoCW/JijcFh12MHXyu+XI15Q= X-MS-TrafficTypeDiagnostic: CY4PR07MB2998: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 20:XEBXYwfI6Qr3V7oLGmN1LGzJYhl2x/lDakxYJJs6FBpkV80IiwcA3N8wEcgWC7iibX0DC8VZVKQ1opSeXK3v9LeO68iJW4khD2rCgj1galOeZWB/RIYcDI/czjKV5AQn8S1a7Kb3XYtqkco0Tpf+w+UZv4iLJhtxj5/GTV/BIImC72TgG2emVr0S85Zh5/vOSHg1wToGph2ixAjmk77sowKI9pQuFefkSAhaI51rI9gDk9qF2Jeot6av+uM3wldjG3uI3boJecOu296yHSH9rCSGDMKCpe4mRqDQc2LmtdSaVtaZ/e7ivZxIftHhW6ERaWUdKx6zqn3uwH0AfBMs1MafFcX2N8AeG4BdgEBz8f788SfuPYyUcgO7QSmFyH/pC3mX0NqBAmENqWvy+uH7BLE8ahwGSEVpE3BwWw3xm29+vvM70DEF3nTOP2IvCB70Mr43uEuPmmpl6g3igTIHgsNrwhk0MoMSbI7xxYMXKNSa2gcTFohKDF1XEmuTuojMu2hQc0WWxtpRhAcTzBxzSETPY3MxWzeW+ZvWGbFPM0KzUdPmX4T5ORJ4l3/Ylisx+3Z8gLx9aY4SX13hIAqsI8A6KXF742iMe/NYpzKAmgE=; 4:H3JMaalVbNXgVbVOur2vcvYWLk0AIwG3yO3n7BR8jGpT9GFPudv8Zcyn5ngeUmcyLDi/URl9DZGsiGwFSMr7NjZh+UsIosge5gGCWDGuoHdJeXWdp9/Lv/hITQCn4okeVpOLlChUDYU/h5OZB357ZcYRPO1TCnzLfJhxgKpKgrlbKd65BDRjV8cxSYyThlgBaGdVqH38IuO9pjhWi31IvZEBer8FNZvKLSV+w8oyJZ/B0e35KoGxtq8xbm6fpaRKXGz7P9O2zhalYa+of/ZppQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB2998; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2998; X-Forefront-PRVS: 0624A2429E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(6069001)(346002)(366004)(39860400002)(396003)(39380400002)(376002)(189003)(199004)(446003)(2616005)(6116002)(478600001)(1076002)(107886003)(3846002)(6666003)(956004)(97736004)(39060400002)(50466002)(7736002)(53936002)(16526019)(66066001)(47776003)(26005)(48376002)(486005)(486005)(6486002)(6512007)(316002)(305945005)(11346002)(16586007)(105586002)(42882007)(6506007)(575784001)(386003)(68736007)(59450400001)(69596002)(106356001)(72206003)(25786009)(2906002)(52116002)(53416004)(76176011)(81166006)(51416003)(8676002)(36756003)(476003)(50226002)(4326008)(5660300001)(81156014)(8936002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2998; H:localhost.localdomain.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 23:BtCXLYpanPrBYoLpWdF1fAB7byFlJLwv3HzTqyGbk0AdhBLS/4Fu/5lB8JKrSSP8Kh0IrkVqyNW3fepzG13WP0itSE19pMNcTGZ+bInvGM26l3JOvDIYI9p87V7bRrwrdarWmoqmNxcZdzh7iBRPC2Arj5iXX528X0bqQq/0HcfQMmAC+pW0f0Ui69mokENHurtz0Ba0VJHSFRhuH+YTwAld5kcU+qBQmdksmH/As1NA6JmNcgkl7m8YsSle25WHnGngdwwavXveG583pCpmM19ktMid1d5ypoY9gTRPZMBLrqTCJ5EM0W/l08QuwCopx9YgAHSRMHFFhugzH7eeD4k0neE83g4u6onlxjVLyt0vIS//EMPNyW6uF1GLqjbAfDt+UjR9xEaKbTP9YGEDzMIX9HVbN1drhNsNUuxNJbIWP04r76Ju3YvYw45Mc1RUR6FJFzWELDmp/GjkfIeuwnRHVZUEOkWBwnfC23ibbiEGMj16P2DWpJ5ellLCQmgidcgSWexFJR/EK8VqJvxOkKlp5XOpsJGgIAKs6YjmOyuZgaVX8Qp8l2KgUsy+uwkUJRM5wvqxsniuYvswvEJTz906eWKyb6B+sxA+s0cTZkGd9tDfEvesL6l0GxV45KonBNqLjK+gqpjhzje9AYUub4iZm5+BY8AIqzsf+gYG+/xHGRpVKsNGHJEdVPDihvpvmq6yd2B1tQsO/vBylMs/5VNj8fX/tShttrjc+ZpsSLD/mTcbBqqB0e9xh5YEaoo7YPfn2pvY8OviYDDTW1VhDV//bChBp/cO3oeAMYo1CuR/ja8IM5Cym+SXlTS+dOoAz7VgEFe1sUTyxAKd40zKqaho0qgmYNBEng2HNzdsJ5bT9j/DzdV6ZodaH5GhW5c6jQQJO8NEj2oOFvuJHLVzbLCAvyLHvfMZMtSTP9W68B2r7m6B1milK2aH+HI1N3Cd12PbBNj/OCr8pgnmnjKJtv+G3FIjzLTCi5RGY1tsKmXeK5Xo23jeT3Tt0nmI1IrUAXMG9X9fX5MGOruApK/jt1q0gjhariCi6CJI9MoUY0fCHbazkSA5/m1w987E4BflKttFrVA+KaeqppKJiGwmxofm+h4SGlXJ6qA7udO5Oh5XhnCVpM9DEISg9CtjkWQ51p/7cWS/AAb0a7CYDu0611BD/Sg2+nmHUR2jWtKICk+k9j4pfPW5Ru1qL29dEXjzuSSxy/deiwKfmXofo3bMYZ2U3JyuLnFnYhyfJIegwpC4eGoKoAPxmKSkf/uFEN9Eg15k+CLs3Q9rofjqpAz7iikrmOPWxZBEIIsdIpG320Z7pWBwkykQhIFG8xyKO+g2Z88D+wugN7jwkFbyRBVsVkU0PBlu+5uoEBf09bMN/eAuEPTOO/C/x2biQdNeOVt2Ut1/XZSRnn1lY8MehKnlHFyvmyyPF5ZHftWFd5cbFRINaU8v2OkibwrA8dYwzXcD X-Microsoft-Antispam-Message-Info: 4mjvrXMYCB4Tob01T7jMg0IvEkxEvFuk8cYe6mq6ui9xtr4KfYmrNvCujxm+f02UySKcLkQYnmMfu4/Wv5Q5002ifg2uuAVMm08bXZGqUBaizyQ9Dahxu78EppxBizpkjguHMpZwEqZIQmh/Yr/SDMUUuQjsPCD1LLNKdYhwYORrCSe8dn8uVivTx/tzouu0 X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 6:P9mE8Mof8B4rYN5/pNWHDjLJsGw/jTUHxNRvv5yYviDqlJw1qr2+dk7+O/u0oZHGgKkv5TAEZ3pjo3k2um2wC5PP0hvuqUXh34fFkCsY+RhE3eutsV0KoG60QPz3XtT88pU4rCYNP+/0fob8te1OfZbf3CoXj0y/DPk8xWfeC2oavOLwb5D84+m5ZcxJDMleT6Cxm8EF5RqzNx7IDoQIRZj7VK98RTNF26NkbBGQs4jIN6XSo0bzPxPv9TKYYx5S6PWgB+orBPXs2bzLA6S+kAYLAiDfAf0S+C++3LJzMqTc1j+PrViSwpoWi/eSVPvQQ1DrYq2isL3PHAp1d0h146D/TTmxYoWLSI+bC+SpeW7LdMGTex8QApPl1Q122QozrfrSbSYYXrtSKaGoTd9yjKb1RkrvSHi+0lJ7EmsImR5OeE6R9ZrppSFaUAA7I1Xfd82H3PZgmpLHY0vserEvuw==; 5:MY9hKH1VjNUzvnFcxJYf/n1chPuE/5W6TfxGjIyhvNb+q1PRBS0NdByT5eih7cGTcVxKrQT90RSFehq3nMUdI3voHZMxH+OnjBKYlYHdgTuXQtxgH0aKeXLFcDKe4KDCsaC7ioRNcoImm4HqW9zC8Q2exGFWG/SflZDIrA49RJ4=; 24:9RUFSLkP2DqOkCksx1eyecZVOczqYwv3FfXNMM64B2JNE9yOLqBBL78hX2sQFQXjyiwkAIn8qO6JpistNR50+BLDAQ54hfTNuhTEFpiKdfY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 7:A9en3QJumOVEPz/CD9RHKmMOGkC+KksTiJT14khPnFl2XhetdIOR45Qe7c8ssZN+FHKfsPOqcs1R9JbeSfPrEHQyUOzGvGUanKEZtAxXmf3ahi15SLsjnJDtVZz16luLW4STP0fcdJb1EB0BOhj2lRcyj68mDvGArUYCLaB5VM2/W21G9+wsbaYWGmheeiunYgvCi3/kqnrVXZty2TwPitKNYoggaPSvjipuKof1m6TA7cDAGwtopsCKJnm9eoCH X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2018 15:07:48.2171 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8a155892-517c-413b-f91e-08d593f48100 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2998 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Lomovtsev The ThunderX NIC has two Ethernet Interfaces (BGX) each of them could has up to four Logical MACs configured. Each of BGX has 32 filters to be configured for filtering ingress packets. The number of filters available to particular LMAC is from 8 (if we have four LMACs configured per BGX) up to 32 (in case of only one LMAC is configured per BGX). At the same time the NIC could present up to 128 VFs to OS as network interfaces, each of them kernel will configure with set of MAC addresses for filtering. So to prevent dupes in BGX filter registers from different network interfaces it is required to cache and track all filter configuration requests prior to applying them onto BGX filter registers. This commit is to update LMAC structures with control fields to allocate/releasing filters tracking list along with implementing dmac array allocate/release per LMAC. Signed-off-by: Vadim Lomovtsev --- drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 42 +++++++++++++++-------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c index 0dd211605eb1..cf0cc19c03c5 100644 --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c @@ -37,9 +37,18 @@ enum MCAST_MODE { #define MCAST_MODE_MASK 0x3 #define BGX_MCAST_MODE(x) (x << 1) +struct dmac_map { + u64 vf_map; + u64 dmac; +}; + struct lmac { struct bgx *bgx; - int dmac; + /* actual number of DMACs configured */ + u8 dmacs_cfg; + /* overal number of possible DMACs could be configured per LMAC */ + u8 dmacs_count; + struct dmac_map *dmacs; /* DMAC:VFs tracking filter array */ u8 mac[ETH_ALEN]; u8 lmac_type; u8 lane_to_sds; @@ -236,6 +245,17 @@ void bgx_set_lmac_mac(int node, int bgx_idx, int lmacid, const u8 *mac) } EXPORT_SYMBOL(bgx_set_lmac_mac); +static void bgx_flush_dmac_cam_filter(struct bgx *bgx, int lmacid) +{ + struct lmac *lmac = NULL; + u8 idx = 0; + + lmac = &bgx->lmac[lmacid]; + /* reset CAM filters */ + for (idx = 0; idx < lmac->dmacs_count; idx++) + bgx_reg_write(bgx, 0, BGX_CMR_RX_DMACX_CAM + ((lmacid * lmac->dmacs_count) + idx) * sizeof(u64), 0); +} + void bgx_lmac_rx_tx_enable(int node, int bgx_idx, int lmacid, bool enable) { struct bgx *bgx = get_bgx(node, bgx_idx); @@ -481,18 +501,6 @@ u64 bgx_get_tx_stats(int node, int bgx_idx, int lmac, int idx) } EXPORT_SYMBOL(bgx_get_tx_stats); -static void bgx_flush_dmac_addrs(struct bgx *bgx, int lmac) -{ - u64 offset; - - while (bgx->lmac[lmac].dmac > 0) { - offset = ((bgx->lmac[lmac].dmac - 1) * sizeof(u64)) + - (lmac * MAX_DMAC_PER_LMAC * sizeof(u64)); - bgx_reg_write(bgx, 0, BGX_CMR_RX_DMACX_CAM + offset, 0); - bgx->lmac[lmac].dmac--; - } -} - /* Configure BGX LMAC in internal loopback mode */ void bgx_lmac_internal_loopback(int node, int bgx_idx, int lmac_idx, bool enable) @@ -925,6 +933,11 @@ static int bgx_lmac_enable(struct bgx *bgx, u8 lmacid) bgx_reg_write(bgx, lmacid, BGX_SMUX_TX_MIN_PKT, 60 + 4); } + /* actual number of filters available to exact LMAC */ + lmac->dmacs_count = (RX_DMAC_COUNT / bgx->lmac_count); + lmac->dmacs = kcalloc(lmac->dmacs_count, sizeof(*lmac->dmacs), + GFP_KERNEL); + /* Enable lmac */ bgx_reg_modify(bgx, lmacid, BGX_CMRX_CFG, CMR_EN); @@ -1011,7 +1024,8 @@ static void bgx_lmac_disable(struct bgx *bgx, u8 lmacid) cfg &= ~CMR_EN; bgx_reg_write(bgx, lmacid, BGX_CMRX_CFG, cfg); - bgx_flush_dmac_addrs(bgx, lmacid); + bgx_flush_dmac_cam_filter(bgx, lmacid); + kfree(lmac->dmacs); if ((lmac->lmac_type != BGX_MODE_XFI) && (lmac->lmac_type != BGX_MODE_XLAUI) && From patchwork Tue Mar 27 15:07:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vadim Lomovtsev X-Patchwork-Id: 891669 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=caviumnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="Yv1FBLQB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409ZFf4lGnz9s1p for ; Wed, 28 Mar 2018 02:10:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752805AbeC0PKM (ORCPT ); Tue, 27 Mar 2018 11:10:12 -0400 Received: from mail-dm3nam03on0071.outbound.protection.outlook.com ([104.47.41.71]:25088 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752152AbeC0PHy (ORCPT ); Tue, 27 Mar 2018 11:07:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=+zFVks1HxG559lN85/EIxM4gLO2FPDdQUo+c4qwbpjk=; b=Yv1FBLQB+Hhk1+J3r5kbNlC5Efnr1+mGwsyf3/eWbEiJ50Mg+ukiVs3MEyKiOayv4JTxS3YyOoNT2Li5Ih8nmZzvWpxQrj4jvtL09KfZnFYT0MUL6H/IoRvAA5q5/HbzzbMziGVbYyxQdgTR1S5rF8+VbMA2c1e311cnL/97zlY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Received: from localhost.localdomain.com (50.233.148.156) by CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 15:07:49 +0000 From: Vadim Lomovtsev To: sgoutham@cavium.com, sunil.kovvuri@gmail.com, robert.richter@kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dnelson@redhat.com, Vadim Lomovtsev Subject: [PATCH 3/7] net: thunderx: add multicast filter management support Date: Tue, 27 Mar 2018 08:07:32 -0700 Message-Id: <20180327150736.10718-4-Vadim.Lomovtsev@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> References: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: DM5PR20CA0003.namprd20.prod.outlook.com (2603:10b6:3:93::13) To CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e6bd505e-f5f9-40e3-1684-08d593f481e1 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 3:T4P3sgq1wmmfn1OTbGLLa2e86BtBkuqxusa2KltN6ozd7JPjzT3XjkpJGTNAAVCCQIMDRJ4hDWE+stk90+ukIeMOrHIOfRtVSulgytEHZ5KnPIZKpOAfj9xPtYVK3eeGRc8lVPpdfH+m8bW7X8hpQUiPMca68/BOUWYoIDqUMtXP3+5znZJJ29opklpTYFY4otbsYpvTDmx3DJIA1u8++Pyq9/y8W+LSp7Hwe0YO0LFgW80X0YwsnuFqCfpizqoe; 25:xLO5PUygGPQS+XM1cZHuqyI9aRSlPQ+DoX82s75Dugk6Aeo694JU7jj3jGLA+1hoS9g1tnEir0e5uUX4qcD1ZX7L6RY1X5xZAfu8bs1jFxknGGORDVqq5ThaXtW/2+XwHW3NDrd7uB4r5o+0RQA4m8777w3UmMyuzPislnEZH9/eNdP4eZseCMly8Ll9ts3YYxuu2ZkHXiI2ZWbLZztaKGbtVlXk+BiE+9v4BCtEj/5VedBUOOvY4JVBMJ+W9SpF5XHNB4Nnn5zjL8Dpk67K8SYMaOZiJ62wiad/34FnKzff0HeJ1sJxdXI3a0GrWl8MuDT66GzW0/ekHnMxbWgrtw==; 31:WCxex4di77M/bEo4FeEQNupEfDL5PkGfYK+yhMZaEiQ2cUkYpmG0JhDkPDPZ4v41+8ab0OxBS5sGaob5jE/Wp97iEixv2tG2LzmSLTvWUnJYIUbBbWhu2acP34NqF+xN32IdcSt1t9/0Ys2zO45G+tf2rU7FILq3hKTtNWwiwdklW5YMG5JsgB2MrCrs7bVPSX5TzZVULmkWOT0m+Bjv8g7n5OXak15xQbZ58QaMlf4= X-MS-TrafficTypeDiagnostic: CY4PR07MB2998: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 20:8+4cs6dSLBtOcZu6qIgePdDwUh50ROca/Fq54OeU/bDm4JYktzkxiwjISx8z9A38JKpVLXWw/qp7gzTLt9lwuziYs12NmA6Oa+PsqlWvtFcW+jzZS2blpyvUMeT7WtQxBUutNau9q+gAPV2cDNOYKHET/MZH3gKafBQizhvRt998O0TPLQb5qT09isA5gUfBUv+8P8bNyzdCfJDq9iinxeRbkEv92oGVK3QDUopU4yeMJn4zOBeVuYO35XG2BZl/3kMlQV+VUKkj9KUwnJ+QmAjDkPDxwE6nfPKj4DAlWnjWhSl5bvFxD9GxyQM4DfGJVjYdaOiXAuTTHQ1aVpOtVwX2pqi8fQ6oUbzcJdWaTS7SszyAx/nESkeqhI912py07ZXZ31ztunJ1pGYa2iGA+7Sg3yZZTWVAZCdpQ/tVUmv5GWTQnKd/5iPyD9QG6VopDb8Wi7YoJM/rO2fVA1nyfcNnFULpR8xTUX2iespYciJUmdnBx22AAQapc7xr1oGVfON3AVM9pmq8Nn6dAGOrx4Ln/vm1/boi1fuPrvovaQFGtxjDtAbpLXASGl9X3Ipl2Flhd+QvYBN21FaKEeHuNk3zx9iZluKRJuRqVrZn43s=; 4:Dk8c9Ju3lsCR4AYmr3jBtFg9wRA+KgFWM5j37iHPYeyaWEROTWhTK2EYr2bfksvgP3MdPioRrLd2icKX7Tqblz9e7jGf/MC83cNRrHSaYIPY+thrz7IzpXzOm5BPGD33NIddjvS3lHM1m5eZHZXk6uxRkptDX/zs0xVSfl58jgfutMssoy/BMgzBgn7L1nh6GxoEEeTW76LVDQiAOLJzLmlxkZSNN7a/FtOFl4rM7/BedaMc2MjkfoEkxQSZ4e/bliwITU1k4BeyGCWEyt7LXg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB2998; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2998; X-Forefront-PRVS: 0624A2429E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(346002)(366004)(39860400002)(396003)(39380400002)(376002)(189003)(199004)(446003)(2616005)(6116002)(478600001)(1076002)(107886003)(3846002)(6666003)(956004)(97736004)(39060400002)(50466002)(7736002)(53936002)(16526019)(66066001)(47776003)(26005)(48376002)(486005)(486005)(6486002)(6512007)(316002)(305945005)(11346002)(16586007)(105586002)(42882007)(6506007)(575784001)(386003)(68736007)(59450400001)(69596002)(106356001)(72206003)(25786009)(2906002)(52116002)(53416004)(76176011)(5890100001)(81166006)(51416003)(8676002)(36756003)(476003)(50226002)(4326008)(5660300001)(81156014)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2998; H:localhost.localdomain.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 23:hrGF2iLjdKIOGPdxErt1CRKPapSgtq7ZI3qiJu53jqilxCK8IH1bEtmosSk59hGEVwF9TRtT9d3mxyD5cduDAj2R/7nKn4uz2eei7QnBvP6RxEB9j0n2JoTLV914HD2EFqvsBCcnfhOudQVjYGpTmJFOty1AmnUQZuBg6Yn8hFA//+YcnC9aAjismdy+j/rudblGnVsOukRVj7hbiLvDN9PL9+IrCu13h3SgZclN5JyiGyBQOXXgnHfnF20YdFPyatb4ZSjl0/CClFyopt1s7Uonvo+Aks8MgtbuI+xPP9JKekkXc0C2CFiPNJikzPvhu0kpJ5vqwA2KVbU4TQYR43zQ3wJaB2ED21lQhrAimiR5zIjOaWwS1Ft+PxHQL1HMVRuFg/prd/eIlygpfJTrT3iJECXOr8gBUexw6mOhMVyuuW031N1lKssvvGt9tSZyAQdOS7hX5JnafR8tc18p3WpYhIPGGWnB7SShJLXDJj/C+r9AgoTRdce9y5F3FG8jERFwVbIP90mWesRPCWOq3UckZ+/po0eUrkSGRK6Y0KaI1K5Ia6O8HGebu6C78reFb7yI5OvpaRmrIPunBCyRFw4Msqiz80WUXZqrjyT0pm1vXT0JQgFGksJhwf4R8wexRJDO3n870F+C7BeYktuiGj61u2Ofv+x4rf63GnkIytd0V8JMf8/t+gTZ7bLjYDNFC0UQy/O1lCVqwaOh4Oa/gZnz4/fl3t5TWrdvN0bLZRoS4hOD74fXnH2Uk36MHxXvvrt45tO3H/vK5Z8hEJXGbDzJCv8xAKmCwkF5S9KI8Orf/ZPa7Ipz++MbJRdkUdWYpgu7BscCc9UfhGkrVwj7MDch8Dva3gx2X6PIeSX8Jo7fFlIn6GDEMi9Mb815TAdNxp5Pp617ZPzMMVb7XrsBZGv+7U/d9skUX3rwiV5LcD47PNjO6e5UJn92EVZr+IlRdktNAqmhBXNA1wtkshCksBLGK+OatBbnf/00ml7kKE1ZpueM8qpVPKW/GE9wLr/fBMNG3ibAQy82iEYaY0MhZi789ksPY7dOqmTpMCATZzQjAHj/DyvR0m4pQwxGBg7mGCBu2YUsc7nurN6dhiBiX8j+o9/NPM+InEnElKsiMR6WnvUz44wVPtsqwCPvIcPmyiXSCpnyeXuN9rXqBoqqExS/JUrhTGQZ+xSW6chn1DfWrVgryWtggP+WXMETHmi0L2lG5f/7qMkNmsY244vhBKNwDEagDAKpWU8rKXzGZwPAzxJ6yv1Ya3hM0VAz0/qvjLX88Jiv4O1vo85NBfCLHfkS63lzZMDm5pC5GGy8sNNTgdgLPs+zCgZbHma0/Z9sVr5VkkcJQf4RRNsK3CQf0N3S3fCyoPAt+R8/vvSvM08= X-Microsoft-Antispam-Message-Info: HTyH5MQWlCiku3/RVfIqPEaFii9tDndW4WP9AwL+BlETdzZOQ8/hQBMHpLuInPKRh8MTC6MPWShtng3A7PrHTjH5G4YZLbbvLtIH8T/zoVo5NYbp3eyC4It6THWj6QnGA6cgu9EhLLwUNWkdjplkBXoLLCriDKXEJYwhC9aAiCtgcRuUEw+V/sG7pN9B8WIB X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 6:NH7jt7hcTNPK+ckjc9Sdl6X/DZD8jMhjSB7OhlRWjGD0QtFez5vPkHLoS+h7yvejnm8OgsQc8attZQI/dFgHmqQ0ZiSyCWwPsHTXYxLFsPMAOx3eXiqKx/ogNrvJLCDeEaJzAO2GTMYhN9la03rf8FptLpBo6464Tbe45tNsJzauvogLucaL0uHFfK+7b1CDGTt2AIkV8x842SxuBo+7JnDLlKeP+owl1exnvyTMxNcQFFLFf/4tX0RuSh+4kKc2XiYrJFgEZd+a2Bfo+pJ3gGZKT0ZK0llV5Oj+BgPmlY8oKvl77r2GxslOJQ9uSAmznKgsclJCb5thLrkso6aBuFDSS3k/jFxPAa3PtddY1Pfgi28gjikLnDbcAQuNU/vUWp6R5xwyuNxAIyRBKKjfbGOFjye4b3do8dly4am3c70o5t9rqwp/MNSeD6ebDPjy+SNAgiG8KmysUrcPbTaoAA==; 5:WUOFlCzxRkNreB7uNCOPr413z7k4vLzBmU3uXU/0HHMUVzZ5DXmmqfiUCBmC6R5zk7vfXpaUHy2yvVyB8Y2ukBfHlDAVpFw3Lny81pWZ//h59/w4T3oMHA4GpOx43CxRqd9OxvYJeAy4ZFaCXON3LUJlGigo3j2gJ+cNzKnYzLU=; 24:8APdrD1mPXTi/N0xUODLEg5Omzn4y9SHyIDWxy1mCpOLY8PpKbiOd+XZ5stFhdbQLTDFQi4uwd92K9P+UFLy4EjkLPHAUHenaH4zsPXswds= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 7:AHmgXVo4wNITWZttk3TDM04DAezpu0JK3D7lA4tAeMT+FgfMBFfZ4mQThdCu/2Sf/S0uoCgtKj10b+5DyP2USCVzvU0lTmujYr+GoVZZFOakiri+XYX9zw9PbWLZFLTuAbV9Cv+nuccsZswVqmkLVrf4EpXMkiZNsAWj2uUpVp8b86ATZkc31N2+Hv3V36i/qSpigkwJLnl8DLXz+aw5P6+7E/ykDdD/nnny6TvgI0QRQ3/88GE+s/fbXkHb1Yxy X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2018 15:07:49.6858 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e6bd505e-f5f9-40e3-1684-08d593f481e1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2998 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Lomovtsev The ThunderX NIC could be partitioned to up to 128 VFs and thus represented to system. Each VF is mapped to pair BGX:LMAC, and each of VF is configured by kernel individually. Eventually the bunch of VFs could be mapped onto same pair BGX:LMAC and thus could cause several multicast filtering configuration requests to LMAC with the same MAC addresses. This commit is to add ThunderX NIC BGX filtering manipulation routines. Signed-off-by: Vadim Lomovtsev --- drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 141 ++++++++++++++++++++++ drivers/net/ethernet/cavium/thunder/thunder_bgx.h | 8 ++ 2 files changed, 149 insertions(+) diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c index cf0cc19c03c5..52fef3dab0a3 100644 --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c @@ -256,6 +256,147 @@ static void bgx_flush_dmac_cam_filter(struct bgx *bgx, int lmacid) bgx_reg_write(bgx, 0, BGX_CMR_RX_DMACX_CAM + ((lmacid * lmac->dmacs_count) + idx) * sizeof(u64), 0); } +static void bgx_lmac_remove_filters(struct lmac *lmac, u8 vf_id) +{ + int i = 0; + + if (!lmac) + return; + + /* We've got reset filters request from some of attached VF, while the + * others might want to keep their configuration. So in this case lets + * iterate over all of configured filters and decrease number of + * referencies. if some addresses get zero refs remove them from list + */ + for (i = lmac->dmacs_cfg - 1; i >= 0; i--) { + lmac->dmacs[i].vf_map &= ~BIT_ULL(vf_id); + if (!lmac->dmacs[i].vf_map) { + lmac->dmacs_cfg--; + lmac->dmacs[i].dmac = 0; + lmac->dmacs[i].vf_map = 0; + } + } +} + +static int bgx_lmac_save_filter(struct lmac *lmac, u64 dmac, u8 vf_id) +{ + u8 i = 0; + + if (!lmac) + return; + + /* At the same time we could have several VFs 'attached' to some + * particular LMAC, and each VF is represented as network interface + * for kernel. So from user perspective it should be possible to + * manipulate with its' (VF) receive modes. However from PF + * driver perspective we need to keep track of filter configurations + * for different VFs to prevent filter values dupes + */ + for (i = 0; i < lmac->dmacs_cfg; i++) { + if (lmac->dmacs[i].dmac == dmac) { + lmac->dmacs[i].vf_map |= BIT_ULL(vf_id); + return -1; + } + } + + if (!(lmac->dmacs_cfg < lmac->dmacs_count)) + return -1; + + /* keep it for further tracking */ + lmac->dmacs[lmac->dmacs_cfg].dmac = dmac; + lmac->dmacs[lmac->dmacs_cfg].vf_map = BIT_ULL(vf_id); + lmac->dmacs_cfg++; + return 0; +} + +static int bgx_set_dmac_cam_filter_mac(struct bgx *bgx, int lmacid, u64 cam_dmac, u8 idx) +{ + struct lmac *lmac = NULL; + u64 cfg = 0; + + /* skip zero addresses as meaningless */ + if (!cam_dmac || !bgx) + return -1; + + lmac = &bgx->lmac[lmacid]; + + /* configure DCAM filtering for designated LMAC */ + cfg = RX_DMACX_CAM_LMACID(lmacid & LMAC_ID_MASK) | + RX_DMACX_CAM_EN | cam_dmac; + bgx_reg_write(bgx, 0, BGX_CMR_RX_DMACX_CAM + ((lmacid * lmac->dmacs_count) + idx) * sizeof(u64), cfg); + return 0; +} + +void bgx_set_dmac_cam_filter(int node, int bgx_idx, int lmacid, u64 cam_dmac, u8 vf_id) +{ + struct bgx *bgx = get_bgx(node, bgx_idx); + struct lmac *lmac = NULL; + + if (!bgx) + return; + + lmac = &bgx->lmac[lmacid]; + + if (!cam_dmac) + cam_dmac = ether_addr_to_u64(lmac->mac); + + /* since we might have several VFs attached to particular LMAC + * and kernel could call mcast config for each of them with the + * same MAC, check if requested MAC is already in filtering list and + * updare/prepare list of MACs to be applied later to HW filters + */ + bgx_lmac_save_filter(lmac, cam_dmac, vf_id); +} +EXPORT_SYMBOL(bgx_set_dmac_cam_filter); + +void bgx_set_xcast_mode(int node, int bgx_idx, int lmacid, u8 mode) +{ + struct bgx *bgx = get_bgx(node, bgx_idx); + struct lmac *lmac = NULL; + u64 cfg = 0; + u8 i = 0; + + if (!bgx) + return; + + lmac = &bgx->lmac[lmacid]; + + cfg = bgx_reg_read(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL); + if (mode & BGX_XCAST_BCAST_ACCEPT) + cfg |= BCAST_ACCEPT; + else + cfg &= ~BCAST_ACCEPT; + + /* disable all MCASTs and DMAC filtering */ + cfg &= ~(CAM_ACCEPT | BGX_MCAST_MODE(MCAST_MODE_MASK)); + + /* check requested bits and set filtergin mode appropriately */ + if (mode & (BGX_XCAST_MCAST_ACCEPT)) { + cfg |= (BGX_MCAST_MODE(MCAST_MODE_ACCEPT)); + } else if (mode & BGX_XCAST_MCAST_FILTER) { + cfg |= (BGX_MCAST_MODE(MCAST_MODE_CAM_FILTER) | CAM_ACCEPT); + for (i = 0; i < lmac->dmacs_cfg; i++) + bgx_set_dmac_cam_filter_mac(bgx, lmacid, + lmac->dmacs[i].dmac, i); + } + bgx_reg_write(bgx, lmacid, BGX_CMRX_RX_DMAC_CTL, cfg); +} +EXPORT_SYMBOL(bgx_set_xcast_mode); + +void bgx_reset_xcast_mode(int node, int bgx_idx, int lmacid, u8 vf_id) +{ + struct bgx *bgx = get_bgx(node, bgx_idx); + + if (!bgx) + return; + + bgx_lmac_remove_filters(&bgx->lmac[lmacid], vf_id); + bgx_flush_dmac_cam_filter(bgx, lmacid); + bgx_set_xcast_mode(node, bgx_idx, lmacid, + (BGX_XCAST_BCAST_ACCEPT | BGX_XCAST_MCAST_ACCEPT)); +} +EXPORT_SYMBOL(bgx_reset_xcast_mode); + void bgx_lmac_rx_tx_enable(int node, int bgx_idx, int lmacid, bool enable) { struct bgx *bgx = get_bgx(node, bgx_idx); diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.h b/drivers/net/ethernet/cavium/thunder/thunder_bgx.h index 52439da62c97..f5de44bc3bdb 100644 --- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.h +++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.h @@ -30,6 +30,7 @@ #define DEFAULT_PAUSE_TIME 0xFFFF #define BGX_ID_MASK 0x3 +#define LMAC_ID_MASK 0x3 #define MAX_DMAC_PER_LMAC_TNS_BYPASS_MODE 2 @@ -205,6 +206,13 @@ #define LMAC_INTR_LINK_UP BIT(0) #define LMAC_INTR_LINK_DOWN BIT(1) +#define BGX_XCAST_BCAST_ACCEPT BIT(0) +#define BGX_XCAST_MCAST_ACCEPT BIT(1) +#define BGX_XCAST_MCAST_FILTER BIT(2) + +void bgx_set_dmac_cam_filter(int node, int bgx_idx, int lmacid, u64 mac, u8 vf); +void bgx_reset_xcast_mode(int node, int bgx_idx, int lmacid, u8 vf); +void bgx_set_xcast_mode(int node, int bgx_idx, int lmacid, u8 mode); void octeon_mdiobus_force_mod_depencency(void); void bgx_lmac_rx_tx_enable(int node, int bgx_idx, int lmacid, bool enable); void bgx_add_dmac_addr(u64 dmac, int node, int bgx_idx, int lmac); From patchwork Tue Mar 27 15:07:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vadim Lomovtsev X-Patchwork-Id: 891663 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=caviumnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="liXMqIdO"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409ZCB2kH3z9s16 for ; Wed, 28 Mar 2018 02:08:22 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752739AbeC0PIH (ORCPT ); Tue, 27 Mar 2018 11:08:07 -0400 Received: from mail-dm3nam03on0071.outbound.protection.outlook.com ([104.47.41.71]:25088 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752664AbeC0PH4 (ORCPT ); Tue, 27 Mar 2018 11:07:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=9aqnP25m6wf305EbxzI/J+YGb45ANP1kBZf29yajHmU=; b=liXMqIdOSQgc1JsQR3J2VesJ8VfF+3+hFltus/FSvVeL/00wlOjGFKixed4XtOiXyqTDQsste3gRcjjxZyAC7wiq+9rR5gGhY/Mk5q51vmqcyNrhWUqdWOhrVrZsvSXMjxf06HsBY4M/sWPWiO5LPuvLW25QRk7RQbdWowmDokw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Received: from localhost.localdomain.com (50.233.148.156) by CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 15:07:50 +0000 From: Vadim Lomovtsev To: sgoutham@cavium.com, sunil.kovvuri@gmail.com, robert.richter@kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dnelson@redhat.com, Vadim Lomovtsev Subject: [PATCH 4/7] net: thunderx: add new messages for handle ndo_set_rx_mode callback Date: Tue, 27 Mar 2018 08:07:33 -0700 Message-Id: <20180327150736.10718-5-Vadim.Lomovtsev@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> References: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: DM5PR20CA0003.namprd20.prod.outlook.com (2603:10b6:3:93::13) To CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 60712497-d9fe-4c24-23dc-08d593f48270 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 3:IWajrchsw3SSE5RK3hDgCl7w1hlXGCI0PNlH1fXND2U67vLLcF8YuO8eXOoPNtx6fUxc8scp6fEmoRgCQOL2iKRIwMG+Q1JN7d4TOtspuc2iDThL+tNxNssMASnzfiDhZD4Lvm8MHCVUtSumfPn1ADWTnVZcYaJu4uPOwIzwUeUtpjUEWWzs9dfs2WbgPhtPR5cq/2Sm6SZagOQ8wWHnRJYLqp4WkBfEj9Tl41IDOD2tiR3l0DKXzmws/Z9Yo9Ao; 25:uGw2zUA5kFAejFmZVhC9EwoXcyEjvbJvQTZr50Z0ZUycSP4K+WDnlC4BCftQES0UkYqOVGmJ412LV9oGkDxBvvfyTKR2owycD8+qXKnXAszWd7k33Z0/01mIX+Hnl0J6V4B6UP0/6mh0wzTRV7QqNL0FkhLxv9cEoxGpx61I6Zdx/s5GvLS4CX4yUERFZeLLdjCQKV7eJSKdDmq08chU6Qff18TFvl/5m2K7I7GFLQ0CZX9rs1kk1boG/3JeM2QtbhhTSKTfEsLsvgIapVgQJSa9Ku6F6BAUt61JZTO+NYPHd9Rabunbu7pxEgcsg2PbK4uRGe4tGH6zPU4q1WEPuA==; 31:Jcs+bZiJAFkB7bcHHl8sXiTOP/XmHedpxeub7CZfjWGfNFkrrG4D7fdPLCW/+RrdUfYk5Yqo2uOBgNCTaj3xGF4zMOWlT9WvHpRZgYwruvSohhNkZCB0FsWR5OA3WjjpKLsp6VNs9qG3SBsWR694YGqUcXXbwhH4EKC7rdCJxBlfzkaNR3aPSc+LnE52ODsmjd3mro4Kr+UM12FvdN6SCbeuSx8SpdrqJgtGeikNj4U= X-MS-TrafficTypeDiagnostic: CY4PR07MB2998: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 20:gF8FdnIapn3i8xZf5y7SouzsWnsODI/QbkTdub0WIRPHWOC3IrqA5OixzRYgdZQA8VQ7emOQiR52EUVtq5oC4wH+Pcip4agyU2EfTWpJj2N/psjbift52qaCRdjdJpukX89mREuD4jimzhopZazjEkT46LLCUybd4dBJHDgzQQwnV+SIVavILqOA3OA9uINzQzYt378sUmKMf35ppsp04Bsw5IVTtlqBT4FRRRaeGA/yC83lAXyDPy6JX28WWHVaTFgc3FZJWr/H6Af3YT568J2YY0LmninBZ0wzhVy3KypLANN2A7GHEP7VfeHnnpEZM6ybVlHZpoELdAM8G+BQfQQLxojpVi0lD6rjwbryS489+8SjTILJ2LYdBvLBjzmRKEC1oHMlq/I7rkLo4wDvOrUgv2EDFHXOpUsIr5uHDb+kzvr/54GFohpD9Dxhk4vUrlBexOo0G6Vnr7i2BrxIEyFyQDIcFzsh4g6blfEa57A27xuxCuKu7npYpnis6wX/PImGDxM/6HxPdP2eeKKYlHGVva3twnvSeawVAMvcsti5EnF72laf/QGLNyIFCoMF9TOKsKL1xLrxYl5o98KMDWI95jq6UcIwYSNcnhqLJ/4=; 4:buRdzQ9P6XNLdt58IBT2wBKi8cv+kUVosJRdUNXB46jmeihfOOpYo7cLPQjXwSqXJmpNODkQuQXWeX6FYs6dI7RcJNl/JZ27N61U10GU10BV149ZjSX/mGxH0ksDorgB4N87s5LitEwam81AaSPXyblwaY6Z1jVEsLYoBwFXBRwwBdXuG0jEroy7Ffv7Rrx36wbNSkjjHSsUizDNy5ncYrnPKeLBNo4yFS0c5qkzh2M3a2+iB4Rkv8akSAx1A+81VuktNY4qoueQfO0mCZCILA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB2998; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2998; X-Forefront-PRVS: 0624A2429E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(346002)(366004)(39860400002)(396003)(39380400002)(376002)(189003)(199004)(446003)(2616005)(6116002)(478600001)(1076002)(107886003)(3846002)(6666003)(956004)(97736004)(39060400002)(50466002)(7736002)(53936002)(16526019)(66066001)(47776003)(26005)(48376002)(486005)(486005)(6486002)(15650500001)(6512007)(316002)(305945005)(11346002)(16586007)(105586002)(42882007)(6506007)(386003)(68736007)(69596002)(106356001)(72206003)(25786009)(2906002)(52116002)(53416004)(76176011)(81166006)(51416003)(8676002)(36756003)(476003)(50226002)(4326008)(5660300001)(81156014)(8936002)(227083002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2998; H:localhost.localdomain.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 23:iftj53Vfx2Px2+Gzfcs2VcQf9oZ/lZU49bElGq+BecpguT7LQ2BwA1I5EXC38RAdPoCGccHXPwwRu5tzyrVHF4JLpyPtynoZ+DKP+qklD7C+DWRS3rbgAkOuTZKCivAuAjpSVj8XNC/3Vw10Obs3hHzewZNnSdGUaeG+U9ak4fKQgTb/LZFDIYmO/unpRT7ppMr+iBJvnoLlh2lphGXnsloJhNq2/JPWSdV47T049VAJXbn7X40TQx+6Bs0O5kAuv8DOALkvDFSbk48og0WuUcAQoGV7UdsAO98CI0sCjk7katlZ8iECOdn9d5JFwAWbcMGpfPC4J6E2vLjt34N5+0DsPG2+t1uTXxftvtWD/GRgxHM2kPeV2QG/lPodJUE1HYUyg/yU6tnRao/+QwHitm86hug3QffQrD5TytR4/9SHaOzSyKQ0PLak487TC98468Vom40a7p9Bxq++tZLeS3a3B68qM4GKSk8olPAoXoLhggbh8/TgTLEQcWA6Etj54nosorIvshst2rvEqTaUXhav0RRF8JEpO00LTWGoliXhB+uisdBXPhCfPL2zsNufNJHnoMeGiWs9vYLCL6pyDR5GDOR6Y5GnN9HuAO1b2W0eVH4jYZzptKHtrY8B9DJrbJPjEEDjfE+KrmBzEW92o6IZhrEZ7K27UkpCbRNgCqouJ4tkwYuKPJp7lHdfEotGLzdlRQX0poxXX4A8hy1sHo+H2wyAcsY9YwNFqpZaVZM2B2mpJeHk9w4CR+HyHzLIfXON32ayu4AFDQzMJmX+NbMazmMU975vt26hWerzZZZOt7Z+zULT+8zNLJHSE+FNqteV7e3gz3wix/C79aaEmnCQbhr1xUAEa1pjTpYFl6XENP0PQMHCsxKuuSPrru4B43zjxf2wKnXl4b+AvEcd0KnR2YRMMNljla2uxWW7r4O/ljYdZY8dkT55i1isyHY9hdvVs8dlsiOl1I5xoVporXFu+YUyOeqiwgVtb59cqrnTPrVR/visTQ5zIV/+AF3OA9ChAWnvlYhdShXQaOF9ED9VR8jru87tGsNrWvTcK5VQAIpigJXnorpUJCd1ujJ9Goy0JkFp3uwlKgMIKJRYTi8oQh67Vm1j5PKBJZ0nCxoFfDQXdhtjZgk+PCDXqPOU7F9L8SDqaKTqISWHcg8QY8P2vsG6Ys6tl7VSHpeDImootVabO02ZraeWGi+DBo5o3iwm292i8Xwr31JHXHtOvlHROLwkyC4cKovMs/pyx0ABlXv8LhuYjlnoqNSRK6q2QEImZ5PrJ2nuVABTy4IHu4lAVYcTBk/fABX4Q/ah++nNvwkZ9K8HZzZL4Z0qLw0pGdY/B3lgDzQWclcL8In/jA== X-Microsoft-Antispam-Message-Info: E51OcB7zyceuIJwm/vlx5HSt93syzs9kNMhItbAk2U8gXYclQiTYIDBksCAVbnUYPJSjapHaxJYZBFsaVZqHSJ1SAG4zdVhYtspO1Jj3/IrLsWba8sKF+Yng2q6eKEMk5RCze/oATO3NK8Q1hkTuLfQSVBMoo+InBgYtK1LSEdHsPVYdusRRfjqyX1Sz9BGt X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 6:dUZQ/0fIEZvkguP8OXmNEX9/BhFdr9CflU9+v/VN4wJpGxPS+P4meZu5s8RTPZ+sv0Vx1fs2yb+Cp4VbgIkLZUPSi/YTO7z1WU0k85V66/LD/BdlRMH/PNjQQ4pywJDFfHHShqtaBNRIgTr1xrLuonP10Fl5qEGzvcMJY8zJRquY0MyllCSry2BLzPd3/qaRejdtTmp4LAg8HxnDVL7uMbdvvcOgRbZ1Q8t/bLgRN8KTigDI76tUo10pwVprv+S9gOzyOsuhG+bKImWzATsZ8R1aV2U5luWnnTUOFcSS1+22npkpbLfLApF5QUWCB1e5vfZ3PAw1jJ3k0/PoMXAviqwMagK7cNcFKKpDtstG5ycTxxQAV9wnPuK9mFjcmWhjmJ0eEdio2GUD2STq3NAxLMtno9hrTQOYIc4m2hOldx/843ABbJybuZtaG8JYJk0vtqIgxUfeLLMi5lnrb79MOw==; 5:YfV1KZpwjocYcTRmbgA+a9g0iDB2tmq0tskA96MPWA3QJ7Iub80V+WvQwqphg6cTq6jfT4tX6oa7yAOlkl6NaQx1OenBaYBYCH8emz5Eqb7jFEPRTq2sYcIzquarIOAg5SlLHRdEOZQzNmM4Bft0X1vjx1heuC+Cdvv3IBtUDzs=; 24:yidTgw9c1b7aF/CEXhyfCYtdEwKgwCpO7KZ+qXT2RLDKSxl9qqmbBgWsTwuLiB9OXnJT1M9FZNbnN144a8htjPUxKGucVTaX2WpmnOInUAc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 7:gou52bsQ7vY15ZBxXCGgTRt7svtek7UOgB9+x8xSiGhvP9gwxNM7C3tsSR2bf5iMPQO7iF/we+CtNQbfYSn0Z1f+cuv7/Uvs9w+k9X3JY/BK/y+xz62Z9Vh7HElpo2PeZaim0wsn0IQvoir6j8R4UIGQ5NRZlu1hvQz1otgz4iOpzarLj0S6Ky2Xsib/8cHsOtHoLphy8cqqjVxGINIXfzj8QSC6meRDyU3WN6rVYtNgo3pn31NS6BJgQ8WyMrp+ X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2018 15:07:50.6233 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 60712497-d9fe-4c24-23dc-08d593f48270 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2998 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Lomovtsev The kernel calls ndo_set_rx_mode() callback supplying it will all necessary info, such as device state flags, multicast mac addresses list and so on. Since we have only 128 bits to communicate with PF we need to initiate several requests to PF with small/short operation each based on input data. So this commit implements following PF messages codes along with new data structures for them: NIC_MBOX_MSG_RESET_XCAST to flush all filters configured for this particular network interface (VF) NIC_MBOX_MSG_ADD_MCAST to add new MAC address to DMAC filter registers for this particular network interface (VF) NIC_MBOX_MSG_SET_XCAST to apply filtering configuration to filter control register Signed-off-by: Vadim Lomovtsev --- drivers/net/ethernet/cavium/thunder/nic.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/net/ethernet/cavium/thunder/nic.h b/drivers/net/ethernet/cavium/thunder/nic.h index 4cacce5d2b16..069289b4f968 100644 --- a/drivers/net/ethernet/cavium/thunder/nic.h +++ b/drivers/net/ethernet/cavium/thunder/nic.h @@ -403,6 +403,9 @@ struct nicvf { #define NIC_MBOX_MSG_PTP_CFG 0x19 /* HW packet timestamp */ #define NIC_MBOX_MSG_CFG_DONE 0xF0 /* VF configuration done */ #define NIC_MBOX_MSG_SHUTDOWN 0xF1 /* VF is being shutdown */ +#define NIC_MBOX_MSG_RESET_XCAST 0xF2 /* Reset DCAM filtering mode */ +#define NIC_MBOX_MSG_ADD_MCAST 0xF3 /* Add MAC to DCAM filters */ +#define NIC_MBOX_MSG_SET_XCAST 0xF4 /* Set MCAST/BCAST RX mode */ struct nic_cfg_msg { u8 msg; @@ -556,6 +559,14 @@ struct set_ptp { bool enable; }; +struct xcast { + u8 msg; + union { + u8 mode; + u64 mac; + } data; +}; + /* 128 bit shared memory between PF and each VF */ union nic_mbx { struct { u8 msg; } msg; @@ -576,6 +587,7 @@ union nic_mbx { struct reset_stat_cfg reset_stat; struct pfc pfc; struct set_ptp ptp; + struct xcast xcast; }; #define NIC_NODE_ID_MASK 0x03 From patchwork Tue Mar 27 15:07:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vadim Lomovtsev X-Patchwork-Id: 891664 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=caviumnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="aG1xXJmf"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409ZCw5wKsz9s1P for ; Wed, 28 Mar 2018 02:09:00 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752725AbeC0PIF (ORCPT ); Tue, 27 Mar 2018 11:08:05 -0400 Received: from mail-dm3nam03on0071.outbound.protection.outlook.com ([104.47.41.71]:25088 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752490AbeC0PH5 (ORCPT ); Tue, 27 Mar 2018 11:07:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=rT+swLlKlJVJ5gRwOsYwnJP3loNtdNU9b6miRYaJJiM=; b=aG1xXJmfricF4T4+++0IM1c8Cl1cnsGEqg2Z4SdF5TCblwIgo7lgg2P8bOUF4Q2EyIM5GRrVwBxIjNrGLsBSvbwsgXLQ4q+R4ILsqe2iZEG1MK1w7jhLQt9efVwMqVWV+lk1cDiMPCCqn9auLE2c9DHhawhKVPdRZ5TdniwbvEw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Received: from localhost.localdomain.com (50.233.148.156) by CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 15:07:51 +0000 From: Vadim Lomovtsev To: sgoutham@cavium.com, sunil.kovvuri@gmail.com, robert.richter@kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dnelson@redhat.com, Vadim Lomovtsev Subject: [PATCH 5/7] net: thunderx: add XCAST messages handlers for PF Date: Tue, 27 Mar 2018 08:07:34 -0700 Message-Id: <20180327150736.10718-6-Vadim.Lomovtsev@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> References: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: DM5PR20CA0003.namprd20.prod.outlook.com (2603:10b6:3:93::13) To CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d9b5cf0d-138b-43f1-ced1-08d593f482fc X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 3:5ulKAhPHw0KhE1c1EMfLQpv6S7PcQ4Vmf4+upbRM8kv+bYSl1Hcif6roU23pqN0BAoej+BDh0BocLn8W82PW4aLIxZzNYDd8PLMaET1THqW0CixQ2XMwi/QBmBrgKJw6QE64XIDbmh0NQyN36cuVqH5zGaYNKkIo2TOsdWGfXFlOf1BUtm815rLXYELZ+3ggNtrfGkDBlo+Htp8J9hS/rsnpIw/7yr/TXv4FFXw+RhXqKQ7JOcF3PR4UNXJKcXwh; 25:uSAxazuAdAE3ygMW/xNIiTi8Dd7mkfRV6QzW2iQPUZC59q0EPfeDDIOmcvlIT2m56OVvFvBfv1wRDyY92kcf653dRykMYmGsH44g8KbC/8vb7be010srgue742Kp4AypxZFIy92UCzHGeU3MGIRkcB1yjn7SSXuELEFsPRxMPSUEI4mbkZSavnb9P1ofF4rHPNdQK3bU6i/ICIni/lioLNA9rj+K1yiHvFL1mB8ae9t4t0L9P/7H0sJcFhSPKTuYs2o1DT6Tk2ftoYV3JMkmRSO6kFn+Oq4dqjJWoqp6d/wRGtS6R4eDhQaWQHCYNTrQGLiMDcTeNZ9w5hqwLHnFrA==; 31:zOZcAFXjLKDlOW4omPpNrzY+CdIqWQrXnYMVUcXPskQF61jqJv0YYjWuptWpGPAyb6GhC+9VMNFACjXNsXAiYRcJ/dZBSDCtiinBgEf6VyMgbiB8BRHgB4NlBdsPmHTs+lM0EBnDWSN2o5aZLJ3VnOppL3YrRoQZQg6nG5x6V8/b2GzJJN/4suL9DeoIjZft7ArmOm9xOst50tT1YXypcLw4TmXBccgLt0jhWyt6UQg= X-MS-TrafficTypeDiagnostic: CY4PR07MB2998: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 20:5f5CXDQiUbmUoyxkA6mKHDMCpVCPrOBODxurrg+v5HNsg6WuWptX5/J3ELFjqZKkkNYnNUMUzT/FQ/B5WI93l4LH2+K1j6uCGs5idghAlVTfwAN+CBeys3V91WPdS6Ce5hv97WYQ2XjuK2MsbKK7oURx4o97DamtGL4iITg2Yr/HwkwsmJCfSPl8FWHBh1Q3G0ot6Wo07YjeljhzGaPDiBq6rC9GVH2BUVjyPx2atCiWOifkso7j0AEfUQa85ziTB37M29t2rQjQZ1hz3x7qS9tUcvaswGPxWrvHkvuW/MNrjq6c10yEbWG+AFwtrVAs5AX6C5ndq0sneNqoEbsUiXZ5O48ri4dsKy/DIDFrqOAqSO2GXOl+2883k5U2yzuQPmdnN0pmJJiAur0wgBmGdbWKID4a2zQzo7XPfQvtidvBOtlw646mjzQN5Z9Dyb30PIdwuNN/ucE3scWRkFSmYY55nVBctSaZmJ4jfjJy31fYErAfKgHpNwjV2WglGyNBs+H+PvFef/daCDkZzZOAUIEXaSRaBdGx0PAb3LA4JE6Lrc0czWJgVshc1wWGqvTnMOqcZnDJDYDhjZL5HcClJFC8nHHe9v9sEt+PORa56OU=; 4:QfuI9mHL+EVQQ9jvFZnPDf06FAFdoe4sUFqo5zPK+LstnuOA9RioF3a6pPMjGzsupGFl5T5mfehf378yvzsg1Imj3RBlQ/LzO5h5UKY8IL1Oy7BHbmnv+YdaGDEfWdfYnKV7dPL6X/ECYUEsF4wT0C/r9GBvZwpwQgJCY4GJZw5mEDU5tYmELZHrSXnumql4nOYWBxbxZg33sOIv9FP9wflDWNiJkbfHZz4rOigp2rH6j9Ni2Vus24z2UbGCf4ZPN4IGVvDoIE1QZid+ZHSpWw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB2998; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2998; X-Forefront-PRVS: 0624A2429E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(346002)(366004)(39860400002)(396003)(39380400002)(376002)(189003)(199004)(446003)(2616005)(6116002)(478600001)(1076002)(107886003)(3846002)(6666003)(956004)(97736004)(39060400002)(50466002)(7736002)(53936002)(16526019)(66066001)(47776003)(26005)(48376002)(486005)(486005)(6486002)(15650500001)(6512007)(316002)(305945005)(11346002)(16586007)(105586002)(42882007)(6506007)(386003)(68736007)(69596002)(106356001)(72206003)(25786009)(2906002)(52116002)(53416004)(76176011)(81166006)(51416003)(8676002)(36756003)(476003)(50226002)(4326008)(5660300001)(81156014)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2998; H:localhost.localdomain.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 23:AZmh2SCQxaL1/St6DYs8wGYvsq8UKqq79PBjfD1Q92ooMIsry46h2ykQMuIrmLMVctg+FbHvkEcAGQnO/EbuzowUdfHTm5M7FA3iq2Ncu+S6+d3oX5mPoio6TkEfareFEY868h1J2SvbtakxFVHBu8zKEspKlUALXGvIxKiHm280y1emOk45kJJR42zBDNtsLk4lndRIHwn12uUyewTEtS8+H4X93SI+qujCTWHyhnj7USDDHJ0MGZ3acHcvUFKAevhrxSwzqKrAbxpRGOHT1Mszab3CAyXeo6k2zPeo2aX2sqM5PIrN0U56oQIcP2wI+73EaFEzrftdz4rJyBHgZ5d9ZjeipqBPuZpXamIXpkWgoN3oI8aKpHfArS81QU154bWsIrr3K8GpMZgsFdw5PMXjPMq9JAVfP9Iw8rYwJckrpJj+Da0zRC1EXK5rpAcSlEBjl31mlGUILSaEkXHpylWr3BfCYT0iZCte7C6ZM2avrSuZ0Tu7jc/Pys/uHA4fKPyH3D53qhylfEdlx9TVSmk/clR93+UcelKE0A6SlSTQfo06EW/V2E8rDzC3Jhf9lPMasGPF6fXtcR6PVCanJDGd/BRX5hyIELvI1IkD35zOn1rREUlLktDRMCuViYwjsVAdlrR1DvzbpmoEMHxJU3iqZE/aHMgd9OeD5PZFPNE/lro7bN9v/4r23vpjBvTCsiMH26KNSgaL/W+pmByxF0fTASxGD0KaWC2gPzx3oUYB0NhC5DmAbQeX71KmcHGDSYrgYvUtBva4i4usi5pR4g/Qq/uf0n5WTdsNr4lneu0a3S/MKzZZBWZtjnqVZqovhq5EXs1KYF/IMkOOdY2UElxWtx1ym+VrdEtNSRYZVxkg6D57FbqwFyIX8NWLVdmmtpZRBtbaTJbTRyzAi03IJc6HdQUuka6Uf12+Kef1NL++NO5WnDSfd8HmBU3ckTfyqq04JMUrxB62BmQzQUdbplDjlU6rMIdpm2GzOSgzpvzol1MQDhnTNm3BT6QWKRFirqF4TXYWr1LWL+Qlt7HacPMTo96FNZ2MPKsEb0pjiJ3bMdeB6lyfjm0qyCePG8ljC+mN95cUyB+uLjk6Gzr9+3MGmqL/Tqg8LLV6z7Kz9tHB8BcvUgUYqskKC2Z8IN8I9j5fZMaCev6JlJaYVjtJ1tKya0mTolvYbv9nLh4rYNKo729FUXZaeTHvXyGfP+JAtVu6U6DsDLaSt6bRxS1/s6mCkfk/RvTe55XDYRCrrGlDm/7k5scKahVMnv3aRuVZ4ljqwxy0TwH5fJf0Fros+5RmnB8JVh6kEbKO6BnfFRRsE8ELmqaSN6sPmCC1f4ES X-Microsoft-Antispam-Message-Info: GlCaEbcWCHep45uLQGXLNTphCK/HW8C3sTd5qjgw0alQQezln6jwzJqKpI8d/RrQZahvjHP1BeMV1rqNUcid02SebPpg2MTbwYqpdGAgbtB3WNZZw+aAgwuWQy4FigA8bJDKncyjGZDT6B2lXguLFeaPu41heXWGCfoxPvSda7KtlWnl7V1ApHMtl4una9eY X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 6:jkoyS7LtaTM3w1X+N3vxL4aR7RWc3AUJAb5rL0G0bEYQVarq6x2Ye8zAn8F8nzH4lqwGZ7lmjF7JWXGgTOZstaC2/rjkfx7bSBdSznKOTG/ewttb/lleJOlVW0i6CZ7a8MwlxgdkfM1J7IWxW+Eu64xOjk5wFeCZwc4sFyosowBjKJQ9armk0piUyk4TuvvyYaBJPejXebvTFIwmh9p2PFjudQsmuiro/mNQ46VNpaMoAUbZBCDQJ6ISYCiIadkkvlGw8uPjZngzuc/KOgCfG/oKiDWJ3Oaw3oiUsNmxcjR+aAnemIIZkfYULbjNFqxRdF65fRrhCZMOCuockkefNAlCtzH/OOOE0pMxUIJQ0AkpwX2Xe5TXpKsvzfgn3h3B2Tp3fz/7GRhNqsbr3fJx5jLOyPooVtZHv65IQFa+4eCf5HvbAKwdcO78DDu/cepe2/10tSwxeKnek1rpandrdQ==; 5:dQ6KWw4Kl228wf/Z8YxmFYZfWDIFboa6bBHLNP4+z0pi/Ek/8ivJw3alIIPzMgLgW04eZfZmgs4JtKfNSTt+muBZKbWW3HwCglIcfY2VfBteAeg3QjPFDrmu5yUnzMr/+9UZelzzvOwFSLRdORdpfkW4fThV4wkOeDsFRhkUNkA=; 24:FNVg0I18dbOz6esG29lczfRMqv7Ks3RS9KMUO6tiBDCWDI9jjwKfw/U9/8sLMQb7iH3xmQUMcG9Ude9c6iYeU1J6ciUbrOWaM00ym42nD0A= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 7:St7NKbb8dOj6O2dOCxVwHLXKcW/2wshDr6jx+j5QHTwQKDQDP23jg9XmALn3dSqQt+6ojzVxpYZa3Q6CSmcCg2MPTl7wHRpeIVSioIhr2QQQczFdj7RVF96ZqRNGLjXtf/Nrv5P2dXVfUz+CAfAJ4TUIchV389C5p9kkXLbgiUTJ6fD0LBRgujnevgz6q8SKrNPkHEZaVfuwW1M0Kr/e2EfK7kbyGFNhhWxHzeUrW37+mt4vmNQVjzPyosoncP/S X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2018 15:07:51.5452 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d9b5cf0d-138b-43f1-ced1-08d593f482fc X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2998 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Lomovtsev This commit is to add message handling for ndo_set_rx_mode() callback at PF side. Signed-off-by: Vadim Lomovtsev --- drivers/net/ethernet/cavium/thunder/nic_main.c | 45 +++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/cavium/thunder/nic_main.c b/drivers/net/ethernet/cavium/thunder/nic_main.c index 7ff66a8194e2..55af04fa03a7 100644 --- a/drivers/net/ethernet/cavium/thunder/nic_main.c +++ b/drivers/net/ethernet/cavium/thunder/nic_main.c @@ -21,6 +21,8 @@ #define DRV_NAME "nicpf" #define DRV_VERSION "1.0" +#define NIC_VF_PER_MBX_REG 64 + struct hw_info { u8 bgx_cnt; u8 chans_per_lmac; @@ -1072,6 +1074,40 @@ static void nic_handle_mbx_intr(struct nicpf *nic, int vf) case NIC_MBOX_MSG_PTP_CFG: nic_config_timestamp(nic, vf, &mbx.ptp); break; + case NIC_MBOX_MSG_RESET_XCAST: + if (vf >= nic->num_vf_en) { + ret = -1; /* NACK */ + break; + } + bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + bgx_reset_xcast_mode(nic->node, bgx, lmac, + vf < NIC_VF_PER_MBX_REG ? vf : + vf - NIC_VF_PER_MBX_REG); + break; + + case NIC_MBOX_MSG_ADD_MCAST: + if (vf >= nic->num_vf_en) { + ret = -1; /* NACK */ + break; + } + bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + bgx_set_dmac_cam_filter(nic->node, bgx, lmac, + mbx.xcast.data.mac, + vf < NIC_VF_PER_MBX_REG ? vf : + vf - NIC_VF_PER_MBX_REG); + break; + + case NIC_MBOX_MSG_SET_XCAST: + if (vf >= nic->num_vf_en) { + ret = -1; /* NACK */ + break; + } + bgx = NIC_GET_BGX_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + lmac = NIC_GET_LMAC_FROM_VF_LMAC_MAP(nic->vf_lmac_map[vf]); + bgx_set_xcast_mode(nic->node, bgx, lmac, mbx.xcast.data.mode); + break; default: dev_err(&nic->pdev->dev, "Invalid msg from VF%d, msg 0x%x\n", vf, mbx.msg.msg); @@ -1094,7 +1130,7 @@ static irqreturn_t nic_mbx_intr_handler(int irq, void *nic_irq) struct nicpf *nic = (struct nicpf *)nic_irq; int mbx; u64 intr; - u8 vf, vf_per_mbx_reg = 64; + u8 vf; if (irq == pci_irq_vector(nic->pdev, NIC_PF_INTR_ID_MBOX0)) mbx = 0; @@ -1103,12 +1139,13 @@ static irqreturn_t nic_mbx_intr_handler(int irq, void *nic_irq) intr = nic_reg_read(nic, NIC_PF_MAILBOX_INT + (mbx << 3)); dev_dbg(&nic->pdev->dev, "PF interrupt Mbox%d 0x%llx\n", mbx, intr); - for (vf = 0; vf < vf_per_mbx_reg; vf++) { + for (vf = 0; vf < NIC_VF_PER_MBX_REG; vf++) { if (intr & (1ULL << vf)) { dev_dbg(&nic->pdev->dev, "Intr from VF %d\n", - vf + (mbx * vf_per_mbx_reg)); + vf + (mbx * NIC_VF_PER_MBX_REG)); - nic_handle_mbx_intr(nic, vf + (mbx * vf_per_mbx_reg)); + nic_handle_mbx_intr(nic, vf + + (mbx * NIC_VF_PER_MBX_REG)); nic_clear_mbx_intr(nic, vf, mbx); } } From patchwork Tue Mar 27 15:07:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Vadim Lomovtsev X-Patchwork-Id: 891665 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=caviumnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="lqp8u0Dw"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409ZDG3mWRz9s0n for ; Wed, 28 Mar 2018 02:09:18 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752703AbeC0PIC (ORCPT ); Tue, 27 Mar 2018 11:08:02 -0400 Received: from mail-dm3nam03on0071.outbound.protection.outlook.com ([104.47.41.71]:25088 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752686AbeC0PH7 (ORCPT ); Tue, 27 Mar 2018 11:07:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=hT27zMpaPwJFvaNwY0360HpmkZfT7kTc99WCJkAHui0=; b=lqp8u0DwT9VowjsxBkfYUqdAqE/xZwRJdkSpsz5ynX6+ebGJ8lPgRtt16r8Mu2DTyp1Ja0UXw1yX5SxCnTauvBDWEkK7gY+knD4BtekMZxyVHgwQ3dUTqbIFvfSMY+jlRwpqwFCUvpD5/FbQNkhFrAIL8C0GSie9tU1ZUEBeFyY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Received: from localhost.localdomain.com (50.233.148.156) by CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 15:07:52 +0000 From: Vadim Lomovtsev To: sgoutham@cavium.com, sunil.kovvuri@gmail.com, robert.richter@kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dnelson@redhat.com, Vadim Lomovtsev Subject: [PATCH 6/7] net: thunderx: add workqueue control structures for handle ndo_set_rx_mode request Date: Tue, 27 Mar 2018 08:07:35 -0700 Message-Id: <20180327150736.10718-7-Vadim.Lomovtsev@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> References: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: DM5PR20CA0003.namprd20.prod.outlook.com (2603:10b6:3:93::13) To CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e0e9e9aa-8d7c-4fdf-7aa8-08d593f48389 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 3:uDOpFYeVO0GCXXycxuYOc9NiBjbMzoU1U/S+oFMLzETHlyy9LRg1ScXWVbMD62071ZD79tOFCqKHaPrbJykt/GO7HqtA1bh/l0UnQxIDYO8EMAJ8I9sMjUKJNJTHPAVF5bWXzmIZK7xyL00whqDb9t3CgWevopfAvIeu2xknQ2hZ5UZchuCQY2m/l6bnq/jtS/EjZPyyAx95adOGi1Mzc01H32ScvmIzneNN6E65FT+TQVRr3ZqGqIlLok+sO1Bs; 25:DyDDoz7v1gpE7FJzqKpK+RIlLKkJJn4ynZqtwobi8JgJXfmsi5+aVF/lAwNVdJYnApjZFIc94NrKz3sqhZJMnjdK1+IkQSq94bSHpQecNe2KcOY73crO1s8EVb1xg9rOhwVybVclfSZwtJ6qLeOX8eeCN3dTWIKJ3fQxX2Kp+GlhrdM5jYqj/HSbgmlf69CVU2B4LK7Rbq2pjOnrnIWT8pSHK+9gTsjl4Xql+MC08rNZImeLzrpIFyTOt+o5iztShuXbQtxBNWavzgnfNRezMH761rKiqp6s22dSOY+ba4dq/nU8WIQuNBNeZpxirWw7hs9vCCRdiPPd4nLDNcKeSA==; 31:VjEoHxHyhwlGWD54BgNHNr51jFEGW7wvz28EZSPcwhQTbgD9zPXKapGY0QoxP3bdLOMaJQlhqD0Ndhey28b/6WajOWo0TXQdY8D2iCx8q60/gVdVCT1WtewL2/UX613OyIhN8/SGpil/FlGm20sVhLiRYn7QQ5MQl/+Pt74cNX6EutOl2tVAMmg8xpnJPHUFqnHZ7p8LCwe1QwE8RtA90TlMp5vV44a37KfcjN6rBSA= X-MS-TrafficTypeDiagnostic: CY4PR07MB2998: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 20:tA5FcI2FwUtFf0aoLrdq8R4VHcEN5Su1I3VTpv2Wcx2fVgAHkF20upH1sBDnYPnh6VVmH2xq7x8GaIZtD5ZgoG1hw5g4CaxHf7jwEY3vUly4AEdVfiFDBpGOsw1aP4TSx4TIO3bnWME/14jL3w3dqRpJrEhZMwB/OyHK3DjbArgV3Yybx7odhuzx/dt45km8bQur9phMxIeU2G42Dakb6DJpLY6Vijl5xQ6pw9E5RCQyhY+G+P/CaYMIUWjgZndWVIsHNv0bqYrcCcJORz8cn2s/ixGOv7jN7rsbFqkynWpZZrrkldfUq3WFSQ2W5J6da/b9kSvkhXhDcmJj33lIqe51zPGxDKQJkJxeKzRP0O94wzCvs7UJFM4p57/dgFZYN4Pzfwje3xxfHyR0rbjTv8LIvJvkPYOTqHBY8E5/SwWMfE+0bLnL7bao5OXxGZ8p/B7pWVexl+PfzlrnRzR3ZvrUKik+B/7KuBB4mbjdcfmRCyJZnLn+dSLCE1O48t4YEckEzavpNr12q27eD/nA3CgzAhZ9MNRDPbFzwZsy2yAndbG8dXyN7Mgf1ZNMYRngFVoiisExWqSccfG+x3jH5QzjYMQCkNLi+inKugWkC5M=; 4:TIAwF0DEw2Q5Jad+LZkgDwQy2rzZbgSwgqrl195GgkkHO0WHx55gQGxknu743V7UiguNzQs2vmviDCSybMZYhcj3oK2ISUl7bU9Ee7L410g89KPpJmCvD2qnRFPnGMW2X8ecJlsrYah3bd4tVaXKRiSBiQYBC6yjA+uLTxhBkx5YOpjcBlI+82mznLa2U0iWQe/ZfCQtO7xauTJ3VUQ3fQ5yN4UmGMNmHxh9e0kTHcyVbYDnR3zfxyf+IJIOQ9nIUPFBQVMH9FladEqHO45R3g== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB2998; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2998; X-Forefront-PRVS: 0624A2429E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(346002)(366004)(39860400002)(396003)(39380400002)(376002)(189003)(199004)(446003)(2616005)(6116002)(478600001)(1076002)(107886003)(3846002)(6666003)(956004)(97736004)(39060400002)(50466002)(7736002)(53936002)(16526019)(66066001)(47776003)(26005)(486005)(486005)(6486002)(6512007)(316002)(305945005)(11346002)(105586002)(42882007)(6506007)(386003)(68736007)(59450400001)(69596002)(106356001)(72206003)(25786009)(2906002)(52116002)(53416004)(76176011)(81166006)(8676002)(36756003)(476003)(2870700001)(50226002)(4326008)(5660300001)(81156014)(23676004)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2998; H:localhost.localdomain.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BCY4PR07MB2998=3B23=3AG4AU?= =?utf-8?q?J2OKhXFKfSrQFZJcie41J3zvUPi1JA791GqKZEDUvZYnAmFvGdMtO1yV?= =?utf-8?q?O0ZI7Y1QoS7B7c8XuIpG0jgJuywMEvHfl9wx+selL12N35mfws+xsLmt?= =?utf-8?q?OnDLKpsaz3lW3kUgp1kZ4qaJ7Kkiw/mrpp1LSIVrdshUWYfcCXkLxaNn?= =?utf-8?q?uDUfitDyA7Tce8AqxIvcHnacnEHFsPVaAcp9YmWCOnYnUwg4lUtLFYWn?= =?utf-8?q?iT5CoApJFQxalvajFLExSW47X+FnTL3yuZZVuQs6xehwQ9T0KDOwrrMu?= =?utf-8?q?+lp5d+uc4X3NoiQ8XeXl/NBXtxHsMV/M4Z/FZ10o0UBEWMzMYcrsO2pm?= =?utf-8?q?8QTUHIBZEbCl9FWqWIbwJnlULd1FnIIAoCPIVFJggZ8Oz41o/PLLqAy4?= =?utf-8?q?3hXynseLZBTSVuDcrLon7IN6s3IU0gczyxrSEoZgkSHTb2ukvwluiCM0?= =?utf-8?q?7/ZtY1K9IMzpQzNGBjLuoL7VtWatR/jEOhyLrgwpj4EoNyad4NfXsZPm?= =?utf-8?q?TZqwUj165pF9G1NMatz13UBkUL2MQ2yBUBf8GmpLvjgjsuyq+JTR3WS3?= =?utf-8?q?SD5/ee0J6xIY1O5v1ToyucyO/ln6k55oHYc6uiAgvT+UKB+SFQuOkjjL?= =?utf-8?q?pLHugh5Lh4Ayt6zWb8JdwAfJiO3zvS9XSL6YLTpZ6DHW19BfIZ2nl8ch?= =?utf-8?q?EwFw+KdeAKD+shcYyEnNGGnRVaP/JXluSTu11s6uFAoY8CDe8/HUt7uP?= =?utf-8?q?DyTOaKgEAohxPTtY/fr2K5U9cxf84r+M+gSSykX0QvpHCzmaatqLGr0Y?= =?utf-8?q?X6vwGVbhD+jW37jCmUUU21oaVeu8nTPTFRya2lCsg52rlN1VuR8V0xdd?= =?utf-8?q?/MbgO36knJnhYGvUwt0TeHS+j/Z94G1jD0JX743bBCPmWXLdAMhKOar9?= =?utf-8?q?fl94ADvuREr5TtqAWffgwjPvOuYHT8SXM4Rs1BproBsw4BEIrvCRE6Ys?= =?utf-8?q?LcNCR5KzWSF6JbPnUn1jHacS4aTpOdE/Wp2SvQkAmijnlQMym8efb3fA?= =?utf-8?q?bp9vjJCSAIrdjsskMkBTJiEbniJ/cYaDT2pUevw0BB+vXXtnWkjhIuV+?= =?utf-8?q?nZoPtFm/cPORjV3br+s5mT4Fd6DMh2zMyE7vulbkqd92WOmVoSvFnFIO?= =?utf-8?q?mUY80D9TiGGDwAlleduNIWwXwq97pu43cC8Gq0Ii1fry4vDOJx1f7HY1?= =?utf-8?q?mjL9aDi+zODnjDl7/c0/wZUkY4RTQhUQQfg/dirLzvqebIzGsYXtWnLR?= =?utf-8?q?ULWGLIW+pbJ/keahU4N10i+TXhsGCMN7J1l1A6MBqXLuO/tDIe6nOfb3?= =?utf-8?q?NtGFQ0GLls9JNR+GnJ2+V4r1SFPvqTI=3D?= X-Microsoft-Antispam-Message-Info: I/Govw+cIVkeWxQTA3tnKerl5XTvu66KBjLW6Sx3XS7jHOhqHGs3kc/hlG4HTHembiiPMxUvh9yjcpY04+1uwyGwkX0cWV2zJb6qhw930A/+hwXqloAKGphcXTA7DdgKiyI595cEWEPWd/ydWUCAlXNY/Ry+OXALZXEAX77S7SN0XhFGw/wC99rRSayFLmex X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 6:Mb0TrQJievb6SZqh8iKGH5da/hlBHowOWi8fMXKlRGQ1MmRAOXIBdeD925BSnw29+PrT9QHejHOUaK7BTZGxQ5eIVeZOEn3vg9rfM8t1mDAD/59nUYz+XoVjsnsGBILyOeFSy7YEwJbrSo7/hZNdmygzuSbMi9ZgmAi4SwqMCnFupbPTIlAvMfIqliMKlJ49FPRdrlDWPC1/2yNohH+K0U5Wji3quN5myMRMvMyaK2j/gnIaAfpZwafvUbvyhd9FF8LPv8HiP7nVN/rk1uyJvmZV9qBGbQALpUZQA7Sb5luFs9YQp8LdkTqj0KFyaIT7uwKel8MKnPYyNiXB1zP1YNiF2YkPZm1AMD6QhLHQoij89H5IOD2u8yhTSmEgMTo/swsebu+6E89nn6FGGdD+I/9X56tUMfIPxbUkUfqgw7CNko1PouNrxLLe6aFtfMpIoD3njKlRM2tH4CA7WaD24g==; 5:LFKrTjeZVsMlIWig3vf0xBwFXRMWpuYM5dFTDzK7CAFeaOnewjkWn43d2eLc6zYz1RmrgkVe7pop69zkvJY8VFfG++o2XP8QkmhCku9HJg+LmiqstNXFKSZuel2bxINfQ+LbRPakha3/21Z6FOQgeRDWYeQ72qRRfIG67y6Ev+c=; 24:mSNhl9t1T3NB0OM+o+0BeAwqkZX/JJOHqgGBKtW/l7Vg6TCIEgWY/4P0BpZrdQkbFHbkVMJV/+HFmpLhq2AhtvxtYodwwIq44+mAkTU98Xw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 7:e5U6kR4Xfy5BNAyCo7cqLapJ8bqK2f3oPCcu4HtRuhXibHPyafVZ9ZGeT1VaBpQisg3g94IX6J8V1JNkQImKCb6PKAfGSd8xkoESUdFzcL2D+5/7+bPKIjH76UDpI36plc4rbtU3GFVHkQG4sywFe8frWvPOgaoxsIcQmWUcZK+TKRmlyE6vOkPyUqwrGVljxLYaPJCGQFEKszQDipGS1JP/wkkdI2oqr0RwDwtmXYSNJE8DYeI4KfdsNHV5Bgbf X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2018 15:07:52.4671 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e0e9e9aa-8d7c-4fdf-7aa8-08d593f48389 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2998 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Lomovtsev The kernel calls ndo_set_rx_mode() callback from atomic context which causes messaging timeouts between VF and PF (as they’re implemented via MSIx). So in order to handle ndo_set_rx_mode() we need to get rid of it. This commit implements necessary workqueue related structures to let VF queue kernel request processing in non-atomic context later. Signed-off-by: Vadim Lomovtsev --- drivers/net/ethernet/cavium/thunder/nic.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/net/ethernet/cavium/thunder/nic.h b/drivers/net/ethernet/cavium/thunder/nic.h index 069289b4f968..5fc46c5a4f36 100644 --- a/drivers/net/ethernet/cavium/thunder/nic.h +++ b/drivers/net/ethernet/cavium/thunder/nic.h @@ -265,6 +265,22 @@ struct nicvf_drv_stats { struct cavium_ptp; +struct xcast_addr { + struct list_head list; + u64 addr; +}; + +struct xcast_addr_list { + struct list_head list; + int count; +}; + +struct nicvf_work { + struct delayed_work work; + u8 mode; + struct xcast_addr_list *mc; +}; + struct nicvf { struct nicvf *pnicvf; struct net_device *netdev; @@ -313,6 +329,7 @@ struct nicvf { struct nicvf_pfc pfc; struct tasklet_struct qs_err_task; struct work_struct reset_task; + struct nicvf_work rx_mode_work; /* PTP timestamp */ struct cavium_ptp *ptp_clock; From patchwork Tue Mar 27 15:07:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vadim Lomovtsev X-Patchwork-Id: 891666 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=caviumnetworks.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="O4Sr3PTr"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409ZDj01v1z9s16 for ; Wed, 28 Mar 2018 02:09:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752530AbeC0PJ2 (ORCPT ); Tue, 27 Mar 2018 11:09:28 -0400 Received: from mail-dm3nam03on0071.outbound.protection.outlook.com ([104.47.41.71]:25088 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752689AbeC0PIA (ORCPT ); Tue, 27 Mar 2018 11:08:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=fcB1QEH4gZEClRddeKfhcigdu5MdhvPEd0ruZz8/y98=; b=O4Sr3PTr7Wx2PqrmSkStfw+j9ozM2ovtttbQYpRc5XX+MgzL4S6eJHxPQWzJaUBt0cRPsO7m7O5Z9rSevaG4krEyLwUV8PYuQb+atCIJ9DYEQYh9ldLOl2vsqiGSMcHQV0dM9lIGt/ErOA3ya1MY3mFVeIMeiNyORimETKkw+sM= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Vadim.Lomovtsev@cavium.com; Received: from localhost.localdomain.com (50.233.148.156) by CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.609.10; Tue, 27 Mar 2018 15:07:53 +0000 From: Vadim Lomovtsev To: sgoutham@cavium.com, sunil.kovvuri@gmail.com, robert.richter@kernel.org, linux-arm-kernel@lists.infradead.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: dnelson@redhat.com, Vadim Lomovtsev Subject: [PATCH 7/7] net: thunderx: add ndo_set_rx_mode callback implementation for VF Date: Tue, 27 Mar 2018 08:07:36 -0700 Message-Id: <20180327150736.10718-8-Vadim.Lomovtsev@caviumnetworks.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> References: <20180327150736.10718-1-Vadim.Lomovtsev@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [50.233.148.156] X-ClientProxiedBy: DM5PR20CA0003.namprd20.prod.outlook.com (2603:10b6:3:93::13) To CY4PR07MB2998.namprd07.prod.outlook.com (2603:10b6:903:d0::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 27f044d1-4fe7-41ec-d6a1-08d593f48407 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(2017052603328)(7153060)(7193020); SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 3:MVeJrgDVL0JjoYrVRK1V1low1fRluaXKJ0VXqjkUyKIXgrBTZAJ2goaBfcHFtZk0hIsdUKXxiZsnaCjX5JV3HLzQUrt8uodygZ4ldRrh9gpMhk0PyVvY2QbH2BN6Im6hjqr1Seximo0GQXf8vGDsP9LKwP0IZTtShmyqKVJ2QsiG2+QRxjz21fRmuE7FzsKEnV2I9DwUxqQdghy+QpbNLBRNuXKF6PN1RLERCs3vEudPrFHvGkldbSukCopRnoH8; 25:TCcQzUcnE4AfkpVJdz6ANGwd/7HBfvEaD+RaB6h1kQ4y7ILp+nszY1ePxbtL3IBdIo8+uSfULouRIjqkvQfbq2rTbhVlGGncFc06wcSagL+hiPB8SP2gwG8ml6EGBUCAnz/ryxv3EIPNFJXwY9Ehals4pKMrGqzAvZ/38zPHxOrQwC/eKuKAiesY6cWjxcSJ8yiWU8hZUhYwsQW3iBxrW95mJpmDYXmlq9gNdf6mUyAHNqbI8LPo/p6xyRc6gqRCYYpnJgwTYyEYVcXa5TRjP03RHkJGtqyWM1PGAX73AyIhXCMjebffo52D+7pr3rzmDCZ7jBVZgFkXxKVIpr9S8Q==; 31:hqYQFbDeKlY8fCSJBbKfH2Q2DVF3dCjQapf/93IfYcZtO2jGcGKZ9swljGrpgGrk0l+DTlynnmXEnbOADmPEEJC/JbPqKeDIpKS1c1oU+DOVdxI2AtaLqIkS1PCO/QI3ZCfYv2/cQXSJK4QXIMoKBmcgEehH/Y35LfoQqeJ2LYz6xWSJ0dq3tEcpCOvSmUs8MLHUC3qeVJ5/JnXjqDFINhvHsOR27KiNQLw+KkUtsHg= X-MS-TrafficTypeDiagnostic: CY4PR07MB2998: X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 20:k/vcx+t8KqQHsUk4+7FOYcVyHQhyub075LzFeWtWU9g/BXTkGUWNoU00okiTQnp90VfcJcVes4yyHT2hc5R070vB/3JwB21GyahJWVjjfb5j071xIxgU6ZOAI/UimqDXW+qt00AYnGE+i1sLPbbx9FDaADeObUwIEemfs5mQbA76CxcIJTjApL5Xr3htkHIJTIjuHcbBqdi/pxacMh6P8BxjK94kF5reIFbW1S3kl15yBBRw4RiJ8dbehbxUoaTqQRzQH5XyAzhJDdbro68OYiDgDSrk0t+YIrSaeeLr9MJtjhpFScisjWbK70FpDdVIPlAPhZAJidCNfsQwx5TqFn1GWYJ/AXSz/Yzcw8EHElD9XCo6auZtBirA7cXDS1NDq2YU1e1J9sBZ43jhd+2f/jy8+Ar/nXxmrt9+GzEkxszTs5CQZguiVUd21TqhQGKOL8bbr9muw4RPATW5V1HbIe4nu7JN2kD0cWjfzY90bgX9TO4nA6/F4m3NURtyeg8ba7ZTg6jW+0cg0vPA3X8Qmud8LQFW2BWYZlQHTaoFOJycWXDKc0Ncft8RxCwlU+Vv3qYq9TXNhH7naMKNmkDxwm8NdwY904FHfV8g54S36Yw= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(277106579953875)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(3231221)(944501327)(52105095)(6041310)(20161123560045)(20161123558120)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB2998; BCL:0; PCL:0; RULEID:; SRVR:CY4PR07MB2998; X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 4:Mmzzkhhos+QJD8G+EkwFypctIh6Z1gFYDAtfsY/wh0MWbvZIh8OiFCJ+s0tcj/rwrbCkSu57JpjVHeaAGi/kchPRPOgrIgkUB5o+UBq2vP+8aIw9mHX1rXC1vrWMRbkpPuQenNPqANValqlHGzWLgH756s2kcpgIdfHQhb5K93FqjxevrqO7PFStHG52flYm84X9fAHm6IMBTpoYQ0P8eMrP9iLB3uWhKMNnrHA6gcvd498UCqM8pvvbgzAQULogyAZ2y9xwWq+JPYOl2Vhfim8UTP5ni3RsLwldxflJ36nNsfAYA1no8pz5WPm8ZFs0GgAa2/8lVIYMiYFKzLWRfD+NqwOWmHDh5EBJdGPgsaE= X-Forefront-PRVS: 0624A2429E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(346002)(366004)(39860400002)(396003)(39380400002)(376002)(189003)(199004)(446003)(2616005)(6116002)(478600001)(1076002)(107886003)(3846002)(6666003)(956004)(97736004)(39060400002)(50466002)(7736002)(53936002)(16526019)(66066001)(47776003)(26005)(48376002)(486005)(486005)(6486002)(6512007)(316002)(305945005)(11346002)(16586007)(105586002)(42882007)(6506007)(386003)(68736007)(59450400001)(69596002)(106356001)(72206003)(25786009)(2906002)(52116002)(53416004)(76176011)(81166006)(51416003)(8676002)(36756003)(476003)(50226002)(4326008)(5660300001)(81156014)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB2998; H:localhost.localdomain.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 23:PRqogMkxWg1VdqnmphcRW+/CH+9YC9mxcQUEexClawWcDFEPlLoX/U1IhekGlhbm9sgH8xQN3CP9OsfBlLN1FurW5EXtBqF7Ae/8DOC+URoC4xbFTBHEvG4mO+A35kHgGiLBkG7meAdZ1FH/qSUg7zrXcARPSG1BEhDJtpRJnPzhwJ/nAogtn/fQMJst3zriISJDR43j1Y0dnmj9TyBN3wwbpDzCKmrrvrneMSgBokZWpfdwadhZYHJIvOUKb4Tl1F0YHXnKBSvWIKyXfejZSufsbj1RaBe1as0ECY1i2zQbWZjViWBXr3T3ZRHMcmn9QH9HZKQ7tszQDkmVI47vUe1x9LOVtyqNJ4kftXWcC0sberA2oWvfEdoB2pZg+kq12ylQ1abUXYXEdqFaP/F6giNHTvRxuH9W5nR765RSuKznbDYbmehEgdeRQFtGkLe1oBugDsGkV/n+kdxT4QhO6PwkDCGgSZfAr46VqwZQ6aN0lV5u8FNPfj2FRTLwiC7f0AF+2vOadJc20I05cAguAYkiNX2BW2e8Wz8Y4vo9JZM8zJdJiluEFCi4TIKmiThCFMmbx21ZuKl3qTa901WKnoZBg5bnOIYrh49ZNiciplL28A1iPVtc2wZShS0myFd5/DCPBbKYU7b0XUFe0B27ncpTlWTkoHPOXZ/5k4kiayRU4L6zSDnXQYyI2y2arJiQDknSdgmpg9dR6jbH0/i9HC+nQp/4yPTtG0Q8pGpEPNahWQo3s0UMWYzJbTzdXq8ozw6GkDIx7NY/tHZ0dqOiMONv/cGQroB2IVqxU6pXallGtvaW8rqeoYkymi0O5QIXscz/JJdxVh6G4N4QlJRYDbhbxlxEdpNRz8MP6H6a62KnpuL6aUA0xRCOzsQltqqqBedJ6KjrTuJTFzOGe6hbRfwp2spBQRSDjQXLsQAWRdCW+7rqJL4iBtz7beLEq0V0APo+f2SYJXln6IdIrbOqumaQb7iIWFSL5Bjr1ccNIiw/o4oe16hRhVuFvURoCplc9P2Ajqom2ZWuV22qSqocyggu21l0BZAKR1Ydot3PZAjvp4G0Xx65+KPSBa7204VTdaJ1Z1VkByp6PZSHnF1iWTDjMyagvxe+gTIzkesu2c/q0mTBdlSUqkO/aIROOSAsgehkDsreKwMj6GUah5i7egV9a/l1NENRePoVwf/l/Fp5vYMeHuwv4YARVwaPwbsNaOArK3g8jzK65KizskgrWNWfloChTCBhEXehsHZneocNc7zKqMSBvrbcH3hSLw1YJIeAHrUQ6ZeeyifwCrVFdmNlXCGpXxqR8NI0ifSmXDSqMSPbt1HIib548DrWuJzY X-Microsoft-Antispam-Message-Info: 8cUg4ZySZbhRfXfIKT6al9aslzOlGx7vhKFOwHuP9LlI0BqHTKs0l7vtw5X8d8q7YAupDhSriBg90RVLAf/GRC0QIJATieV/yHlncfsanbDBlcW3FIZw6aoYU4QwtEN0tAnkCww+9gYKh+Za3hXALfCmjnFD798y1kqNTLzlbjPJFn5LepdUCnybldEK3hQL X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 6:qWHYDKVoPHyzBUye0aGQD6cctpb+hgaATRDJrimDkqKkLx+fXExUHY5drz85c48gqMEht2ChrmgcjGHYhf1pYYF+IVsm5C7+iDT+h7WaEVSmN3biGXsrxB4PD4kL1M1LfoDgjRYm/CK1bx/Peslk1TsV9qmYaPpdM/FwKYbvjhkvbAPQu+MtzxhzxGRAyqJRUo4yfFDOBXCuJxJuSOG2ogfEuGF3qb5seJ866D9eLB0bBLFSDnh/Y3GRAmUO+OR+NE1I9QkwNPlxQFBupyikO+vWal93F+Tg6Q3q2EKqdaHFBPhHEVWzFyr+F/52bZioXvNCrsybsAQuuXrrT9RJxueg5z6LSGVQjUPo4HLkYz5OxCMeHcZV1xA3KN754/j7yj4dR5kjJDJcfjYD22XeTbRZILVP3oySiKdHwKk92LbUZdBUPnzUF+tMnTfg+ldqt+2lLWRQZpnYIgwTTI/C7g==; 5:IDbC5YL7rhUW1WU0tL86QTJ10pI2skvtvNoySl02qjGaq7kUNTO6lPA3w747n0jZUFW/tdahXlf7OBzclJ9+964WSzfGBhVMjMUwWJZUKHT2MwJOEpqPZ5R9UuJ8hwIxv/B8/L0mD2GfUbjWiZyAf3YPzRbZxyVT1FKaS8mnXl0=; 24:JoQRzDakV9TeKccpr3JNq4qQCN8rCgetxGc1atY2qEwctpkdMbAHRsVaWetTJfxXaGI3ceGmyWaXR6Rz+g+YYJrOzkutXfK5d7pFSe1Icrk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR07MB2998; 7:5ysBPU+dElnet4cCreg7OecSMeaHgN20IGC4ASRprIK6G1BHZIFu1owDLocwGHtBxAqtuvtvulFqdFcfNleBHZI9irzQkMizuPdOf+9Q5xYmh/dXnY+auVeViTctbp328PNqD30asAZamRwRTg67iWYnLCljbTIMx+VCC+t6zc6HQdWH5YFNUcPasw/PJi3TeHsL5DA0NrTyMxaA8vMIAuzpnZ54fCkZJueeG6HSIl3qPnHjwqPcAwFq4kyd5/jd X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2018 15:07:53.2952 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 27f044d1-4fe7-41ec-d6a1-08d593f48407 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB2998 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vadim Lomovtsev The ndo_set_rx_mode() is called from atomic context which causes messages response timeouts while VF to PF communication via MSIx. To get rid of that we're copy passed mc list, parse flags and queue handling of kernel request to ordered workqueue. Signed-off-by: Vadim Lomovtsev --- drivers/net/ethernet/cavium/thunder/nicvf_main.c | 108 ++++++++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c index 7d9c5ffbd041..0d4bec927623 100644 --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "nic_reg.h" #include "nic.h" @@ -67,6 +68,9 @@ module_param(cpi_alg, int, S_IRUGO); MODULE_PARM_DESC(cpi_alg, "PFC algorithm (0=none, 1=VLAN, 2=VLAN16, 3=IP Diffserv)"); +/* workqueue for handling kernel ndo_set_rx_mode() calls */ +static struct workqueue_struct *nicvf_rx_mode_wq; + static inline u8 nicvf_netdev_qidx(struct nicvf *nic, u8 qidx) { if (nic->sqs_mode) @@ -1919,6 +1923,98 @@ static int nicvf_ioctl(struct net_device *netdev, struct ifreq *req, int cmd) } } +static void nicvf_set_rx_mode_task(struct work_struct *work_arg) +{ + struct nicvf_work *vf_work = container_of(work_arg, struct nicvf_work, + work.work); + struct nicvf *nic = container_of(vf_work, struct nicvf, rx_mode_work); + union nic_mbx mbx = {}; + struct xcast_addr *xaddr, *next; + + if (!vf_work) + return; + + /* From the inside of VM code flow we have only 128 bits memory + * available to send message to host's PF, so send all mc addrs + * one by one, starting from flush command in case if kernel + * requests to configure specific MAC filtering + */ + + /* flush DMAC filters and reset RX mode */ + mbx.xcast.msg = NIC_MBOX_MSG_RESET_XCAST; + nicvf_send_msg_to_pf(nic, &mbx); + + if (vf_work->mode & BGX_XCAST_MCAST_FILTER) { + /* once enabling filtering, we need to signal to PF to add + * its' own LMAC to the filter to accept packets for it. + */ + mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST; + mbx.xcast.data.mac = 0; + nicvf_send_msg_to_pf(nic, &mbx); + } + + /* check if we have any specific MACs to be added to PF DMAC filter */ + if (vf_work->mc) { + /* now go through kernel list of MACs and add them one by one */ + list_for_each_entry_safe(xaddr, next, &vf_work->mc->list, list) { + mbx.xcast.msg = NIC_MBOX_MSG_ADD_MCAST; + mbx.xcast.data.mac = xaddr->addr; + nicvf_send_msg_to_pf(nic, &mbx); + + /* after receiving ACK from PF release memory */ + list_del(&xaddr->list); + kfree(xaddr); + vf_work->mc->count--; + } + kfree(vf_work->mc); + } + + /* and finally set rx mode for PF accordingly */ + mbx.xcast.msg = NIC_MBOX_MSG_SET_XCAST; + mbx.xcast.data.mode = vf_work->mode; + + nicvf_send_msg_to_pf(nic, &mbx); +} + +static void nicvf_set_rx_mode(struct net_device *netdev) +{ + struct nicvf *nic = netdev_priv(netdev); + struct netdev_hw_addr *ha; + struct xcast_addr_list *mc_list = NULL; + u8 mode = 0; + + if (netdev->flags & IFF_PROMISC) { + mode = BGX_XCAST_BCAST_ACCEPT | BGX_XCAST_MCAST_ACCEPT; + } else { + if (netdev->flags & IFF_BROADCAST) + mode |= BGX_XCAST_BCAST_ACCEPT; + + if (netdev->flags & IFF_ALLMULTI) { + mode |= BGX_XCAST_MCAST_ACCEPT; + } else if (netdev->flags & IFF_MULTICAST) { + mode |= BGX_XCAST_MCAST_FILTER; + /* here we need to copy mc addrs */ + if (netdev_mc_count(netdev)) { + struct xcast_addr *xaddr; + + mc_list = kmalloc(sizeof(*mc_list), GFP_ATOMIC); + INIT_LIST_HEAD(&mc_list->list); + netdev_hw_addr_list_for_each(ha, &netdev->mc) { + xaddr = kmalloc(sizeof(*xaddr), + GFP_ATOMIC); + xaddr->addr = ether_addr_to_u64(ha->addr); + list_add_tail(&xaddr->list, + &mc_list->list); + mc_list->count++; + } + } + } + } + nic->rx_mode_work.mc = mc_list; + nic->rx_mode_work.mode = mode; + queue_delayed_work(nicvf_rx_mode_wq, &nic->rx_mode_work.work, 2 * HZ); +} + static const struct net_device_ops nicvf_netdev_ops = { .ndo_open = nicvf_open, .ndo_stop = nicvf_stop, @@ -1931,6 +2027,7 @@ static const struct net_device_ops nicvf_netdev_ops = { .ndo_set_features = nicvf_set_features, .ndo_bpf = nicvf_xdp, .ndo_do_ioctl = nicvf_ioctl, + .ndo_set_rx_mode = nicvf_set_rx_mode, }; static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) @@ -2071,6 +2168,8 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) INIT_WORK(&nic->reset_task, nicvf_reset_task); + INIT_DELAYED_WORK(&nic->rx_mode_work.work, nicvf_set_rx_mode_task); + err = register_netdev(netdev); if (err) { dev_err(dev, "Failed to register netdevice\n"); @@ -2109,6 +2208,8 @@ static void nicvf_remove(struct pci_dev *pdev) nic = netdev_priv(netdev); pnetdev = nic->pnicvf->netdev; + cancel_delayed_work_sync(&nic->rx_mode_work.work); + /* Check if this Qset is assigned to different VF. * If yes, clean primary and all secondary Qsets. */ @@ -2140,12 +2241,17 @@ static struct pci_driver nicvf_driver = { static int __init nicvf_init_module(void) { pr_info("%s, ver %s\n", DRV_NAME, DRV_VERSION); - + nicvf_rx_mode_wq = alloc_ordered_workqueue("nicvf_generic", + WQ_MEM_RECLAIM); return pci_register_driver(&nicvf_driver); } static void __exit nicvf_cleanup_module(void) { + if (nicvf_rx_mode_wq) { + destroy_workqueue(nicvf_rx_mode_wq); + nicvf_rx_mode_wq = NULL; + } pci_unregister_driver(&nicvf_driver); }