Re: net: tso: add UDP segmentation support: adds regression for ax200 upload
From: Ben Greear <hidden>
Date: 2020-12-17 18:14:17
On 12/17/2020 10:07 AM, Eric Dumazet wrote:
On Thu, Dec 17, 2020 at 6:56 PM Ben Greear [off-list ref] wrote:quoted
On 12/17/20 2:11 AM, Eric Dumazet wrote:quoted
On Thu, Dec 17, 2020 at 12:59 AM Ben Greear [off-list ref] wrote:quoted
On 12/16/20 3:09 PM, Ben Greear wrote:quoted
Hello Eric, The patch below evidently causes TCP throughput to be about 50Mbps instead of 700Mbps when using ax200 to upload tcp traffic. When I disable TSO, performance goes back up to around 700Mbps.As a followup, when I revert the patch, upload speed goes to ~900Mbps, so even better than just disabling TSO (I left TSO enabled after reverting the patch). Thanks, BenThanks for the report ! It seems drivers/net/wireless/intel/iwlwifi/pcie/tx.c:iwl_fill_data_tbs_amsdu() calls tso_build_hdr() with extra bytes (SNAP header), it is not yet clear to me what is broken :/Your patch is guessing tcp vs udp by looking at header length from what I could tell. So if something uses a different size, it probably gets confused?I do not think so, my patch selects TCP vs UDP by using standard GSO helper skb_is_gso_tcp(skb) tso->tlen is initialized from tso_start() : int tlen = skb_is_gso_tcp(skb) ? tcp_hdrlen(skb) : sizeof(struct udphdr); tso->tlen = tlen; Maybe for some reason skb_is_gso_tcp(skb) returns false in your case, some debugging would help.quoted
quoted
Can you confirm which driver is used for ax200 ? I see tso_build_hdr() also being used from drivers/net/wireless/intel/iwlwifi/queue/tx.cI tested against the un-modified ax200 5.10.0 kernel driver, and it has the issue. The ax200 backports release/core56 driver acts a bit different (poorer performance over all than in-kernel driver), but has similar upstream issues that are mitigated by disabling TSO.Sorry, I can not find ax200 driver.
It is the iwlwifi/mvm logic that supports ax200. Thanks, Ben