From patchwork Mon Apr 24 17:00:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Chopra, Manish" X-Patchwork-Id: 754344 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wBXgP1S0Wz9sDb for ; Tue, 25 Apr 2017 03:01:37 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="AObqS0Pd"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S975242AbdDXRBd (ORCPT ); Mon, 24 Apr 2017 13:01:33 -0400 Received: from mail-bn3nam01on0089.outbound.protection.outlook.com ([104.47.33.89]:48256 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S975232AbdDXRB0 (ORCPT ); Mon, 24 Apr 2017 13:01:26 -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=wDZ/PKJ6pXKWGughAUZu6PdeLMpmghE3WzGRS/VW4Do=; b=AObqS0PdULr5ady1o+MXssrvbkuEF9YTCIQUAsdcWS9dB0j8z/Jh5v/gq86ij2orX8uQWOilt+Elm98liM5cx4hlZVYcM+k7w+fpwJVIuptI52Wwl1FxlW6AlZHkI/jVzZvqlTXrvZPCN53IbzKV0We1CdC8jseXSy3AXy5tExc= Received: from MWHPR07CA0011.namprd07.prod.outlook.com (10.172.94.21) by SN1PR0701MB1952.namprd07.prod.outlook.com (10.163.131.158) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1047.13; Mon, 24 Apr 2017 17:01:24 +0000 Received: from BL2FFO11OLC006.protection.gbl (2a01:111:f400:7c09::109) by MWHPR07CA0011.outlook.office365.com (2603:10b6:300:dc::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1047.13 via Frontend Transport; Mon, 24 Apr 2017 17:01:24 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BL2FFO11OLC006.mail.protection.outlook.com (10.173.160.95) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1047.9 via Frontend Transport; Mon, 24 Apr 2017 17:01:23 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.309.2; Mon, 24 Apr 2017 10:01:06 -0700 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id v3OH0pYd016080; Mon, 24 Apr 2017 10:00:51 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v3OH0pHp016079; Mon, 24 Apr 2017 10:00:51 -0700 From: Manish Chopra To: CC: , Subject: [PATCH net-next 2/6] qed/qede: Enable tunnel offloads based on hw configuration Date: Mon, 24 Apr 2017 10:00:45 -0700 Message-ID: <20170424170049.16027-3-manish.chopra@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170424170049.16027-1-manish.chopra@cavium.com> References: <20170424170049.16027-1-manish.chopra@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(39840400002)(39850400002)(39450400003)(39400400002)(39410400002)(2980300002)(428002)(199003)(189002)(9170700003)(50466002)(101416001)(4326008)(305945005)(87636002)(50986999)(2351001)(76176999)(48376002)(189998001)(5003940100001)(2906002)(6666003)(42186005)(6916009)(33646002)(2950100002)(1076002)(107886003)(110136004)(38730400002)(36756003)(106466001)(105586002)(80596001)(47776003)(50226002)(81166006)(575784001)(54906002)(8676002)(8936002)(5660300001)(356003)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0701MB1952; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC006; 1:2eZQj2P78rFtUMxbYHlK61/D64QkTWK6v9nWIo7Sy6TR5N6jUP+y+RQqdMdpUBbbLLdHQe5nYLwsUsZQbFJbfmYdWwxwBTf/caT2VQJw+mHwob9uGuSpT4UQEGof87c9wdXQizLOEUcUsylk0Aga49Stf5t9tfDV4SqfdK0MmoFVrAYTCXKZMn3uhc5FhDlD/lQ/BiW/pyWSo6IaEXptdVud8n5CcORewl6BSvlT8yIKsEA3jZZH/5C44VGqPmrb9LkAraosVkTlbMccrJIvOdYiYy6sX8MsQ48crgnxt+b8GU8EawNE4EkTubHTniVfUSJSA72D5PIT40iwdthGkyjtyTf5aNIQh5I32AKHxhd7e2t59xAKk648Hnv3f9LdLh2SzxmDs8A87iySTujj3UYE3utj775i/Wx3kGL/NTwBUIJZahQy35SqlEdRLFI7dSv2aQTSABqdX2yUYY/o/383U7ndO32cA8DYDUmTp4CB5d5Z6wM3Ybl6jtujnkGtspIMRIFFO2DX12tUXLD6ef87zLun5L/k01XVmHeo968= X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b6b73b10-0169-466c-c1da-08d48b338a17 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081); SRVR:SN1PR0701MB1952; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB1952; 3:tSawO6bqmgMOec4DD2F75R5F9NJgXsi6fbiHpOLci+4j8UGAcwRjvp9SRW9bOQUCB2hFJPI8onLLzf4ZgTFdF6uXS/yqKhE+MiE68M+BKP63oe94ILbA+NzlDCFu+2lE+SrmtthAHzrSFBGDDAXyxm71jMckaDs3qTFkKcrwSyf4G4Y12hDU5LdZFEFyNqmflRaCTyMGWShm6dnXVRRy43xGNkVu0C7h+2qD45NJ32Y7I2SBTMwfdscwJ5WaLU4auZLAR6/k2aByAxBQTTsUiwmXAoZ0I6NSW/+7xBzpEDF5kqL0xgPRtqy+Vf8V+ssOKCE05s/SHk6AEtHENKwrRDVt/bcrB0zTkD+sLszm5/PeuhyPRaR9yMuC0gQIL4H9/p1ymvro5Uc/L3CSO3f4hPnqtZPm05fxneXf5FO+Aux6C9ZkQbblpGw0Wvu7m5kV0GqPJi5hfbJpNFU0tai3CA== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB1952; 25:LmmNEjlxRKs5A9BhaVRvXk4UTKtggHUmrn/3l0YVxJbcNiiQ05vsjQYuSoRGPbwPXxXf0zFxcAB1z1EAuWFaMlUFQ615vXk3wM0QRfBU53OcLJp/6r2lJXy1LpI0EFRXvpVLP7vBeP8HXyAOGEdOuXWzYDQREQwbgELLbLkciwJHQPbTSi2h2fv5zKAFybzSWtc87n+kcOGcmv1x/LPrnRmON77yV8TjSVQa3wKXWSB0E+y+IG3V8HIpcPJY5MtGZ3a8cuJEzYbDyHCSwtIynjSZAQCUVbDhLVWh2BsOfpWd/zGUY1e2isCYeCoeBq4AFGWVwu7kX6Rn/rcz0aoTaAIU+LhRRnT7Jowkyi6ff3zn0ixRKy1vsSZcnKb6CJ4rOoMGECkajQr8THkTeO6qN3mn4kFeQkoiaBXN8hQ1i24fTX2bu904/rvICB+6ddRFUw4OMh4PD5grNRGQc87EQg==; 31:A16g8fRLPITwHT7NAaffNPhQfOlhz4Pb+NYECRMQSngzNEgc4xUzbyF3ab8NwHUnhMF+ne98DWBuj9w162CVdFDVo0WP7fO1e1231zrlXx2R/r68obqVfwhRds9uY+rxv1t73X8B/bw+2VByT5uiAN9MQCyKe4L2SV1aVKcjJ3lYcnpHc+AymbZsgaeRnBxxHwE8fWKNvbm0NlF1e+dRBXX8wb+0pWnwJETBeob2RfDKPXmoImqSlKymQyEydVwY/zzVn06pP0HQuRzkH4PRiw== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB1952; 20:NnlPxGhNlMjZJ4IXP01zdg+Ko/BZHYNjyu5emlG/Nc0FcqO46HkIt8O97QQ6X9+sO4HMtHhxw9j+2ZTW2UlQS/As54tA2pXp900wrzKZ87ZqMUxhExXIiEv9WDNOv3bD90K2LgdB727/tHif+aLmaI+uWYzjdi2ihUXX435hbM8guKlRhUPsAmbSTgV73rQMxNjbwnb5r839omyFUZJtSfqiYQ/HggByoSTyfWS7RMO7YkcwQZKIMv1/4+Ljj74ZZeYph18LHDQlcAOKpMDIGPXvqg1gUjVNWUrWh8TaVxh/9cj0FjbXRToxhq7/cWnp8spb+xiNSAbtJOgtMZAbFTv83YlHDR/JuI6u2aVBNztr+V+uD4lNQk1RpTO89GUqVC1ZdH4OkMHnFG0Axzelmt4BMuFoElMEybU2oHmNTKxqeYXQ67W374VB0VkFtf2jBCg9Ecun7LuoiZCSRz3Q0gl8PhPnMoEbc6GHTrELL6K3eONVk5regB6Uf3H9/EKm X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13023025)(13018025)(13024025)(13015025)(5005006)(8121501046)(13017025)(10201501046)(93006095)(93001095)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(6072148); SRVR:SN1PR0701MB1952; BCL:0; PCL:0; RULEID:; SRVR:SN1PR0701MB1952; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB1952; 4:F1LoJaYitEWxcBVmlGDkItCJFRdJWiZl1bM8pXNSLQsAwKygCDhMjt7/T23djhs080Wa2IiQTQGGSIxd6Dz5IRgB9xjZwZEukKxsYKZGYfja+HZGtTQzYZdbjAT9YPhvjNTx8yTUlwwYmO4MbOEyXD9krZV8YeE8cOHH2JNgamHIh8hodv+XGhtUkXvZqf20UraJVwWpNidyA5eUMy6v50l0wvf2YoQcSv/ppn3q0Oa05EB7XmYoDHmpNKy19KUgSzlP8fS7UnDy10tUrVl0e/QO3mTW+gWvwAjsfbkkOABFnUKlH5AwmH+gAE+yIMUYsDy9SI/u1iy/wyYWulOTmuuEN0S+lD9fsvMUuyAd15WKbb4uP7mW0CIfinYx0q4YWJk7WxEHghSBeMbq33JsUBayXdWY1mfWWcctzoXAIv8x3IB36y82Vb+F27RE5BHlojKbyA0YVEA1pXp9C1K2btIr+/V7sDdUPNUVyo/7bg//oN2EEna7d3smVDDs6xoumwy1FtteFlx+7WaoOJ1IMNIebP178AxJOvTr+SUrjlvpyeOHZ320xZu6gaw0qhnxtdQ9rhVPeutik0skWb4J7eXZ5dm3o3chtEGcEmo9Yf+lSE4gRk2DRyj5N5Me1o8/IPd3+J2x+dcleEPPyf+cfXkYhDeR6B4KEJeAl6k2ID/IBXreVZ6mw1wzHHQHQ37CoraoKQnZ1cEJxNoF2ur+KuYCDUw9Rq35IwgEaCG8hsJCq9XwdgjLMLz3WgYqcwmSvuPNDcyojFA0qfuTXfvbCB75NVFLx3H0GstRP/ctYY32wGhDceHZlp69wnxTAu3r X-Forefront-PRVS: 0287BBA78D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0701MB1952; 23:4HzKOnEKQboMRvPgaNqkBm3w9UI7ss3+PhGF3Nd?= =?us-ascii?Q?TcCCV6vqI+8uWpjPtfWQG0M2RGhMKzSb8q+5WbAvh8HHGc0hKSxIOyOnDbAs?= =?us-ascii?Q?uUlVqbh8LPBhLf643AkxnIODtllqa/FB4YaIsa+GzeXua5Etity0fm6OGRdY?= =?us-ascii?Q?NqEGWEalChrwmRZRa5K3koZAAYJx+7YbIUD3eqc1A3oU1Zb9WV+DNAIIcGXg?= =?us-ascii?Q?Rw6oM0qAEIiXRqguT9RamlqQZVrxwk1FW+mPlMfIF4eK/kbVGrfHqyvDLIby?= =?us-ascii?Q?w9fWzu2ruP/9GuumCUgAQGBS2yVUUSq1y/Pu8a3UU7pA2TPDVzVGa3sWLKNf?= =?us-ascii?Q?xpJfa2uaZwB0FQtYCNhpk3XTO3r/SODl9oz7tbJapY0J5Uw3+1aVoqfBTgjv?= =?us-ascii?Q?zp7XUTk4zvTuXtvvuQZCymVQh7ME3yVzry0ZWUvH5x2udvQzr1EPgAB6YsmK?= =?us-ascii?Q?9wgpkcjQgacdMwHNihI7hQcH44ExFNtrfSps5iFX0VqPAnL3zufEEjjcylCY?= =?us-ascii?Q?ltAQ26Z2HMyp2OYXshIAG5rc+PtCGO0PWNNCya2f8N9Vw4arquoVGsRPVI8e?= =?us-ascii?Q?xZNwMmMg6Z6jADe3gIpY0l7cvsM25zpRUI6XxvaC2tc/pgOaXbwI6qAYgMpL?= =?us-ascii?Q?ky3gzlPfdvjIORnRDx8YJ56Llme5dkJmemacRRB6Hk2iZp3kBwvzlbl5mixA?= =?us-ascii?Q?oUIDN1MpJ6rwkg6s0y0uqDBYrwLeLxk9MK+MOtJyVfYS9lbkq69u1h1a5VrK?= =?us-ascii?Q?GOef9umVvDRJ2jk1ZtJuncCSseuQRcY1Pi7hoMsYNNXGkXXqz8EN15ycNKwi?= =?us-ascii?Q?mNhJhsfR4/7XQNLsgRDwmDMI5AlV8YvRVV4u310cDlirWeR2RjjDdil63TzW?= =?us-ascii?Q?UiR8YcXMLC3wje3St+RX1umf31btzRO3PD9lN9PpWE/c3COpxH+O3XALk/Vz?= =?us-ascii?Q?MPE4Abjm0qtZb6ZXBoGdKbAx2B/aO0SoBhKg6LT/BxWo+QoJEzIKDu0vkyKJ?= =?us-ascii?Q?hCOMjc6hy+ikKns3AuLvd6zmtrsNBAbcQpRRnPf+lbD7EUXcJ+E58g1JHkl/?= =?us-ascii?Q?h5btQ/NMOiVxbqrnT727EUF7icBmPFuIftCU7G8m/yxpzyPjXNZT80sqgTWq?= =?us-ascii?Q?WeCv2j7ta643agLMPP4Ll/xthX8n2WmGx?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB1952; 6:yt3TGxlypXlwyK6keapcQwsA2QQDnA3tCzpll7/PPwx22BCskWze1gnWDaI3sjAqvcRhLXsGHKFjy6xoHIoAXzWav5V7sYxHWmBjo5TYMcv3Bj72PAKb1lP/Qi0X3w2fyzqZpa2MkV9lIRcILP88PIn+ajS3/QS9UVopBDEYf7kpmAHkNg57usbFeUWKIcEV8uplAVLRZK0AS37Ig1s+XZVmZEIuxhj579kVmXHYvJnpRcd1nPQiCyg3WnwvAZR2j4weTtX1VgKngKJZ4v7ETEKdRiBViT0d7mYx9eP7SQnQLS5BpI6FZSpEzv1s6ROZts9+WmCZ/vX8li/3Hg6ap8mYi4b8nN7vki7YTNuPXEBKRsbY7IB6I4+avwiNBAEOiUyN1rI6aIhKv4J+IfFkBbXKaU8nHqFfpkIagOpz0nTeh8BwlXn4puDvn+JYQaUBXqnE88fe+IGVaY8Nh/b4eFFJ8Ae5OpUiylC+qPNJXFZWf3Gg7Q0tqi+xccughZ+WCxplJ6bVRNvcVYxczfz+EQ==; 5:MMYW1/psqBC8YSmu9LVaWnEyi/JSDMUWRRYnINLYWtiAwlPTZ9hlToEBAy2pngOgTQOYFcCmvfz25rJp4kcwSmI5IKObG+nWjHB+EF+7/0JTB5CC/5UBs9KscjDuN+ZyeFBcUa3ZrWES6a9cX0T7FQ==; 24:vIERg2cFveHJVSeVba8UoPl0CsPzvj9xvo1KsbwbBzB16vTWPb9vApT6vfNU1cfj7HM+EMvUedgJep3v14UpviVpvDdPlgLcMKVkmyVvLRI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB1952; 7:XRd+sU0+dMvI6UrM7KWTA7obn9F9mWecsnPN1qUzD+ptbrq/Dw4id+uefkloR1sDzBF+PlYffBR4vvqc6EnZXqKuT+0IANTlHHqDhKPfM99lIMMmWvxXjqY2GwqpUcDxWOtkZ2ZfFck/mnrI/wMSvbW3i1XJg/htJPmp3e9y83a8/dhD1lm5rfa12I1SGYqqBu8g+g9z5VF10sKrcrTMijVXLuFbNHm3ucdl9yMVDxJ1g8UhGwMW7M+hpz+bQBHHldMRL4csau2FlsHNsfLB3/8MwH5pXSk7q+EVCUeECF2+/MT9ylP28mO5c4k2StaXvFBuuCOHBOhPKfRsJhiO7A== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2017 17:01:23.8900 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR0701MB1952 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch enables tunnel feature offloads based on hw configuration at initialization time instead of enabling them always. Signed-off-by: Manish Chopra Signed-off-by: Yuval Mintz --- drivers/net/ethernet/qlogic/qed/qed_main.c | 15 +++++++++++ drivers/net/ethernet/qlogic/qede/qede_filter.c | 6 +++++ drivers/net/ethernet/qlogic/qede/qede_main.c | 36 ++++++++++++++++++-------- include/linux/qed/qed_if.h | 5 ++++ 4 files changed, 51 insertions(+), 11 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qed/qed_main.c b/drivers/net/ethernet/qlogic/qed/qed_main.c index a622d75..e650281 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_main.c +++ b/drivers/net/ethernet/qlogic/qed/qed_main.c @@ -230,10 +230,25 @@ static int qed_init_pci(struct qed_dev *cdev, struct pci_dev *pdev) int qed_fill_dev_info(struct qed_dev *cdev, struct qed_dev_info *dev_info) { + struct qed_tunnel_info *tun = &cdev->tunnel; struct qed_ptt *ptt; memset(dev_info, 0, sizeof(struct qed_dev_info)); + if (tun->vxlan.tun_cls == QED_TUNN_CLSS_MAC_VLAN && + tun->vxlan.b_mode_enabled) + dev_info->vxlan_enable = true; + + if (tun->l2_gre.b_mode_enabled && tun->ip_gre.b_mode_enabled && + tun->l2_gre.tun_cls == QED_TUNN_CLSS_MAC_VLAN && + tun->ip_gre.tun_cls == QED_TUNN_CLSS_MAC_VLAN) + dev_info->gre_enable = true; + + if (tun->l2_geneve.b_mode_enabled && tun->ip_geneve.b_mode_enabled && + tun->l2_geneve.tun_cls == QED_TUNN_CLSS_MAC_VLAN && + tun->ip_geneve.tun_cls == QED_TUNN_CLSS_MAC_VLAN) + dev_info->geneve_enable = true; + dev_info->num_hwfns = cdev->num_hwfns; dev_info->pci_mem_start = cdev->pci_params.mem_start; dev_info->pci_mem_end = cdev->pci_params.mem_end; diff --git a/drivers/net/ethernet/qlogic/qede/qede_filter.c b/drivers/net/ethernet/qlogic/qede/qede_filter.c index 34473fb..23e0c16 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_filter.c +++ b/drivers/net/ethernet/qlogic/qede/qede_filter.c @@ -887,6 +887,9 @@ void qede_udp_tunnel_add(struct net_device *dev, struct udp_tunnel_info *ti) switch (ti->type) { case UDP_TUNNEL_TYPE_VXLAN: + if (!edev->dev_info.common.vxlan_enable) + return; + if (edev->vxlan_dst_port) return; @@ -898,6 +901,9 @@ void qede_udp_tunnel_add(struct net_device *dev, struct udp_tunnel_info *ti) set_bit(QEDE_SP_VXLAN_PORT_CONFIG, &edev->sp_flags); break; case UDP_TUNNEL_TYPE_GENEVE: + if (!edev->dev_info.common.geneve_enable) + return; + if (edev->geneve_dst_port) return; diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c index 02b305c..42f043b 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_main.c +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c @@ -609,6 +609,7 @@ static void qede_init_ndev(struct qede_dev *edev) { struct net_device *ndev = edev->ndev; struct pci_dev *pdev = edev->pdev; + bool udp_tunnel_enable = false; netdev_features_t hw_features; pci_set_drvdata(pdev, ndev); @@ -631,20 +632,33 @@ static void qede_init_ndev(struct qede_dev *edev) NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | NETIF_F_TSO | NETIF_F_TSO6; - /* Encap features*/ - hw_features |= NETIF_F_GSO_GRE | NETIF_F_GSO_UDP_TUNNEL | - NETIF_F_TSO_ECN | NETIF_F_GSO_UDP_TUNNEL_CSUM | - NETIF_F_GSO_GRE_CSUM; - if (!IS_VF(edev) && edev->dev_info.common.num_hwfns == 1) hw_features |= NETIF_F_NTUPLE; - ndev->hw_enc_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | - NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO_ECN | - NETIF_F_TSO6 | NETIF_F_GSO_GRE | - NETIF_F_GSO_UDP_TUNNEL | NETIF_F_RXCSUM | - NETIF_F_GSO_UDP_TUNNEL_CSUM | - NETIF_F_GSO_GRE_CSUM; + if (edev->dev_info.common.vxlan_enable || + edev->dev_info.common.geneve_enable) + udp_tunnel_enable = true; + + if (udp_tunnel_enable || edev->dev_info.common.gre_enable) { + hw_features |= NETIF_F_TSO_ECN; + ndev->hw_enc_features = NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | + NETIF_F_SG | NETIF_F_TSO | + NETIF_F_TSO_ECN | NETIF_F_TSO6 | + NETIF_F_RXCSUM; + } + + if (udp_tunnel_enable) { + hw_features |= (NETIF_F_GSO_UDP_TUNNEL | + NETIF_F_GSO_UDP_TUNNEL_CSUM); + ndev->hw_enc_features |= (NETIF_F_GSO_UDP_TUNNEL | + NETIF_F_GSO_UDP_TUNNEL_CSUM); + } + + if (edev->dev_info.common.gre_enable) { + hw_features |= (NETIF_F_GSO_GRE | NETIF_F_GSO_GRE_CSUM); + ndev->hw_enc_features |= (NETIF_F_GSO_GRE | + NETIF_F_GSO_GRE_CSUM); + } ndev->vlan_features = hw_features | NETIF_F_RXHASH | NETIF_F_RXCSUM | NETIF_F_HIGHDMA; diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h index 9f966be895..5544d7b 100644 --- a/include/linux/qed/qed_if.h +++ b/include/linux/qed/qed_if.h @@ -338,6 +338,11 @@ struct qed_dev_info { bool wol_support; enum qed_dev_type dev_type; + + /* Output parameters for qede */ + bool vxlan_enable; + bool gre_enable; + bool geneve_enable; }; enum qed_sb_type {