Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp15465121rwb; Mon, 28 Nov 2022 11:55:43 -0800 (PST) X-Google-Smtp-Source: AA0mqf6huW32HkF+DFGVbIZHv84t1myXgeUaxCZhILWc4nY1iVp3YJWsHVaCYaXvNTs0XVlMsHpg X-Received: by 2002:a17:906:8d86:b0:78d:4742:bb62 with SMTP id ry6-20020a1709068d8600b0078d4742bb62mr33705240ejc.43.1669665342886; Mon, 28 Nov 2022 11:55:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669665342; cv=none; d=google.com; s=arc-20160816; b=CiGnRRRaEIo9CKqDZqk4xMTRXmIA8r6qUaTixGKtnryxk4KSL87sAkY0CaSFi5a0/6 QRJ4RdnLBNd4WhsN6SJhJ1Qm0UHGtuxiHCuq1KEr0gUCSaM0vF05t4seyM2oGf2LS5zj SR7IcFc9vwzvdRBum0GyK4tHWeiE/Omq2XJZJ2jV1l5d2s3s72OVazvxBPnOTNjR5Kql gbBWKL0wBeR8UVWFpnp1M2bJF1C4iP72jtMENkluxLnA4Qruvhw4S7AwHxdhdPguoTwU 1s/oagN8GY4ZaE+TlYDFXnjDw1SsEKIcBt3OTBQE8LvOCT6pnOzvEhKIJwo3G8bRbn4J WZ8Q== 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 :dkim-signature; bh=evNThKKzTHRSsY8TsT5XONaB25F1pHn4lpYX0EXuSE0=; b=nj0RTjze8JWY7rf5KlPljvvYelHVjOnkJP5QqehXHy1U1Scl7mgI+Hyum0b/0+WUEg j+50KwIPSkcGO3kL+/bHgHAMHvLyuOlfRhuFcZC9YztGohr+X664bna9q6RJzA6/LQ04 XUkhDlXJHIQA8oki26pIqUD2wuAHV52oli40/NdYcNYpTTfmv8gihhN1u69ev9eXi4eD 8I/2yE2VZyKeowEFUcmvhn9ZJi4ryrh1EFLuJw679CHVR2lsDbIdstrkbAk6O/GnOXi4 MKXJ8QLG+nt68FogE7Evo/dA69Ku/aXpT3m/VQnN7G3ZyzQUzl+MH+2pX9ivjxYNrt2+ qhUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@vmware.com header.s=s1024 header.b=jjNrsLmL; 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 di10-20020a170906730a00b007be53f03fa7si5498656ejc.211.2022.11.28.11.55.22; Mon, 28 Nov 2022 11:55:42 -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=jjNrsLmL; 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 S233593AbiK1TW1 (ORCPT + 84 others); Mon, 28 Nov 2022 14:22:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233538AbiK1TWG (ORCPT ); Mon, 28 Nov 2022 14:22:06 -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 56CA12BC7; Mon, 28 Nov 2022 11:22:06 -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:mime-version:content-type; bh=evNThKKzTHRSsY8TsT5XONaB25F1pHn4lpYX0EXuSE0=; b=jjNrsLmLKXY5gLsKQxdbVxHE7Fl7/z7PyrNKh8GD/qAgr8PkunGpdbfX6G9Lw5 wbP6fXYufKZt2XPR0IAa5UC7JdxBO/PennUN9raZxDSMAhqDCOwSqnPRskKzBO 6M77UCXZc8+d1/YtaIJc/TPjsxEho1K3JHaWFBxL+Kb/9GM= 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:19:22 -0800 Received: from htb-1n-eng-dhcp122.eng.vmware.com (unknown [10.20.114.216]) by sc9-mailhost3.vmware.com (Postfix) with ESMTP id A0D852021B; Mon, 28 Nov 2022 11:19:36 -0800 (PST) Received: by htb-1n-eng-dhcp122.eng.vmware.com (Postfix, from userid 0) id 94EB0AE1A6; Mon, 28 Nov 2022 11:19:36 -0800 (PST) From: Ronak Doshi To: CC: Ronak Doshi , VMware PV-Drivers Reviewers , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , open list Subject: [PATCH net 1/2] vmxnet3: correctly report encapsulated LRO packet Date: Mon, 28 Nov 2022 11:19:19 -0800 Message-ID: <20221128191920.2493-1-doshir@vmware.com> X-Mailer: git-send-email 2.11.0 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 | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index d3e7b27eb933..8da6e06f1f06 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; @@ -1563,6 +1564,8 @@ vmxnet3_rq_rx_complete(struct vmxnet3_rx_queue *rq, 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 +1633,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 +1642,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 +1671,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