On 12/17/2020 10:07 AM, Eric Dumazet wrote:
On Thu, Dec 17, 2020 at 6:56 PM Ben Greear <gree...@candelatech.com> wrote:
On 12/17/20 2:11 AM, Eric Dumazet wrote:
On Thu, Dec 17, 2020 at 12:59 AM Ben Greear <gree...@candelatech.com> wrote:
On 12/16/20 3:09 PM, Ben Greear wrote:
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,
Ben

Thanks 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.

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.c
I 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


Reply via email to