From patchwork Mon Jan 7 19:47:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Toke_H=C3=B8iland-J=C3=B8rgensen?= X-Patchwork-Id: 1021561 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=toke.dk Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=toke.dk header.i=@toke.dk header.b="cIpIKilo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43YQtF4CLqz9rxp for ; Tue, 8 Jan 2019 06:48:21 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728212AbfAGTsU (ORCPT ); Mon, 7 Jan 2019 14:48:20 -0500 Received: from mail.toke.dk ([52.28.52.200]:47029 "EHLO mail.toke.dk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726654AbfAGTsP (ORCPT ); Mon, 7 Jan 2019 14:48:15 -0500 From: =?utf-8?q?Toke_H=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_H=C3=B8iland-J=C3=B8rgensen?= Subject: [PATCH 4/4] sch_cake: Correctly update parent qlen when splitting GSO packets 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 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 */