From patchwork Fri Dec 7 14:00:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Russkikh X-Patchwork-Id: 1009434 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=aquantia.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=AQUANTIA1COM.onmicrosoft.com header.i=@AQUANTIA1COM.onmicrosoft.com header.b="eJ6n8WuP"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43BDd66TL4z9rxp for ; Sat, 8 Dec 2018 01:00:26 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726117AbeLGOA0 (ORCPT ); Fri, 7 Dec 2018 09:00:26 -0500 Received: from mail-eopbgr820054.outbound.protection.outlook.com ([40.107.82.54]:25379 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726041AbeLGOAZ (ORCPT ); Fri, 7 Dec 2018 09:00:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=AQUANTIA1COM.onmicrosoft.com; s=selector1-aquantia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=y6vCsFBhz4RuAJvFfh10gd22EI8Hl5onB84qEUrvNEI=; b=eJ6n8WuPDs64oyfV+ze0tI1T4uDmvsXwHXWOeWS67RqxsQhCTj6Yr1UuFYTg86GRAEgAmMnvjf1hkvHx6nXdgKCY+EL6jehYh8mIqivG94QFRCHRpMQOLnRLs1eQ74uYrpBOwLfOnyqs7iWnQ3YbD6zEtX1UYbGpB6o45YtBrIo= Received: from DM6PR07MB6220.namprd07.prod.outlook.com (20.179.55.97) by DM6PR07MB5787.namprd07.prod.outlook.com (20.178.3.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1404.19; Fri, 7 Dec 2018 14:00:23 +0000 Received: from DM6PR07MB6220.namprd07.prod.outlook.com ([fe80::9d23:ba09:343:4aaa]) by DM6PR07MB6220.namprd07.prod.outlook.com ([fe80::9d23:ba09:343:4aaa%4]) with mapi id 15.20.1404.021; Fri, 7 Dec 2018 14:00:22 +0000 From: Igor Russkikh To: "David S . Miller" CC: Dmitry Bogdanov , "netdev@vger.kernel.org" , Igor Russkikh Subject: [PATCH v2 net-next 4/4] net: aquantia: add support of RSS configuration Thread-Topic: [PATCH v2 net-next 4/4] net: aquantia: add support of RSS configuration Thread-Index: AQHUjjUyFZCaT202sEOIp2kFyl2pxw== Date: Fri, 7 Dec 2018 14:00:22 +0000 Message-ID: <10322d5bea074a446822e3913d3a4b49812557ae.1544190020.git.igor.russkikh@aquantia.com> References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5PR06CA0006.eurprd06.prod.outlook.com (2603:10a6:206:2::19) To DM6PR07MB6220.namprd07.prod.outlook.com (2603:10b6:5:17d::33) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Igor.Russkikh@aquantia.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [95.79.108.179] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; DM6PR07MB5787; 6:nRZuoT31CgEydaKIOuKJcuS2U1lhGQA+8+2Otu8dGv8t2d8shzxcy1oDlC46doto7YIWbwLNQ8dzm1XYVSO8nxYivyF8A/SOEtjz+Lj9/pcjbpmYjzKBQy1p3AxsM69XPSm2E+WBw0ySufZmGoKMWVrjxpXO6S+Ik7SEbNQoTNc1rUq3hn9SCjqGb/9KSc+edIhNlFFbK8EPeg4BbXfF3BBg8DoxwL99DzClGhubE//m6h5Bz4aGUe1+fSefz420WKHau51J2GqWQ9E7haW1hMGstzUk1dPri0hOi+pM6Zm0mmnydHCw7Hw9MIfAYzQHVOZa7epf2q5oFlJ6uJWzTjmc4VXJxBYFiIUQv3Y7mG1IGQpVHJqdRQUUZPnAnQeQmXI2+6FDZw8sFgVJnFaqst3ltWtKXxHoyZEwVpOEH2ucAmINUlPjtmKdyA5V6VPomPvrasFFywHOdTgoxR849w==; 5:CwXKrrLibx8oT6W183T/Z/zZ9FylTiRjm1wDosjLyMhS3Y820EYWVqOX5oChDbQpmfL50LePs1c0BtOXpOaDaMs1X9vOh1b21qXolI5nmJ9iCzGbXGTSV7HUXhr4uWjlQckmGHlNe+HD4Jd8TqGfQHNrfPaPWga44c2Ls15RH5I=; 7:22buxJD1DZOnCQmM6dKhZ++Qvxa4CGUUUCOgsqnpdB0l+2oUwzbgBnSPvM0pwbmADv0O0E0CtkGna7y05+1o38C78btjV3yRKXbF4pZEXsNWk1C0neKEmPQWN5E4nk80HAQtXeHYjv7bwdfs0NxjDg== x-ms-office365-filtering-correlation-id: 03b08c26-94f8-4663-4dad-08d65c4c548d x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:DM6PR07MB5787; x-ms-traffictypediagnostic: DM6PR07MB5787: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(10201501046)(93006095)(93001095)(3002001)(3231455)(999002)(944501520)(52105112)(148016)(149066)(150057)(6041310)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:DM6PR07MB5787; BCL:0; PCL:0; RULEID:; SRVR:DM6PR07MB5787; x-forefront-prvs: 0879599414 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39850400004)(366004)(396003)(346002)(376002)(189003)(199004)(486006)(386003)(6506007)(102836004)(2616005)(476003)(44832011)(36756003)(446003)(11346002)(4326008)(52116002)(118296001)(76176011)(107886003)(186003)(71200400001)(7736002)(305945005)(256004)(71190400001)(106356001)(54906003)(316002)(66066001)(105586002)(86362001)(97736004)(6916009)(25786009)(6486002)(81166006)(81156014)(5660300001)(3846002)(72206003)(478600001)(2906002)(6436002)(8676002)(68736007)(8936002)(26005)(53936002)(6512007)(14454004)(99286004)(6116002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR07MB5787; H:DM6PR07MB6220.namprd07.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: aquantia.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 329yDcQPs8SFoUeJI2qJzCjLV4nuX1OS1gA3jG44jjrvnI657owR2vSBby0B7WSw6Lc5QehPIcj+rfHJN+SpqwhBRvzLKmDyhdRCM1RESwMMkb5oj/eaiChNw49my4+9mrRMKDamqmtE2D+4rjlsDoKdL1XTKNmkTKnxcr7buvtjcmhPkcufXcspRwkK5+Rp0dXCgPtW6UOdstjhOXwncvdVm9OizR1X1LZst/jfOywycxqAeqaEzYnPQF4xq8lfOyuoFMz4f/hfbP7LdxaZ2k5xA2iBEBPSr+LOm2zPa4cNTt0Aj476lBc6qKFFoOMOZd0Dkr5p9bjm2/bTUr7QeKqsVJcU5syJEBjdxyCUzmE= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: aquantia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 03b08c26-94f8-4663-4dad-08d65c4c548d X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2018 14:00:22.8542 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 83e2e134-991c-4ede-8ced-34d47e38e6b1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR07MB5787 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Dmitry Bogdanov Add support of configuration of RSS hash key and RSS indirection table. Signed-off-by: Dmitry Bogdanov Signed-off-by: Igor Russkikh --- .../ethernet/aquantia/atlantic/aq_ethtool.c | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c index a5fd71692c8b..fcbfecf41c45 100644 --- a/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c +++ b/drivers/net/ethernet/aquantia/atlantic/aq_ethtool.c @@ -202,6 +202,41 @@ static int aq_ethtool_get_rss(struct net_device *ndev, u32 *indir, u8 *key, return 0; } +static int aq_ethtool_set_rss(struct net_device *netdev, const u32 *indir, + const u8 *key, const u8 hfunc) +{ + struct aq_nic_s *aq_nic = netdev_priv(netdev); + struct aq_nic_cfg_s *cfg; + unsigned int i = 0U; + u32 rss_entries; + int err = 0; + + cfg = aq_nic_get_cfg(aq_nic); + rss_entries = cfg->aq_rss.indirection_table_size; + + /* We do not allow change in unsupported parameters */ + if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_TOP) + return -EOPNOTSUPP; + /* Fill out the redirection table */ + if (indir) + for (i = 0; i < rss_entries; i++) + cfg->aq_rss.indirection_table[i] = indir[i]; + + /* Fill out the rss hash key */ + if (key) { + memcpy(cfg->aq_rss.hash_secret_key, key, + sizeof(cfg->aq_rss.hash_secret_key)); + err = aq_nic->aq_hw_ops->hw_rss_hash_set(aq_nic->aq_hw, + &cfg->aq_rss); + if (err) + return err; + } + + err = aq_nic->aq_hw_ops->hw_rss_set(aq_nic->aq_hw, &cfg->aq_rss); + + return err; +} + static int aq_ethtool_get_rxnfc(struct net_device *ndev, struct ethtool_rxnfc *cmd, u32 *rule_locs) @@ -549,6 +584,7 @@ const struct ethtool_ops aq_ethtool_ops = { .set_pauseparam = aq_ethtool_set_pauseparam, .get_rxfh_key_size = aq_ethtool_get_rss_key_size, .get_rxfh = aq_ethtool_get_rss, + .set_rxfh = aq_ethtool_set_rss, .get_rxnfc = aq_ethtool_get_rxnfc, .set_rxnfc = aq_ethtool_set_rxnfc, .get_sset_count = aq_ethtool_get_sset_count,