Re: [PATCH 2/3] bql: Byte queue limits
From: Eric Dumazet <hidden>
Date: 2011-04-26 05:38:39
Le lundi 25 avril 2011 à 21:38 -0700, Tom Herbert a écrit :
Networking stack support for byte queue limits, uses dynamic queue limits library. Byte queue limits are maintained per transmit queue, and a bql structure has been added to netdev_queue structure for this purpose. Configuration of bql is in the tx-<n> sysfs directory for the queue under the byte_queue_limits directory. Configuration includes: limit_min, bql minimum limit limit_max, bql maximum limit hold_time, bql slack hold time Also under the directory are: limit, current byte limit inflight, current number of bytes on the queue
Wow... magical values and very limited advices how to tune them. Tom, this reminds me you were supposed to provide Documentation/files to describe RPS, RFS, XPS ... We receive many questions about these features...
quoted hunk ↗ jump to hunk
Signed-off-by: Tom Herbert <redacted> --- include/linux/netdevice.h | 46 +++++++++++++++- net/core/net-sysfs.c | 137 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 177 insertions(+), 6 deletions(-)diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index cb8178a..0a76b88 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h@@ -44,6 +44,7 @@ #include <linux/rculist.h> #include <linux/dmaengine.h> #include <linux/workqueue.h> +#include <linux/dynamic_queue_limits.h> #include <linux/ethtool.h> #include <net/net_namespace.h>@@ -556,8 +557,10 @@ struct netdev_queue { struct Qdisc *qdisc; unsigned long state; struct Qdisc *qdisc_sleeping; -#ifdef CONFIG_RPS +#ifdef CONFIG_XPS struct kobject kobj; + bool do_bql; + struct dql dql; #endif
I have no idea why you use CONFIG_XPS for BQL (how BQL is it related to SMP ???), and why kobj is now guarded by CONFIG_XPS instead of CONFIG_RPS.