2015-12-14 12:58:26

by Janusz Dziedzic

[permalink] [raw]
Subject: SUPPORTS_CLONED_SKBS question

Hello Johannes,

During ath9k test we found a performance problem in TCP TX direction.
Seems a lot of time we spent in memcpy() and this is
because ath9k don't set SUPPORTS_CLONED_SKBS, and next
pskb_expand_head() is called for every TCP frame.

Base of SUPPORTS_CLONED_SKBS description, we can set this flag
in case driver will not touch payload or tailroom.
What exactly does it mean?

What in case of headroom, while ath9k already move 80211 header - add padding
after header (skb_push(hdrlen & 3) + memmove) and remove this padding
in tx_completion.

What in case of FCS?

I am not sure this is save to set this flag for ath9k?
Any hints?

BR
Janusz


2015-12-14 13:30:53

by Johannes Berg

[permalink] [raw]
Subject: Re: SUPPORTS_CLONED_SKBS question

+Ido.

On Mon, 2015-12-14 at 13:58 +0100, Janusz Dziedzic wrote:

> Base of SUPPORTS_CLONED_SKBS description, we can set this flag
> in case driver will not touch payload or tailroom.
> What exactly does it mean?

Well, you must not modify the data in a way that would make the clone
invalid. That means you can't write to any of the data, essentially.

> What in case of headroom, while ath9k already move 80211 header - add
> padding
> after header (skb_push(hdrlen & 3) + memmove) and remove this padding
> in tx_completion.

I think that should be OK since you don't touch the payload data or the
tailroom.

> What in case of FCS?

What about it? Hopefully that's added by hardware and has no effect on
the skb?!

johannes