net: sched: explicit locking in gso_cpu fallback
authorJohn Fastabend <john.fastabend@gmail.com>
Thu, 7 Dec 2017 17:55:45 +0000 (09:55 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 8 Dec 2017 18:32:25 +0000 (13:32 -0500)
commita53851e2c3218aa30b77abd6e68cf1c371f15afe
tree7003db6a43cb7a0853a497ce33e64333756e4b87
parentd59f5ffa59d80ff3a2f3b56a9acea4310974c6d1
net: sched: explicit locking in gso_cpu fallback

This work is preparing the qdisc layer to support egress lockless
qdiscs. If we are running the egress qdisc lockless in the case we
overrun the netdev, for whatever reason, the netdev returns a busy
error code and the skb is parked on the gso_skb pointer. With many
cores all hitting this case at once its possible to have multiple
sk_buffs here so we turn gso_skb into a queue.

This should be the edge case and if we see this frequently then
the netdev/qdisc layer needs to back off.

Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/sch_generic.h
net/sched/sch_generic.c