From patchwork Mon Mar 2 15:18:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leslie Monis X-Patchwork-Id: 1247705 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 (no SPF record) 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=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=nrm4rEav; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48WP1L46vVz9sPK for ; Tue, 3 Mar 2020 02:18:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727311AbgCBPSo (ORCPT ); Mon, 2 Mar 2020 10:18:44 -0500 Received: from mail-pg1-f194.google.com ([209.85.215.194]:40725 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726751AbgCBPSn (ORCPT ); Mon, 2 Mar 2020 10:18:43 -0500 Received: by mail-pg1-f194.google.com with SMTP id t24so5569936pgj.7 for ; Mon, 02 Mar 2020 07:18:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Ww6PVJ28DVfom+lsskPik3ecq8bDZeuZCLwJlAjQfg0=; b=nrm4rEavbefG9i6qSGJ6dcn4zSAPHasftARp8OoNeqOoAYgwBUwoN2v5a4MvlLKZhv LbXrzSDFTMzswbr/pvbWtFZv3GKVshwvTVQL7XVRenP6MIGJUzUtColtuYI92oPYSFmU g9gGkfSYEynJbS/Er66iqc44H8unv7p0zLoCGbvVzjYcNjHhzm82IZss60puwT+bjcpZ y3675QdF/xJl0eJo4NEm+k+1pCgB8AVr6yxlYOXB5s25uRJ86RwmakjizJTh0ZLWCfeN 7FDbPaygNTYGjAcqh62c0g7UVqv0gYQzkm5ibI0J664TINv07jX2YXy2WQ2eM+iA/4Gv erUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Ww6PVJ28DVfom+lsskPik3ecq8bDZeuZCLwJlAjQfg0=; b=o96yKKtczWIIfvuB7OrHqNpzAzuza1dLs34TVoAIB3TP8hkaiE3dgJ+AnZked0TLdT I8EzdxIMQspK+gdLxzVCuIwFqFpvnK05DE/A2sYv3qT1uclWspe942ywuiIbLL41n4LA BqPEHX5YEBGWb2zpE/6InuLZDFmxnW/Z/BmYC6je7I5PlivjuxdQiY6v/83/PFxpd+bj v1LY7bdR2twWxA9AGo8TAycjEgGXE83aDW6NRSbwyOsB6ZQZjzI5Khx63o6C1FaxG2S/ N8OY2ZBxyy5IaTjSfJ5Cw40gb9mbcKls1SdlV9gBNp2UG0VPo7Mp64zjbhqCjgVOZhOQ y/Gg== X-Gm-Message-State: APjAAAWSc+/IZrgHiqIdHXRcfM3jlwrX2OxHt9TlhyiKHa5tDG7kX7jU e/9kkRUyZu30IzH5KKGBc4BAPP5+ X-Google-Smtp-Source: APXvYqwH09WijyTaWoHeQrbeJAR2ytqJEoEvFU9cQ5qJG9vT/8p+yxBgnLfruu4fJoHljEAaVlUG7Q== X-Received: by 2002:a63:4c66:: with SMTP id m38mr20299543pgl.313.1583162321811; Mon, 02 Mar 2020 07:18:41 -0800 (PST) Received: from localhost.localdomain ([103.89.235.106]) by smtp.gmail.com with ESMTPSA id s206sm21908529pfs.100.2020.03.02.07.18.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 07:18:41 -0800 (PST) From: Leslie Monis To: netdev@vger.kernel.org Cc: davem@davemloft.net, tahiliani@nitk.edu.in, gautamramk@gmail.com Subject: [PATCH net-next 1/4] pie: use term backlog instead of qlen Date: Mon, 2 Mar 2020 20:48:28 +0530 Message-Id: <20200302151831.2811-2-lesliemonis@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200302151831.2811-1-lesliemonis@gmail.com> References: <20200302151831.2811-1-lesliemonis@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Remove ambiguity by using the term backlog instead of qlen when representing the queue length in bytes. Signed-off-by: Mohit P. Tahiliani Signed-off-by: Gautam Ramakrishnan Signed-off-by: Leslie Monis --- include/net/pie.h | 10 +++++----- net/sched/sch_pie.c | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/net/pie.h b/include/net/pie.h index fd5a37cb7993..24f68c1e9919 100644 --- a/include/net/pie.h +++ b/include/net/pie.h @@ -46,7 +46,7 @@ struct pie_params { * @accu_prob: accumulated drop probability * @dq_count: number of bytes dequeued in a measurement cycle * @avg_dq_rate: calculated average dq rate - * @qlen_old: queue length during previous qdelay calculation + * @backlog_old: queue backlog during previous qdelay calculation * @accu_prob_overflows: number of times accu_prob overflows */ struct pie_vars { @@ -58,7 +58,7 @@ struct pie_vars { u64 accu_prob; u64 dq_count; u32 avg_dq_rate; - u32 qlen_old; + u32 backlog_old; u8 accu_prob_overflows; }; @@ -127,12 +127,12 @@ static inline void pie_set_enqueue_time(struct sk_buff *skb) } bool pie_drop_early(struct Qdisc *sch, struct pie_params *params, - struct pie_vars *vars, u32 qlen, u32 packet_size); + struct pie_vars *vars, u32 backlog, u32 packet_size); void pie_process_dequeue(struct sk_buff *skb, struct pie_params *params, - struct pie_vars *vars, u32 qlen); + struct pie_vars *vars, u32 backlog); void pie_calculate_probability(struct pie_params *params, struct pie_vars *vars, - u32 qlen); + u32 backlog); #endif diff --git a/net/sched/sch_pie.c b/net/sched/sch_pie.c index 915bcdb59a9f..8a2f9f11c86f 100644 --- a/net/sched/sch_pie.c +++ b/net/sched/sch_pie.c @@ -31,7 +31,7 @@ struct pie_sched_data { }; bool pie_drop_early(struct Qdisc *sch, struct pie_params *params, - struct pie_vars *vars, u32 qlen, u32 packet_size) + struct pie_vars *vars, u32 backlog, u32 packet_size) { u64 rnd; u64 local_prob = vars->prob; @@ -51,7 +51,7 @@ bool pie_drop_early(struct Qdisc *sch, struct pie_params *params, /* If we have fewer than 2 mtu-sized packets, disable pie_drop_early, * similar to min_th in RED */ - if (qlen < 2 * mtu) + if (backlog < 2 * mtu) return false; /* If bytemode is turned on, use packet size to compute new @@ -215,7 +215,7 @@ static int pie_change(struct Qdisc *sch, struct nlattr *opt, } void pie_process_dequeue(struct sk_buff *skb, struct pie_params *params, - struct pie_vars *vars, u32 qlen) + struct pie_vars *vars, u32 backlog) { psched_time_t now = psched_get_time(); u32 dtime = 0; @@ -231,7 +231,7 @@ void pie_process_dequeue(struct sk_buff *skb, struct pie_params *params, vars->dq_tstamp = now; - if (qlen == 0) + if (backlog == 0) vars->qdelay = 0; if (dtime == 0) @@ -244,7 +244,7 @@ void pie_process_dequeue(struct sk_buff *skb, struct pie_params *params, * we have enough packets to calculate the drain rate. Save * current time as dq_tstamp and start measurement cycle. */ - if (qlen >= QUEUE_THRESHOLD && vars->dq_count == DQCOUNT_INVALID) { + if (backlog >= QUEUE_THRESHOLD && vars->dq_count == DQCOUNT_INVALID) { vars->dq_tstamp = psched_get_time(); vars->dq_count = 0; } @@ -283,7 +283,7 @@ void pie_process_dequeue(struct sk_buff *skb, struct pie_params *params, * dq_count to 0 to re-enter the if block when the next * packet is dequeued */ - if (qlen < QUEUE_THRESHOLD) { + if (backlog < QUEUE_THRESHOLD) { vars->dq_count = DQCOUNT_INVALID; } else { vars->dq_count = 0; @@ -307,7 +307,7 @@ void pie_process_dequeue(struct sk_buff *skb, struct pie_params *params, EXPORT_SYMBOL_GPL(pie_process_dequeue); void pie_calculate_probability(struct pie_params *params, struct pie_vars *vars, - u32 qlen) + u32 backlog) { psched_time_t qdelay = 0; /* in pschedtime */ psched_time_t qdelay_old = 0; /* in pschedtime */ @@ -322,7 +322,7 @@ void pie_calculate_probability(struct pie_params *params, struct pie_vars *vars, vars->qdelay_old = vars->qdelay; if (vars->avg_dq_rate > 0) - qdelay = (qlen << PIE_SCALE) / vars->avg_dq_rate; + qdelay = (backlog << PIE_SCALE) / vars->avg_dq_rate; else qdelay = 0; } else { @@ -330,10 +330,10 @@ void pie_calculate_probability(struct pie_params *params, struct pie_vars *vars, qdelay_old = vars->qdelay_old; } - /* If qdelay is zero and qlen is not, it means qlen is very small, + /* If qdelay is zero and backlog is not, it means backlog is very small, * so we do not update probabilty in this round. */ - if (qdelay == 0 && qlen != 0) + if (qdelay == 0 && backlog != 0) update_prob = false; /* In the algorithm, alpha and beta are between 0 and 2 with typical @@ -409,7 +409,7 @@ void pie_calculate_probability(struct pie_params *params, struct pie_vars *vars, vars->prob -= vars->prob / 64; vars->qdelay = qdelay; - vars->qlen_old = qlen; + vars->backlog_old = backlog; /* We restart the measurement cycle if the following conditions are met * 1. If the delay has been low for 2 consecutive Tupdate periods From patchwork Mon Mar 2 15:18:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leslie Monis X-Patchwork-Id: 1247706 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 (no SPF record) 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=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Yz1G6byl; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48WP1M6flrz9sPK for ; Tue, 3 Mar 2020 02:18:47 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727326AbgCBPSr (ORCPT ); Mon, 2 Mar 2020 10:18:47 -0500 Received: from mail-pf1-f195.google.com ([209.85.210.195]:43437 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726390AbgCBPSq (ORCPT ); Mon, 2 Mar 2020 10:18:46 -0500 Received: by mail-pf1-f195.google.com with SMTP id s1so5701190pfh.10 for ; Mon, 02 Mar 2020 07:18:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=QfVlUkRWx96jKVo5Y/zvgqtMfTE1JVSuMZ+/gn0c/VM=; b=Yz1G6bylSXcup+9lVHIOvskU4X7N7Evo91DLv4Wsag0dAR3/fRUGeV8Xv22Nw4yzP3 1YYgebs+jRDCkgHra3wskDutg7UNU/FeoYe8VfbfSqMp5CJDnzeCq3MOxj6/B4Mck2tF B8ErZ9eiGeNOsTvg9TOrJA8Iw4yo8/2/O98Uf0F+9hdhonILiE6VlhJ7MPlKGk+pTrdC hRIzRYFprYhbkHLush/LKpCkhhd13i/YsWk0iNoFp6waEmJIDge+5puXO9u8i3Gfu1tV i61rO0O84gNtul5f1zBc778YxA/TXagPNU30OfbNw7dFoie/6bLsnX9Wl/8xO0PrVpSq EOtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=QfVlUkRWx96jKVo5Y/zvgqtMfTE1JVSuMZ+/gn0c/VM=; b=bd8lta5Jmt8vZdaFpFsv2l8ZhwZsDMsKra8Gz8+jfQH72bx0pPqzVZbE7KZXM6qW7v /M7BQg++FfCVCJ1hR2BvPNm6DqCY/SSEFOu+uhS8KdgJPR0C1LQ3HCPoAiuW1yhRmLiy DutjGWsdRF3HrwewhrHJTixyojvzOdp33jGv6dAyWy4oErvTIEcunMhKe6SmxvYEEi+c QDjCQWt0j6f7s1dPTU0wtng84+L8F5e3k3oWDZtrP445LbpdcYcTCnIcnCHHmGXZ4Vyp SdrTAAvxjVcTSIS93ujuOZitRFFxyrkIblWW6psUK+3C8k7f7p3fLeESaNdHPEFce5Wr 2pog== X-Gm-Message-State: APjAAAX/fy95vezV/L/gnGX4mkH9IdGqD+E3xDSpraBKDcsN/uzT/a6O J/h1ZdBuiG4gmKMHn2lJ0mMSoogM X-Google-Smtp-Source: APXvYqzb8z6AEv97sAZRAcOqZ3HZIrks+CWBwE7Ioo/W+FrQCPUJCtcA3UBF4cSKr+IuR7CBZKqhpQ== X-Received: by 2002:aa7:8610:: with SMTP id p16mr18814576pfn.28.1583162325165; Mon, 02 Mar 2020 07:18:45 -0800 (PST) Received: from localhost.localdomain ([103.89.235.106]) by smtp.gmail.com with ESMTPSA id s206sm21908529pfs.100.2020.03.02.07.18.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 07:18:44 -0800 (PST) From: Leslie Monis To: netdev@vger.kernel.org Cc: davem@davemloft.net, tahiliani@nitk.edu.in, gautamramk@gmail.com Subject: [PATCH net-next 2/4] pie: remove unnecessary type casting Date: Mon, 2 Mar 2020 20:48:29 +0530 Message-Id: <20200302151831.2811-3-lesliemonis@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200302151831.2811-1-lesliemonis@gmail.com> References: <20200302151831.2811-1-lesliemonis@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In function pie_calculate_probability(), the variables alpha and beta are of type u64. The variables qdelay, qdelay_old and params->target are of type psched_time_t (which is also u64). The explicit type casting done when calculating the value for the variable delta is redundant and not required. Signed-off-by: Mohit P. Tahiliani Signed-off-by: Gautam Ramakrishnan Signed-off-by: Leslie Monis --- net/sched/sch_pie.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/sched/sch_pie.c b/net/sched/sch_pie.c index 8a2f9f11c86f..198cfa34a00a 100644 --- a/net/sched/sch_pie.c +++ b/net/sched/sch_pie.c @@ -363,8 +363,8 @@ void pie_calculate_probability(struct pie_params *params, struct pie_vars *vars, } /* alpha and beta should be between 0 and 32, in multiples of 1/16 */ - delta += alpha * (u64)(qdelay - params->target); - delta += beta * (u64)(qdelay - qdelay_old); + delta += alpha * (qdelay - params->target); + delta += beta * (qdelay - qdelay_old); oldprob = vars->prob; From patchwork Mon Mar 2 15:18:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leslie Monis X-Patchwork-Id: 1247708 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 (no SPF record) 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=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=Ini05Wx/; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48WP1X15rQz9sRR for ; Tue, 3 Mar 2020 02:18:56 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727367AbgCBPSv (ORCPT ); Mon, 2 Mar 2020 10:18:51 -0500 Received: from mail-pj1-f65.google.com ([209.85.216.65]:53676 "EHLO mail-pj1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727328AbgCBPSv (ORCPT ); Mon, 2 Mar 2020 10:18:51 -0500 Received: by mail-pj1-f65.google.com with SMTP id cx7so1391930pjb.3 for ; Mon, 02 Mar 2020 07:18:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=hEQxyDr/z3Ege8bJmFhXxokmZ7WijYnR55gJgVyhrM8=; b=Ini05Wx/yhCx6qpO19bjY6UHTx8DiOJ76pDKyBlHmjiUV7j2Xn5D65Tw/iPnAlWwC9 0gMdnWa75QxOtiup8NJ1yozuBdBTmz8bVnnMx5/NyIYGcUwHWU+QarQjj4gUQUw4DJkF SHxe+U7nKT34XZhlVU/89CcEWuq11Vz+Tdi5l1nHL58omBu5LHieaWEbaX13F50Tw+Zc 0LJwg1y+meKa88o11mM8RVtImC4jwIqmzLckopwU+hmpMlmOlJKcyOX0T3dT1wR+OpYA wNZx06asIMWX9G0ueqMH+3//GDLlUOltBi6NKL51jnY4sRx4vO4d/nuWlMQHeitzx5mg vb4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=hEQxyDr/z3Ege8bJmFhXxokmZ7WijYnR55gJgVyhrM8=; b=RMIl3r0wO93OeZcI7oFDQowxJvH32HBUD95fdNcEtL2YmOXEZGyfbHUof/QK8DfOnr lqyLVshd8RcghviW5KR+KWE74EqoXOEFWt6YsQ996BCN7CDHQ4TRScYXoHCq3rUqQKhy a2cdV9sihItNZRlgj9f7pLTANTqJIezsMPAt5oU22gF6RVdtMO6z5Fb9981SxNbj3G6/ KCMTUuT6wHGeL1Jz13rGMzNwr/AZKOATYrBGA8WjpjLh8OwlzEuoYl7sByfluvt8US7D cypwHhdJC82YTYB005k5EY0HRA+NBZzVdfYU9tx1ffTFhD9X/Fzh/zH8AECy116vZG2R Ctxg== X-Gm-Message-State: ANhLgQ0QstcMAS3gWneaL9E3l+ay4I1iaw0L//dV7HP6PTJ2lEHKiZZ+ aMeQA6k+lJT4pM/L8084uuwTuW63 X-Google-Smtp-Source: ADFU+vt+irRUSBKmrX4fu32M1/KTFVUdlHWOxqy82dOaDeddAC5qpnhCQ13PQ9+kGdo7U7oGzDFCuQ== X-Received: by 2002:a17:90a:9dc3:: with SMTP id x3mr77238pjv.45.1583162328542; Mon, 02 Mar 2020 07:18:48 -0800 (PST) Received: from localhost.localdomain ([103.89.235.106]) by smtp.gmail.com with ESMTPSA id s206sm21908529pfs.100.2020.03.02.07.18.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 07:18:47 -0800 (PST) From: Leslie Monis To: netdev@vger.kernel.org Cc: davem@davemloft.net, tahiliani@nitk.edu.in, gautamramk@gmail.com Subject: [PATCH net-next 3/4] pie: remove pie_vars->accu_prob_overflows Date: Mon, 2 Mar 2020 20:48:30 +0530 Message-Id: <20200302151831.2811-4-lesliemonis@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200302151831.2811-1-lesliemonis@gmail.com> References: <20200302151831.2811-1-lesliemonis@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The variable pie_vars->accu_prob is used as an accumulator for probability values. Since probabilty values are scaled using the MAX_PROB macro denoting (2^64 - 1), pie_vars->accu_prob is likely to overflow as it is of type u64. The variable pie_vars->accu_prob_overflows counts the number of times the variable pie_vars->accu_prob overflows. The MAX_PROB macro needs to be equal to at least (2^39 - 1) in order to do precise calculations without any underflow. Thus MAX_PROB can be reduced to (2^56 - 1) without affecting the precision in calculations drastically. Doing so will eliminate the need for the variable pie_vars->accu_prob_overflows as the variable pie_vars->accu_prob will never overflow. Removing the variable pie_vars->accu_prob_overflows also reduces the size of the structure pie_vars to exactly 64 bytes. Signed-off-by: Mohit P. Tahiliani Signed-off-by: Gautam Ramakrishnan Signed-off-by: Leslie Monis --- include/net/pie.h | 5 +---- net/sched/sch_fq_pie.c | 1 - net/sched/sch_pie.c | 21 ++++++--------------- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/include/net/pie.h b/include/net/pie.h index 24f68c1e9919..1c645b76a2ed 100644 --- a/include/net/pie.h +++ b/include/net/pie.h @@ -8,7 +8,7 @@ #include #include -#define MAX_PROB U64_MAX +#define MAX_PROB (U64_MAX >> BITS_PER_BYTE) #define DTIME_INVALID U64_MAX #define QUEUE_THRESHOLD 16384 #define DQCOUNT_INVALID -1 @@ -47,7 +47,6 @@ struct pie_params { * @dq_count: number of bytes dequeued in a measurement cycle * @avg_dq_rate: calculated average dq rate * @backlog_old: queue backlog during previous qdelay calculation - * @accu_prob_overflows: number of times accu_prob overflows */ struct pie_vars { psched_time_t qdelay; @@ -59,7 +58,6 @@ struct pie_vars { u64 dq_count; u32 avg_dq_rate; u32 backlog_old; - u8 accu_prob_overflows; }; /** @@ -107,7 +105,6 @@ static inline void pie_vars_init(struct pie_vars *vars) vars->accu_prob = 0; vars->dq_count = DQCOUNT_INVALID; vars->avg_dq_rate = 0; - vars->accu_prob_overflows = 0; } static inline struct pie_skb_cb *get_pie_cb(const struct sk_buff *skb) diff --git a/net/sched/sch_fq_pie.c b/net/sched/sch_fq_pie.c index 214657eb3dfd..a9da8776bf5b 100644 --- a/net/sched/sch_fq_pie.c +++ b/net/sched/sch_fq_pie.c @@ -189,7 +189,6 @@ static int fq_pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch, out: q->stats.dropped++; sel_flow->vars.accu_prob = 0; - sel_flow->vars.accu_prob_overflows = 0; __qdisc_drop(skb, to_free); qdisc_qstats_drop(sch); return NET_XMIT_CN; diff --git a/net/sched/sch_pie.c b/net/sched/sch_pie.c index 198cfa34a00a..718ac61f4d47 100644 --- a/net/sched/sch_pie.c +++ b/net/sched/sch_pie.c @@ -62,27 +62,19 @@ bool pie_drop_early(struct Qdisc *sch, struct pie_params *params, else local_prob = vars->prob; - if (local_prob == 0) { + if (local_prob == 0) vars->accu_prob = 0; - vars->accu_prob_overflows = 0; - } - - if (local_prob > MAX_PROB - vars->accu_prob) - vars->accu_prob_overflows++; - - vars->accu_prob += local_prob; + else + vars->accu_prob += local_prob; - if (vars->accu_prob_overflows == 0 && - vars->accu_prob < (MAX_PROB / 100) * 85) + if (vars->accu_prob < (MAX_PROB / 100) * 85) return false; - if (vars->accu_prob_overflows == 8 && - vars->accu_prob >= MAX_PROB / 2) + if (vars->accu_prob >= (MAX_PROB / 2) * 17) return true; - prandom_bytes(&rnd, 8); + prandom_bytes(&rnd, 7); if (rnd < local_prob) { vars->accu_prob = 0; - vars->accu_prob_overflows = 0; return true; } @@ -129,7 +121,6 @@ static int pie_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch, out: q->stats.dropped++; q->vars.accu_prob = 0; - q->vars.accu_prob_overflows = 0; return qdisc_drop(skb, sch, to_free); } From patchwork Mon Mar 2 15:18:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leslie Monis X-Patchwork-Id: 1247707 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 (no SPF record) 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=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20161025 header.b=hDaRnIxN; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48WP1W2VnMz9sRN for ; Tue, 3 Mar 2020 02:18:55 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727397AbgCBPSy (ORCPT ); Mon, 2 Mar 2020 10:18:54 -0500 Received: from mail-pf1-f196.google.com ([209.85.210.196]:42554 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727335AbgCBPSx (ORCPT ); Mon, 2 Mar 2020 10:18:53 -0500 Received: by mail-pf1-f196.google.com with SMTP id f5so744379pfk.9 for ; Mon, 02 Mar 2020 07:18:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Br6c2Y1AI7IGoOUT9S32pmgk6z94hhBAZwhijTHQ5mg=; b=hDaRnIxNTbb9Ri4vNFvaaxq3dalQGloWpCS+epxtXpqVQP7nEyyfs6d2f6AmdJTYX+ wgPNs/UOB65yN4VkSUgz2Si4WLUn0+tk81o3hxMCw6NlbIbSKYA9cD19CWY+Wsdfr6S8 lojWskuDIVV3IyqGAu9QvT+HOIb1VhnGNEgl43jbPwHmvjC7jCOWdsZS/RDCcv1yTfZ6 KrDB/4QS+gBndivtS4u2otasdqm8Ur52fzSFnVi3/B/3s3u8C1HmT+pRY09/B+JgjOam YJTKeI5FxxW8ZgGhzPjvQbtBY2dlV3eZZ8XnnUcTGIlu1QMfZAC59MLh+wsj7ozTeSNQ FcKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Br6c2Y1AI7IGoOUT9S32pmgk6z94hhBAZwhijTHQ5mg=; b=RcN5oD6N70/l4CFPM9bbxVJI9pbKWY5I3JWonkux4ieRmzwtM0Tgv56ExnitHCDQrh l1NGVW+Ue1cs/vzeg+cbTszh3EPkAjpEUPb1bVWsgNPja3cOm/Vk1/PwqSwywFJ+QTEb eM072OAQN4gL0igAwvpXC4IzuBr1+MvssZm7j1v/qbS2ZhQ0nkR767wfJqo4c6/ytJSZ IOT5gSBOUWBS1vlHJSRfwO67pczKOxQlWJVdTU6Z4H2VfKAU2spemJddMfy8MgBmAGtL gSGFASKCq0JrnD0fazpo2cDnR3HoKedv1KNdx4IbN1aMlFcCPdt4dJ3gEw3UAAtSdxnl V83Q== X-Gm-Message-State: APjAAAW9i0LiONpbU713ZCrScbpMLvOXh+ae4f0Jpj+5NKNNqvLGsDri hHjQOnqfyCcXUB0AqByfizTl0vO+ X-Google-Smtp-Source: APXvYqxF8udT2WsdTax/oksWNV8bS7xpgMlNmg/jbGij0nTFd0NRu46x6NvUU0mAHtYBdLi2+RXk9g== X-Received: by 2002:a63:1e1d:: with SMTP id e29mr20278770pge.347.1583162331920; Mon, 02 Mar 2020 07:18:51 -0800 (PST) Received: from localhost.localdomain ([103.89.235.106]) by smtp.gmail.com with ESMTPSA id s206sm21908529pfs.100.2020.03.02.07.18.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 07:18:51 -0800 (PST) From: Leslie Monis To: netdev@vger.kernel.org Cc: davem@davemloft.net, tahiliani@nitk.edu.in, gautamramk@gmail.com Subject: [PATCH net-next 4/4] pie: realign comment Date: Mon, 2 Mar 2020 20:48:31 +0530 Message-Id: <20200302151831.2811-5-lesliemonis@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200302151831.2811-1-lesliemonis@gmail.com> References: <20200302151831.2811-1-lesliemonis@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Realign a comment after the change introduced by the previous patch. Signed-off-by: Leslie Monis --- include/net/pie.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/net/pie.h b/include/net/pie.h index 1c645b76a2ed..3fe2361e03b4 100644 --- a/include/net/pie.h +++ b/include/net/pie.h @@ -38,15 +38,15 @@ struct pie_params { /** * struct pie_vars - contains pie variables - * @qdelay: current queue delay - * @qdelay_old: queue delay in previous qdelay calculation - * @burst_time: burst time allowance - * @dq_tstamp: timestamp at which dq rate was last calculated - * @prob: drop probability - * @accu_prob: accumulated drop probability - * @dq_count: number of bytes dequeued in a measurement cycle - * @avg_dq_rate: calculated average dq rate - * @backlog_old: queue backlog during previous qdelay calculation + * @qdelay: current queue delay + * @qdelay_old: queue delay in previous qdelay calculation + * @burst_time: burst time allowance + * @dq_tstamp: timestamp at which dq rate was last calculated + * @prob: drop probability + * @accu_prob: accumulated drop probability + * @dq_count: number of bytes dequeued in a measurement cycle + * @avg_dq_rate: calculated average dq rate + * @backlog_old: queue backlog during previous qdelay calculation */ struct pie_vars { psched_time_t qdelay;