Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp15518244rwb; Mon, 28 Nov 2022 12:34:36 -0800 (PST) X-Google-Smtp-Source: AA0mqf50mr73UumbJvith3IMWaBIgsC1eILzVRhvdiaoxlBVYvNNuxIL7rZd/vaQRBQJsiGZTln8 X-Received: by 2002:a17:902:eb87:b0:17f:9021:dd4e with SMTP id q7-20020a170902eb8700b0017f9021dd4emr44018872plg.141.1669667675774; Mon, 28 Nov 2022 12:34:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669667675; cv=none; d=google.com; s=arc-20160816; b=J/Rcsqhrtp1rRfRrkM0AYDJjX5kB67VT2oMDcs7yAII8ksnw/U3LUPpKZg085mBF8L 7om/OAGnme7x0mu+AorV/IrMpehDUzs6k3H+1S2YXpUhtl46E5wPCrmsCBJV4+6M3Ln1 e2ZIOVHzu3ZU8QlvaMGBO61XlhtQYz90+P5riBkNngLXpCs7vKW5KIWouvIVMCWR7NQ1 +8DFr1psDXH06HRZnkMwgmt5oC1LlKotgW5uZxgue5Y5YlIVds42TRXCD4lsH3M3A8RT 21UEEqZM8fF9fHeFU+fCYTLHm9in/kIHkLUNOzEqEaWLHVXe2HfJipUUwcMIUwxfCtX4 74xA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=QUJMWrLlm9IEHGxbBgkN9Yp8GDk305AArScPpFoLZdw=; b=VzmZe8tgoaLV5qdFIgumMr578Zx831q/uU5na8UzjV5REvuBvSNdROmi/YQmyKjt6g mT0q4x4+c9MW1o58qcyxhISq9rP99qyxVLiBiympuUIQJraRncEyu93+9uwpRyamHgAl 6TN27ek7aoP0gVy84bqMcA9xJMgoGxa2b28DwfOAxqiUP9XvK0w0Rpi/cCIICunKB1wK wJdM3xZTtYdxvqaJwcPlJrFvZv7R+zc8Kb9i8ZkUyPKQ41KiPnx5hXstH0P/9tVq1hP4 N1QfcfXxbd2VPc5x1UnhDJyL3FOIvbeos/x0CKmGCJ30eEQB5w5Y1NZBKCh7iGxPcFrE nrvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vmware.com header.s=s1024 header.b=EDI1tmKC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x18-20020a170902ec9200b0017f9b980fadsi14805028plg.446.2022.11.28.12.34.25; Mon, 28 Nov 2022 12:34:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@vmware.com header.s=s1024 header.b=EDI1tmKC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233678AbiK1Tb3 (ORCPT + 84 others); Mon, 28 Nov 2022 14:31:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57614 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233627AbiK1TbW (ORCPT ); Mon, 28 Nov 2022 14:31:22 -0500 Received: from EX-PRD-EDGE02.vmware.com (ex-prd-edge02.vmware.com [208.91.3.34]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F0552CDCC; Mon, 28 Nov 2022 11:31:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=s1024; d=vmware.com; h=from:to:cc:subject:date:message-id:in-reply-to:mime-version: content-type; bh=QUJMWrLlm9IEHGxbBgkN9Yp8GDk305AArScPpFoLZdw=; b=EDI1tmKCNQ6kHHKSd0ju9Ldcn+8VZhDdWYIKLAMihtIecMuez3Io12LMfDz2cG l/m+832XXXfnd9mTbUMLCBM7wMXgYMGqeLmq0erGiIYBZHDI5t+JJDMWGneoEe 5kp7K/buWqqY6mFYxEEcBV694cVpaCCyAA1tVuKvs4jCeXE= Received: from sc9-mailhost3.vmware.com (10.113.161.73) by EX-PRD-EDGE02.vmware.com (10.188.245.7) with Microsoft SMTP Server id 15.1.2308.14; Mon, 28 Nov 2022 11:30:52 -0800 Received: from htb-1n-eng-dhcp122.eng.vmware.com (unknown [10.20.114.216]) by sc9-mailhost3.vmware.com (Postfix) with ESMTP id 2715120266; Mon, 28 Nov 2022 11:31:06 -0800 (PST) Received: by htb-1n-eng-dhcp122.eng.vmware.com (Postfix, from userid 0) id 22282AE1B0; Mon, 28 Nov 2022 11:31:06 -0800 (PST) From: Ronak Doshi To: CC: VMware PV-Drivers Reviewers , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , "open list:VMWARE VMXNET3 ETHERNET DRIVER" , open list Subject: [PATCH v1 net 1/2] vmxnet3: correctly report encapsulated LRO packet Date: Mon, 28 Nov 2022 11:31:02 -0800 Message-ID: <20221128193103.3742-2-doshir@vmware.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20221128193103.3742-1-doshir@vmware.com> References: <20221128193103.3742-1-doshir@vmware.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX-PRD-EDGE02.vmware.com: doshir@vmware.com does not designate permitted sender hosts) X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net 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 pathc did not report correctly the encapsulated packet which is LRO'ed by the hypervisor. This patch fixes this issue by using correct callback for the LRO'ed encapsulated packet. Fixes: dacce2be3312 ("vmxnet3: add geneve and vxlan tunnel offload support") Signed-off-by: Ronak Doshi Acked-by: Guolin Yang --- drivers/net/vmxnet3/vmxnet3_drv.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index d3e7b27eb933..611e8a85de17 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c @@ -1396,6 +1396,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, }; u32 num_pkts = 0; bool skip_page_frags = false; + bool encap_lro = false; struct Vmxnet3_RxCompDesc *rcd; struct vmxnet3_rx_ctx *ctx = &rq->rx_ctx; u16 segCnt = 0, mss = 0; @@ -1556,13 +1557,18 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, if (VMXNET3_VERSION_GE_2(adapter) && rcd->type == VMXNET3_CDTYPE_RXCOMP_LRO) { struct Vmxnet3_RxCompDescExt *rcdlro; + union Vmxnet3_GenericDesc *gdesc; + rcdlro = (struct Vmxnet3_RxCompDescExt *)rcd; + gdesc = (union Vmxnet3_GenericDesc *)rcd; segCnt = rcdlro->segCnt; WARN_ON_ONCE(segCnt == 0); mss = rcdlro->mss; if (unlikely(segCnt <= 1)) segCnt = 0; + encap_lro = (le32_to_cpu(gdesc->dword[0]) & + (1UL << VMXNET3_RCD_HDR_INNER_SHIFT)); } else { segCnt = 0; } @@ -1630,7 +1636,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, vmxnet3_rx_csum(adapter, skb, (union Vmxnet3_GenericDesc *)rcd); skb->protocol = eth_type_trans(skb, adapter->netdev); - if (!rcd->tcp || + if ((!rcd->tcp && !encap_lro) || !(adapter->netdev->features & NETIF_F_LRO)) goto not_lro; @@ -1639,7 +1645,7 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, SKB_GSO_TCPV4 : SKB_GSO_TCPV6; skb_shinfo(skb)->gso_size = mss; skb_shinfo(skb)->gso_segs = segCnt; - } else if (segCnt != 0 || skb->len > mtu) { + } else if ((segCnt != 0 || skb->len > mtu) && !encap_lro) { u32 hlen; hlen = vmxnet3_get_hdr_len(adapter, skb, @@ -1668,6 +1674,8 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, napi_gro_receive(&rq->napi, skb); ctx->skb = NULL; + if (encap_lro) + encap_lro = false; num_pkts++; } -- 2.11.0