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