Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp1318343pxv; Fri, 2 Jul 2021 00:21:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/ixunl/MI5n/Kih9F3zWmsgmLwJAPIakyLpvrDreY6rWtUwLSWbN3uClKiNV4optIVjNl X-Received: by 2002:a05:6402:1581:: with SMTP id c1mr4934856edv.213.1625210503648; Fri, 02 Jul 2021 00:21:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625210503; cv=none; d=google.com; s=arc-20160816; b=HqOkB6RsfMrvANBrYiQBYSW+l1IJUIWTSbC078GyeggxvsqBMSVw1eZ44Ax3kf+wzT ZA8SUGh/k0f6iB2RN47UKpA8bcmJPwiDKQ71aM6v+5BKHolDiC7FLECvV0t4o8W0GTFa lwp4qGPod1GRNJgzOgN8IAclSFrPtizv5HFpFp3diGJ9FT1QP4gZp0mgqGXq5YGTcr2C Ph/rt1o1UzJ2s/6/k/Guu/fEQx3tnbLeQwO2GWa171ulDMwkNcTQxLs5XvsQGWzYa3jR ZC87DWzIP1ETqxFlP22MZrjvEawt5ScqKB9NgyOts2iebMfIOWkdLGwTSbf73yS4VX5O hRqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=S5JggJbdp5lyDU0fuh45W/WuFLFyDW12EeqCE7tYKj4=; b=U4oNMrwQdQ+7q+UX5/cnG/zJVxmFw4Kth8ePzz2MBJ6IUN1pE8XlFmmjNuFNfEZ6Zs 1P2+JtHdQ8UWTcNFn7PkN1Nh+t9/sfuUAkc7OPVdggsJZsVLmrYvFviLq/w9T7zea294 +ImLKE872E9Q3/YOf/7FQ6iNixSBU+jspSWDOwGe2bRkSzj9F9Pl4nNGa7fE7OhwVpet SxNc8UUK9NhyfsOpU+PAaKZ0cCQ3sI2zZ1KDSw18QSJi52hDO4MtGjHozLisAommj195 2EVubnqttwOT7Ctz3XQHa9kCXOQ1+6jCuOn35+TP1nuPRQ8JcayVcRXNHGoc5GUQRIUu S77Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h1si2435833ejj.601.2021.07.02.00.21.18; Fri, 02 Jul 2021 00:21:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230064AbhGBHCI (ORCPT + 99 others); Fri, 2 Jul 2021 03:02:08 -0400 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:28526 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229542AbhGBHCI (ORCPT ); Fri, 2 Jul 2021 03:02:08 -0400 X-Greylist: delayed 901 seconds by postgrey-1.27 at vger.kernel.org; Fri, 02 Jul 2021 03:02:08 EDT Received: from sc9-mailhost1.vmware.com (10.113.161.71) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Thu, 1 Jul 2021 23:44:31 -0700 Received: from ubuntu.eng.vmware.com (unknown [10.20.114.115]) by sc9-mailhost1.vmware.com (Postfix) with ESMTP id E31572008F; Thu, 1 Jul 2021 23:44:34 -0700 (PDT) From: Ronak Doshi To: CC: Ronak Doshi , "maintainer:VMWARE VMXNET3 ETHERNET DRIVER" , "David S. Miller" , Jakub Kicinski , open list Subject: [PATCH net] vmxnet3: fix cksum offload issues for tunnels with non-default udp ports Date: Thu, 1 Jul 2021 23:44:27 -0700 Message-ID: <20210702064427.32378-1-doshir@vmware.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-001.vmware.com: doshir@vmware.com does not designate permitted sender hosts) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit dacce2be3312 ("vmxnet3: add geneve and vxlan tunnel offload support") added support for encapsulation offload. However, the inner offload capability is to be restricted to UDP tunnels with default Vxlan and Geneve ports. This patch fixes the issue for tunnels with non-default ports using features check capability and filtering appropriate features for such tunnels. Fixes: dacce2be3312 ("vmxnet3: add geneve and vxlan tunnel offload support") Signed-off-by: Ronak Doshi Acked-by: Guolin Yang --- drivers/net/vmxnet3/vmxnet3_ethtool.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c index c0bd9cbc43b1..1b483cf2b1ca 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c @@ -1,7 +1,7 @@ /* * Linux driver for VMware's vmxnet3 ethernet NIC. * - * Copyright (C) 2008-2020, VMware, Inc. All Rights Reserved. + * Copyright (C) 2008-2021, VMware, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -26,6 +26,10 @@ #include "vmxnet3_int.h" +#include +#include + +#define VXLAN_UDP_PORT 8472 struct vmxnet3_stat_desc { char desc[ETH_GSTRING_LEN]; @@ -262,6 +266,8 @@ netdev_features_t vmxnet3_features_check(struct sk_buff *skb, if (VMXNET3_VERSION_GE_4(adapter) && skb->encapsulation && skb->ip_summed == CHECKSUM_PARTIAL) { u8 l4_proto = 0; + u16 port; + struct udphdr *udph; switch (vlan_get_protocol(skb)) { case htons(ETH_P_IP): @@ -274,8 +280,20 @@ netdev_features_t vmxnet3_features_check(struct sk_buff *skb, return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); } - if (l4_proto != IPPROTO_UDP) + switch (l4_proto) { + case IPPROTO_UDP: + udph = udp_hdr(skb); + port = be16_to_cpu(udph->dest); + /* Check if offloaded port is supported */ + if (port != GENEVE_UDP_PORT && + port != IANA_VXLAN_UDP_PORT && + port != VXLAN_UDP_PORT) { + return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); + } + break; + default: return features & ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); + } } return features; } -- 2.11.0