Commits
Vitaliy Gusev authored and Pavel Emelianov committed 4f4e3df351a
[PATCH] net: excessive UDP lost on VE send path When tring to send big UDP packets from VE then other side receive about 60% of all IP fragmentated packets and about 10% of all UDP packets that was sent from VE. Fragmentated IP-packets are dropped on an ethernet interface because an interface's queue is full. The ethernet interface's queue get full as venet/veth device passes fragmentated IP-packet with calling a sk_buff's destructor (by skb_orphan), socket's buffer become free, although it IP-packet isn't passed through the ethernet device. Therefore bulk IP-packets are sent through venet/veth interface that is much more than the real ethernet interface can transfer. Decision: venet/veth interface call skb_orphan only for non IP-packets. For IP packets skb_orhpan (actually destructor) is called later: in IP local or when skb is delivered to ethernet and __kfree_skb() is called. Tested with venet, veth, veth + vlan (host-node). Thanks to Denis Lunev and Alexey Kuznetsov for ideas and help.