From patchwork Tue Aug 22 17:31:03 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Madalin Bucur X-Patchwork-Id: 804602 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xcHlg0X6Nz9s4q for ; Wed, 23 Aug 2017 03:35:59 +1000 (AEST) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3xcHlf6YBLzDrJy for ; Wed, 23 Aug 2017 03:35:58 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0079.outbound.protection.outlook.com [104.47.40.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 3xcHfH57SgzDrCf for ; Wed, 23 Aug 2017 03:31:18 +1000 (AEST) Received: from BN6PR03CA0063.namprd03.prod.outlook.com (10.173.137.25) by CY1PR03MB2265.namprd03.prod.outlook.com (10.166.207.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18; Tue, 22 Aug 2017 17:31:14 +0000 Received: from BY2FFO11FD042.protection.gbl (2a01:111:f400:7c0c::106) by BN6PR03CA0063.outlook.office365.com (2603:10b6:404:4c::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18 via Frontend Transport; Tue, 22 Aug 2017 17:31:14 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD042.mail.protection.outlook.com (10.1.14.227) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1341.15 via Frontend Transport; Tue, 22 Aug 2017 17:31:13 +0000 Received: from fsr-fed2164-101.ea.freescale.net (fsr-fed2164-101.ea.freescale.net [10.171.73.197]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v7MHV6Kq013594; Tue, 22 Aug 2017 10:31:11 -0700 From: Madalin Bucur To: , Subject: [PATCH v2 3/6] dpaa_eth: enable Rx hashing control Date: Tue, 22 Aug 2017 20:31:03 +0300 Message-ID: <1503423066-15420-4-git-send-email-madalin.bucur@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1503423066-15420-1-git-send-email-madalin.bucur@nxp.com> References: <1503423066-15420-1-git-send-email-madalin.bucur@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131478966739149298; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39860400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(8676002)(36756003)(356003)(498600001)(85426001)(81156014)(50466002)(68736007)(81166006)(48376002)(97736004)(6666003)(53936002)(50226002)(8936002)(305945005)(54906002)(5660300001)(86362001)(626005)(50986999)(3450700001)(76176999)(33646002)(47776003)(4326008)(43066003)(77096006)(189998001)(2906002)(5003940100001)(104016004)(105606002)(106466001)(2950100002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2265; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD042; 1:ZGGipu8p/u7ADjmGROAVf0i3XGv+24FGqY9K/8OzZPwlUAVqqHPWeuDzV8dm26F6+Fvjb8yOi+hnwEt9PMKFgOMWMk1fqfGOfrLSnTElZkQI1ChkiZIRqj2EV7cbpPxj MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d6baf85a-dcbf-42f2-16ea-08d4e9839650 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603171)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY1PR03MB2265; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2265; 3:kwbQThqeESj5g/byAS8XxU7Rvq4ks/BcAGqBZfZcJaTWdDCfFEP5nM48A316o73ONTKCX+kup5tyk+xFONHZ1VaRFX/FqqHFCSDOKYzNSt/RqGw9UUttFeryRQW15Lzd0Z9LU1Tps3BXQ6NSFCRM2XSbOxmqMjIQXEJoO3qNNqkBGDCWMIrIm0dW+7rJsxE00NLsQ/xUrqHjgotojFVIjHc47pKVyRjsuecLLhthAvHez8Dgzwp30Z3Nx6Z01rN7maX/nn9i7PbDFIx9uqlBhj7HFcmaIKbaIxaG/an17oUspbnrdc8aj2gqixT2mIvY7AvFZNherTF9u03DGahi4YiPueTROLOHYqZhDVBDwdM=; 25:FY1bDX2mYoZcEgVnGljlx7jQXVGnJUkYHD/2RoQhJawzEHJvJo0tewtXzDfTL23vHPbK4GvjsbWt/op7nsLLs+nAIGRblmrBdCeV+jlSWsi5SuJ0QdykRxDDnYA41Ih/iAkG63X0v3qgGt8Ujm9IPx4VxKW/ftrjRx1eaOtBgklb/TClpTROBfEbE09HgJiJQTZU4E0pJ11n77xDrCQmD5Y64LoH0HPsDOEmMGDSiM+9x5idL9zmM81bE/nWx24xbIEKetEyMa7XaN2XYgz0HfzrENhWJucp+5f9PSgTA9uN2exrbar4TmdcPj5sdH3MlD1lUhgA2g0dBuzI9hTT8Q== X-MS-TrafficTypeDiagnostic: CY1PR03MB2265: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2265; 31:/EHNX8nIQrYNfRiKp5kcBrBkifISQfRHe0HTaSRTiJuFlrqSNVzCdGzW2afp6LMG2L6NG8qumD5QfxrIs/Wl7HBT+6ZXYGXxRZxStiB06gSzQyfPazRowxTsZRkXxMMBwwdnZOZ/AFdgKMhexRdTFAOGC58NCPvg/APPpAlFQZonvGUCpTPKBfTai+xnF9p1IimEnFqDyb68ceaYDcNCg2o1VgGYmp9tkHPWxTxYaM4=; 4:5O9YY5V5vOkP4tE4h1UKP8rvQnhfOtV+7X919MvWlqnHCwpIsXm3s8sqaNzS7pxjG8igLh032in6ny969bjMXO1byYzPP+yWexJyZ4DQurT0N+SPxMP1vwShQWVlaNyvudm6ez5PvvaP+34iEOGQdtHVFrbj3IWZQ5uT6AVNCYApQ8K+6pLzohwx7zuj0gpMhH0sgwl+6313wAOQvNy6RRemzVRl/OYZqrxly8/dJ7g33Z+2OtspefSdPKAyFna/Axx2WuKqBdqzm+ELxrs3UI832l901nt5QmNxCFqoKp0= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(13016025)(5005006)(8121501046)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6096035)(20161123556025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(20161123563025)(20161123559100)(20161123565025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR03MB2265; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR03MB2265; X-Forefront-PRVS: 04073E895A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2265; 23:o6/zi7qh1d65VjrXQbzwX9DtNxL/Y15b+KJNDuSnY?= =?us-ascii?Q?3M4X83qcniO2a3zXAR+TC4tRxQl2koLNgR4d4utWNiSYDcMkls6c1wYtp+1P?= =?us-ascii?Q?dTG30Sv08aXnpHPt0pV1NwhxkSWrHyQ3b5PPTXMEXPLY7qz/JbL0/GIQWpPd?= =?us-ascii?Q?SpJrY3tv983uKzJpVHXyRgmcjJYDv/VIVOxw2s2SBzoININdvO161OpY6VnI?= =?us-ascii?Q?AzVLbsh6kzusbqhZfkYU+FzzPst8ddA+fQwDIfwaT8oaWiGeb4L0D1pREZ7B?= =?us-ascii?Q?xHyXaD3FeYfscawqdIMV+4sGWQsUi8HaQB3G9h6yqSSuAz6Vcd3Ms6KwGzMo?= =?us-ascii?Q?X+DSRrSJECLKvtYsegzsEfKRKNLYrC4VGqbN0jm/rO8q+QKvMUMHD7wpQF/D?= =?us-ascii?Q?9c/7bNrqSJf2X+zyMf+2CF0oOegYxDYw7EcX40OjqAIcQN+kQa3gGO9pckZ9?= =?us-ascii?Q?sOjakgUOLRInqoyk/tX7sbrSAcHy1s7RuSdlfqPu3JRMONMmbhUBerESrDxF?= =?us-ascii?Q?EXv1S9PDTMNDFgA1ZyC95Dsl4kOz+ItTTzJtO5uB57Pdi/NgZT4b63u0wCoj?= =?us-ascii?Q?ayRddAyxAs3dlXWKVi14zzOUFiQegKZa3my3GaipjMIEDUnhBjAuf6wYH+51?= =?us-ascii?Q?04wt7Ab8u/nEdYVqQ3aB1avkdep96BBiD9OxFCmTbLiKrGToX3n+OaAP2a+R?= =?us-ascii?Q?tDQtOhbA1EdQn5PuCM628HJfCikvQc3wFOgk8mTSkmCB9pFFQ2CCGk4OAvR7?= =?us-ascii?Q?NVYFGUdZAvMBVDg/CW4fkHzNKCo2mQO3p29QvOuWwi2/WqDta7lFiMYJedqX?= =?us-ascii?Q?lhKbEnbDbRIGQZAhA/13ViRcuHON6jTAcpX37ze2ZyxExcyOVUsa6SQ/nNO+?= =?us-ascii?Q?IHLjYMTknRj7BdTMj8UmyWzz58ymyfZDWxqycx1x+HYH0DOeKt7iBzA90veK?= =?us-ascii?Q?dLAFnOU5gpNNSO9VZBIsByDqBTFCo7urUAh4wb18pH5T1uXc297l841TxGSa?= =?us-ascii?Q?7ovGG4ltqxCkofmfDOg4ryMSYxxTTz0qnXVYWhh2Aa7TppTJ3/NojRN5xDmu?= =?us-ascii?Q?T2niF6zjk+VdY2vtcPiiYBl4QvPVpRvJwxbaJjdtqxczzm+A0GJXTUW2qjsL?= =?us-ascii?Q?M34tmtS0rQ=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2265; 6:Ji4af86JkUcQFYOXCR8rzRLsqYk3gUmI774VAhwbF/XFTceygPv3pjmZaC7moVUgrjmkDsaywBAEiqaM0cG96WZPgA8wcjvpctVPzQwgpXZrHJLXmUSSJZJD0NAe/sOTOpW3fK7a4ZHJmc8Gd7qMgbELidokziCL0z7EVqr2JQBjW16csY+YEvuX8yy8A2VRtj9kcAngiES1hBcPJzdQ/UCrg+2fHx90HV+sfdb6MaTYOOS67l2BnFnQuKUXS6A7Z9MYbgoDOsRPZNAuthsqYfMXnrBnM2G9F0m6PEJzlGRCyW3owY2u7U3zGUPgTdDa34wjzdpJ5kzAvXLvAie28Q==; 5:MgqEDVhWEtEFRWgjD5LsHbuMEdcPCh1/Dnw94Vb+yS2COF/Bqg0Br9v337SoIFKpaXVIgoyfaGw3xX9IKaYjwsGLfIEL6iOvous+reKrS5psSzdlkPlQMSwtrNwI6Y8iS6A37uEL103FSItkB1tY4g==; 24:GuK6YT1qrOLmauMhL1/2ckvxwRmHuM1tA+5SHoXgV4fEsJ6t6wiFgzSNiSUIGxoeQ63uVcZOPfUioXjIJMkGxTrmNFfFeLxLqrqrStOEwlQ=; 7:4z4DXOTkUM+Rkq2PWinf/CCzTX97neoHs02wkUX2wGu+jyKEUq33ihmDlakfAoLL5kfKv2cC4VER7w/C8IPcS1uZNPN+4Tr56YS0Mh459vzYgELb8T26vxPvqRJ1uYdme/6O4AZUtWGyb4S/6ddQEtNSdDCYHgpHfOilt9+VM87ppMbxmgjASpf3EM40LwsUly3Ij8xwchJivh4CfX1JSITQWZDJ1XxaQ4Uv+Ar42WE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Aug 2017 17:31:13.5873 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2265 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: madalin.bucur@nxp.com Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" Allow ethtool control of the Rx flow hashing. By default RSS is enabled, this allows to turn it off by bypassing the FMan Keygen block and sending all traffic on the default Rx frame queue. Signed-off-by: Madalin Bucur --- drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c index aad825088..965f652 100644 --- a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c +++ b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c @@ -399,6 +399,117 @@ static void dpaa_get_strings(struct net_device *net_dev, u32 stringset, memcpy(strings, dpaa_stats_global, size); } +static int dpaa_get_hash_opts(struct net_device *dev, + struct ethtool_rxnfc *cmd) +{ + cmd->data = 0; + + switch (cmd->flow_type) { + case TCP_V4_FLOW: + case TCP_V6_FLOW: + case UDP_V4_FLOW: + case UDP_V6_FLOW: + cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3; + /* Fall through */ + case IPV4_FLOW: + case IPV6_FLOW: + case SCTP_V4_FLOW: + case SCTP_V6_FLOW: + case AH_ESP_V4_FLOW: + case AH_ESP_V6_FLOW: + case AH_V4_FLOW: + case AH_V6_FLOW: + case ESP_V4_FLOW: + case ESP_V6_FLOW: + cmd->data |= RXH_IP_SRC | RXH_IP_DST; + break; + default: + cmd->data = 0; + break; + } + + return 0; +} + +static int dpaa_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd, + u32 *unused) +{ + int ret = -EOPNOTSUPP; + + switch (cmd->cmd) { + case ETHTOOL_GRXFH: + ret = dpaa_get_hash_opts(dev, cmd); + break; + default: + break; + } + + return ret; +} + +static void dpaa_set_hash(struct net_device *net_dev, bool enable) +{ + struct mac_device *mac_dev; + struct fman_port *rxport; + struct dpaa_priv *priv; + + priv = netdev_priv(net_dev); + mac_dev = priv->mac_dev; + rxport = mac_dev->port[0]; + + fman_port_use_kg_hash(rxport, enable); +} + +static int dpaa_set_hash_opts(struct net_device *dev, + struct ethtool_rxnfc *nfc) +{ + int ret = -EINVAL; + + /* we support hashing on IPv4/v6 src/dest IP and L4 src/dest port */ + if (nfc->data & + ~(RXH_IP_SRC | RXH_IP_DST | RXH_L4_B_0_1 | RXH_L4_B_2_3)) + return -EINVAL; + + switch (nfc->flow_type) { + case TCP_V4_FLOW: + case TCP_V6_FLOW: + case UDP_V4_FLOW: + case UDP_V6_FLOW: + case IPV4_FLOW: + case IPV6_FLOW: + case SCTP_V4_FLOW: + case SCTP_V6_FLOW: + case AH_ESP_V4_FLOW: + case AH_ESP_V6_FLOW: + case AH_V4_FLOW: + case AH_V6_FLOW: + case ESP_V4_FLOW: + case ESP_V6_FLOW: + dpaa_set_hash(dev, !!nfc->data); + ret = 0; + break; + default: + break; + } + + return ret; +} + +static int dpaa_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd) +{ + int ret = -EOPNOTSUPP; + + switch (cmd->cmd) { + case ETHTOOL_SRXFH: + ret = dpaa_set_hash_opts(dev, cmd); + break; + default: + break; + } + + return ret; +} + const struct ethtool_ops dpaa_ethtool_ops = { .get_drvinfo = dpaa_get_drvinfo, .get_msglevel = dpaa_get_msglevel, @@ -412,4 +523,6 @@ const struct ethtool_ops dpaa_ethtool_ops = { .get_strings = dpaa_get_strings, .get_link_ksettings = dpaa_get_link_ksettings, .set_link_ksettings = dpaa_set_link_ksettings, + .get_rxnfc = dpaa_get_rxnfc, + .set_rxnfc = dpaa_set_rxnfc, };