From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.toke.dk (mail.toke.dk [52.28.52.200]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 53E123CB6C for ; Mon, 7 Jan 2019 14:48:45 -0500 (EST) From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=toke.dk; s=20161023; t=1546890494; bh=FtW6Wv2eQsb4frv7ergAYnTCBcqx2Q2eu+fKsBmVmSU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=cIpIKilo/dE0PAlRyiYdoEE4hSXevDA1NgNJ1QJHWMbVm4cHMwhZpjTIv0k+HeXZ9 g2uEEYjteTzpz75dph3NefXPw00JKOUrTWl3iyQea4UBLffDgl7jswU85QNZj31BGs UA1YBPI8Jp9qd5vzc9YOPkY3n1Pb0+wjzGtInpjPGBEoUH2NgTNfTleXz9ZazqpzqL qtStzxtseB4aDSeqvbUQsPmak9LXsdqZ0PqBsUlJgj2fvVu58p+ejZP91sytsEZfDg 7TGUb3ILdIS9rw3Mj84/5/x5R9HCjmYEyWkFyHHjrycg6ZYkKEcq3+pcJvzX0oWOOH +ANP/bC+FNtLg== To: netdev@vger.kernel.org Cc: cake@lists.bufferbloat.net, =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Mon, 7 Jan 2019 20:47:33 +0100 Message-Id: <20190107194733.31138-5-toke@toke.dk> In-Reply-To: <20190107194733.31138-1-toke@toke.dk> References: <20190107194733.31138-1-toke@toke.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Subject: [Cake] [PATCH 4/4] sch_cake: Correctly update parent qlen when splitting GSO packets X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Jan 2019 19:48:45 -0000 From: Toke Høiland-Jørgensen To ensure parent qdiscs have the same notion of the number of enqueued packets even after splitting a GSO packet, update the qdisc tree with the number of packets that was added due to the split. Signed-off-by: Toke Høiland-Jørgensen --- net/sched/sch_cake.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c index b910cd5c56f7..73940293700d 100644 --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c @@ -1667,7 +1667,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch, if (skb_is_gso(skb) && q->rate_flags & CAKE_FLAG_SPLIT_GSO) { struct sk_buff *segs, *nskb; netdev_features_t features = netif_skb_features(skb); - unsigned int slen = 0; + unsigned int slen = 0, numsegs = 0; segs = skb_gso_segment(skb, features & ~NETIF_F_GSO_MASK); if (IS_ERR_OR_NULL(segs)) @@ -1683,6 +1683,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch, flow_queue_add(flow, segs); sch->q.qlen++; + numsegs++; slen += segs->len; q->buffer_used += segs->truesize; b->packets++; @@ -1696,7 +1697,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch, sch->qstats.backlog += slen; q->avg_window_bytes += slen; - qdisc_tree_reduce_backlog(sch, 1, len); + qdisc_tree_reduce_backlog(sch, 1-numsegs, len-slen); consume_skb(skb); } else { /* not splitting */ -- 2.20.1