Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp4393100pxu; Mon, 21 Dec 2020 11:15:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJz2zcZBBRkPoYX0FMHu72EXr8IQAuS/k3z79riArFvEGQouYY+oLXDu0icYhJooVUTc4Q7T X-Received: by 2002:a50:b246:: with SMTP id o64mr6394218edd.132.1608578131613; Mon, 21 Dec 2020 11:15:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608578131; cv=none; d=google.com; s=arc-20160816; b=VRAjzwI/Fw8MfgvQHwSWRRRuYVUWEwZkZwEkZJy0VDHjPWqr6w2CtH4LGLRaRTgT7J u4JBTeBxvdTvcb4Bj9GBZhlZeo3o0bqh5LFbiDuiAHYFQA9EydpKkYbjyw41/kGQnsMM qMRxBumMjBPbJfFzlFf9A9XAm8Piu4LpqASUnT+408AOB0DLJ7LBaP/S64Sw+/jMdO9o n8Te+0rGEykDLLofBekb0dRXBpyntQg3U5Sb71o5Gm+AexUS4Qa8ZW4lTsWIOTxgngFp vlOYB3z9b3deJDumhajFGBE4JipOcrntc+kRs9cmenTXl4C/M8k3Pydq1iwQlF1n2wU8 Kvgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=NCpPyVUyHj3sZhDD844T8joecQgf02sJErk51SRi6NI=; b=Q3akVD/qsXaVKm77vkB46N1vuOCaJphmhnYDKSOElpHnFOMGR0enUEVzuWFLmQ7xXt 56dWuRS/UZT6t3ed8QhM3JbOI6JsK+AWQWYca4RP2HL0lg5KG1GC1p+wj96bsoGwhJ2j txzhAGyL7FuysE6AQfAl52P/+fHnnv7msFO/EfoP7PR+xZ7gW4KRRlq2AGz2YGKfVNj/ c7FprrBAx3JzGkWyrRqzV8wO+HI5R3eyaGzYyW7fNsml7S5/9ES35tBRDmZ3hZtPvEtX mZ+REGBaEplH2Z+w7/SjDW578hMnmrcWz50nL4Mfcu5dGZplPIwFub8D/knaIPwPbeC3 UV9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=RWeIDB0R; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z14si11095783edr.470.2020.12.21.11.15.08; Mon, 21 Dec 2020 11:15:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=RWeIDB0R; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726714AbgLUTO4 (ORCPT + 99 others); Mon, 21 Dec 2020 14:14:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726575AbgLUTOz (ORCPT ); Mon, 21 Dec 2020 14:14:55 -0500 Received: from mail-io1-xd2b.google.com (mail-io1-xd2b.google.com [IPv6:2607:f8b0:4864:20::d2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C727FC0613D6 for ; Mon, 21 Dec 2020 11:14:14 -0800 (PST) Received: by mail-io1-xd2b.google.com with SMTP id q137so9797711iod.9 for ; Mon, 21 Dec 2020 11:14:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NCpPyVUyHj3sZhDD844T8joecQgf02sJErk51SRi6NI=; b=RWeIDB0RKWVpwXQZ9JCTXzVnrnNqgoL309PXHi6HiX3aEg6VbFWQgu/L6hD2KWQs5R yAiSf6ZYzdWT1IAmdxW0BK9acipxilhfiQDWxV9BFWPD2bEp+PpbzIAXALVWEUyiZObW zaOoVlk7CvksKR0ItWXhJSyUHkvuObiStzNWnhS2lZeWHF/tDncbwrsXdNEQ7YhHZPYh U34LPurNo3x8bPXH51q81kNzP2968VVEVXNOvlXODg+eGorcLh3ROA2a4xpe/zi2jbgS eWt0I9avZRvmxI/yUbXfV4d8K3bqemTzGWFVVENtBhfQC3gcctszDwTyNWPAoMdAwRvP 8FVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NCpPyVUyHj3sZhDD844T8joecQgf02sJErk51SRi6NI=; b=Ai+f2+un370Rfu2JBiBh/D736wY9j7SF+y12TDOxnEil+jyOthsIA2ZIGpp+BSJ4MO YETXgA+LANMZQgThtlPZjhYIGjC6dc+fHGPt1zrIc+/23UrZIIbAQAB8BLB3ALQckKGQ 0MXvbA3GTyIHPWVo2Woy8eeDxiTbgw9x1zi9sNzy1n/9L1dods06uxaK9cjBMfdomSoJ T7p3Nw1ISGJfpvaHqMG7sXyKpaz56ZsgxBdUWvXnJFO/8UnnKyG90D3BKs76VSHFlYOQ fTcClwqLd+98jM2qUuP4G2u1Ac0TNIt/T0TlR5UtlUBa/JRKHsj2xgfbBXzEKY/c3PoX UwMA== X-Gm-Message-State: AOAM5310ofIJK8UjMJrSErWQ+0mtuprOVzV8YQLl8nhg94L2biDwX4Xg k3SPPWvH8iIUrJrpiom25JifrB7Ep4utHFn37CGbNg== X-Received: by 2002:a6b:928b:: with SMTP id u133mr15045807iod.145.1608578053569; Mon, 21 Dec 2020 11:14:13 -0800 (PST) MIME-Version: 1.0 References: <5664fa0f-aef2-c336-651a-093c9eed23ab@candelatech.com> <765f370d-ce2d-b75a-2dde-87f69ae7c185@candelatech.com> <5d89fd24-f00a-7e70-00ce-83529f13b05e@candelatech.com> <20201218121627.603329b2@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com> <9003ea3720a03b4bd1b8abf3d8f645563a58f953.camel@sipsolutions.net> <43a5b45c-955a-22d4-2bf9-dbab852dbb5f@candelatech.com> In-Reply-To: From: Eric Dumazet Date: Mon, 21 Dec 2020 20:14:02 +0100 Message-ID: Subject: Re: net: tso: add UDP segmentation support: adds regression for ax200 upload To: Ben Greear , Rainer Suhm Cc: Johannes Berg , Jakub Kicinski , Luca Coelho , netdev , linux-wireless@vger.kernel.org, Willem de Bruijn Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org On Mon, Dec 21, 2020 at 8:04 PM Eric Dumazet wrote: > > On Mon, Dec 21, 2020 at 7:46 PM Eric Dumazet wrote: > > > > On Sat, Dec 19, 2020 at 5:55 PM Ben Greear wrote: > > > > > > On 12/19/20 7:18 AM, Johannes Berg wrote: > > > > On Fri, 2020-12-18 at 12:16 -0800, Jakub Kicinski wrote: > > > >> On Thu, 17 Dec 2020 12:40:26 -0800 Ben Greear wrote: > > > >>> On 12/17/20 10:20 AM, Eric Dumazet wrote: > > > >>>> On Thu, Dec 17, 2020 at 7:13 PM Ben Greear wrote: > > > >>>>> It is the iwlwifi/mvm logic that supports ax200. > > > >>>> > > > >>>> Let me ask again : > > > >>>> > > > >>>> I see two different potential call points : > > > >>>> > > > >>>> drivers/net/wireless/intel/iwlwifi/pcie/tx.c:1529: > > > >>>> tso_build_hdr(skb, hdr_page->pos, &tso, data_left, !total_len); > > > >>>> drivers/net/wireless/intel/iwlwifi/queue/tx.c:427: > > > >>>> tso_build_hdr(skb, hdr_page->pos, &tso, data_left, !total_len); > > > >>>> > > > >>>> To the best of your knowledge, which one would be used in your case ? > > > >>>> > > > >>>> Both are horribly complex, I do not want to spend time studying two > > > >>>> implementations. > > > >>> > > > >>> It is the queue/tx.c code that executes on my system, verified with > > > >>> printk. > > > >> > > > >> Not sure why Intel's not on CC here. > > > > > > > > Heh :) > > > > > > > > Let's also add linux-wireless. > > > > > > > >> Luca, is the ax200 TSO performance regression with recent kernel on your > > > >> radar? > > > > > > > > It wasn't on mine for sure, so far. But it's supposed to be Christmas > > > > vacation, so haven't checked our bug tracker etc. I see Emmanuel was at > > > > least looking at the bug report, but not sure what else happened yet. > > > > > > Not to bitch and moan too much, but even the most basic of testing would > > > have shown this, how can testing be so poor on the ax200 driver? > > > > > > It even shows up with the out-of-tree ax200 driver. > > > > > > > Off the top of my head, I don't really see the issue. Does anyone have > > > > the ability to capture the frames over the air (e.g. with another AX200 > > > > in monitor mode, load the driver with amsdu_size=3 module parameter to > > > > properly capture A-MSDUs)? > > > > > > I can do that at some point, and likely it could be reproduced with an /n or /ac > > > AP and those are a lot easier to sniff. > > > > > > Thanks, > > > Ben > > > > > > > > > -- > > > Ben Greear > > > Candela Technologies Inc http://www.candelatech.com > > > > It seems the problem comes from some skbs reaching the driver with > > gso_type == 0, > > meaning skb_is_gso_tcp() is fuzzy. (net/core/tso.c is only one of the > > skb_is_gso_tcp() users) > > > > Local TCP stack should provide either SKB_GSO_TCPV4 or SKB_GSO_TCPV6 > > for GSO packets. > > > > So maybe the issue is coming from traffic coming from a VM through a > > tun device or something, > > and our handling of GSO_ROBUST / DODGY never cared about setting > > SKB_GSO_TCPV4 or SKB_GSO_TCPV6 if not already given by user space ? > > > > Or a plain bug somewhere, possibly overwriting gso_type with 0 or garbage... > > Oh well, iwl_mvm_tx_tso_segment() 'builds' a fake gso packet. > > I suspect this will fix the issue : > > diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c > b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c > index a983c215df310776ffe67f3b3ffa203eab609bfc..e7ad6367c88de4aff700c630d850760d1d3bf011 > 100644 > --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c > +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c > @@ -773,6 +773,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, > unsigned int num_subframes, > > next = skb_gso_segment(skb, netdev_flags); > skb_shinfo(skb)->gso_size = mss; > + skb_shinfo(skb)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; > if (WARN_ON_ONCE(IS_ERR(next))) > return -EINVAL; > else if (next) Or more precisely : diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c index a983c215df310776ffe67f3b3ffa203eab609bfc..11145bf29f3cbeefcce1a05cc81fd90978f2cbfe 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c @@ -773,6 +773,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes, next = skb_gso_segment(skb, netdev_flags); skb_shinfo(skb)->gso_size = mss; + skb_shinfo(skb)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; if (WARN_ON_ONCE(IS_ERR(next))) return -EINVAL; else if (next) @@ -795,6 +796,7 @@ iwl_mvm_tx_tso_segment(struct sk_buff *skb, unsigned int num_subframes, if (tcp_payload_len > mss) { skb_shinfo(tmp)->gso_size = mss; + skb_shinfo(tmp)->gso_type = ipv4 ? SKB_GSO_TCPV4 : SKB_GSO_TCPV6; } else { if (qos) { u8 *qc;