| From foo@baz Thu Aug 24 17:44:02 PDT 2017 |
| From: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> |
| Date: Tue, 15 Aug 2017 16:37:04 +0300 |
| Subject: net_sched/sfq: update hierarchical backlog when drop packet |
| |
| From: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> |
| |
| |
| [ Upstream commit 325d5dc3f7e7c2840b65e4a2988c082c2c0025c5 ] |
| |
| When sfq_enqueue() drops head packet or packet from another queue it |
| have to update backlog at upper qdiscs too. |
| |
| Fixes: 2ccccf5fb43f ("net_sched: update hierarchical backlog too") |
| Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru> |
| Acked-by: Eric Dumazet <edumazet@google.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/sched/sch_sfq.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/net/sched/sch_sfq.c |
| +++ b/net/sched/sch_sfq.c |
| @@ -434,6 +434,7 @@ congestion_drop: |
| qdisc_drop(head, sch, to_free); |
| |
| slot_queue_add(slot, skb); |
| + qdisc_tree_reduce_backlog(sch, 0, delta); |
| return NET_XMIT_CN; |
| } |
| |
| @@ -465,8 +466,10 @@ enqueue: |
| /* Return Congestion Notification only if we dropped a packet |
| * from this flow. |
| */ |
| - if (qlen != slot->qlen) |
| + if (qlen != slot->qlen) { |
| + qdisc_tree_reduce_backlog(sch, 0, dropped - qdisc_pkt_len(skb)); |
| return NET_XMIT_CN; |
| + } |
| |
| /* As we dropped a packet, better let upper stack know this */ |
| qdisc_tree_reduce_backlog(sch, 1, dropped); |