[Bug] skb truesize does not update properly in many place

3 messages, 2 authors, 2011-10-14 · open the first message on its own page

[Bug] skb truesize does not update properly in many place

From: <hidden>
Date: 2011-10-14 05:33:16

Hi Eric Dumazet:

I see you are correcting the wrong skb truesize, I found the
same problem exists in many forms and many places, like:

After calling skb_fill_page_desc(), what should be updated 
to truesize.

pskb_expand_head(), __pskb_pull_tail()... do not update the
truesize.

...

-RongQing.Li

Re: [Bug] skb truesize does not update properly in many place

From: Eric Dumazet <hidden>
Date: 2011-10-14 05:48:42

Le vendredi 14 octobre 2011 à 13:33 +0800, roy.qing.li@gmail.com a
écrit :
Hi Eric Dumazet:

I see you are correcting the wrong skb truesize, I found the
same problem exists in many forms and many places, like:

After calling skb_fill_page_desc(), what should be updated 
to truesize.

pskb_expand_head(), __pskb_pull_tail()... do not update the
truesize.
All this is scheduled, but any help is appreciated.

I gave the general idea and patched some drivers, I hope other dev will
follow me in this work.

I am now focusing in the TCP pruning effect, that we can see with WIFI
drivers (and also with drivers using a full PAGE to store a 1500 byte
tcp frame), when a single packet loss is happening on a session with
large RTT.

All this truesize saga started because I was shocked by following
"netstat -s" extract on my laptop after few minutes of Internet stuff.

    848 packets collapsed in receive queue due to low socket buffer

Re: [Bug] skb truesize does not update properly in many place

From: Eric Dumazet <hidden>
Date: 2011-10-14 05:52:04

Le vendredi 14 octobre 2011 à 07:48 +0200, Eric Dumazet a écrit :
I am now focusing in the TCP pruning effect, that we can see with WIFI
drivers (and also with drivers using a full PAGE to store a 1500 byte
tcp frame), when a single packet loss is happening on a session with
large RTT.
Here is what I am currently testing :

When one SKB has to be queued in out_of_order_queue,
possibly for a long time, try to reduce its truesize (by using
skb_copy_expand()) if skb->truesize is larger than
2*SKB_TRUESIZE(skb->len)

It seems to work very well, and should not happen in fast path.

Stay tuned
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help