sch_sfq: rehash queues in perturb timer
authorEric Dumazet <eric.dumazet@gmail.com>
Wed, 21 Dec 2011 03:30:11 +0000 (03:30 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 21 Dec 2011 20:44:34 +0000 (15:44 -0500)
commit225d9b89c937633dfeec502741a174fe0bab5b9f
treed9a25ffaa6b4f14c0f3d624d3c654e9b0f7ec3bd
parent4e68ea26e76273cc62a981a414a8319a7f4c1077
sch_sfq: rehash queues in perturb timer

A known Out Of Order (OOO) problem hurts SFQ when timer changes
perturbation value, since all new packets delivered to SFQ enqueue might
end on different slots than previous in-flight packets.

With round robin delivery, we can thus deliver packets in a different
order.

Since SFQ is limited to small amount of in-flight packets, we can rehash
packets so that this OOO problem is fixed.

This rehashing is performed only if internal flow classifier is in use.

We now store in skb->cb[] the "struct flow_keys" so that we dont call
skb_flow_dissect() again while rehashing.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_sfq.c