Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8ea3e439 authored by stephen hemminger's avatar stephen hemminger Committed by David S. Miller
Browse files

Subject: net: allow configuring default qdisc



Since 3.12 it has been possible to configure the default queuing
discipline via sysctl. This patch adds ability to configure the
default queue discipline in kernel configuration. This is useful for
environments where configuring the value from userspace is difficult
to manage.

The default is still the same as before (pfifo_fast) and it is
possible to change after kernel init with sysctl. This is similar
to how TCP congestion control works.

Signed-off-by: default avatarStephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7ca95118
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
@@ -352,6 +352,51 @@ config NET_SCH_PLUG
	  To compile this code as a module, choose M here: the
	  module will be called sch_plug.

menuconfig NET_SCH_DEFAULT
	bool "Allow override default queue discipline"
	---help---
	  Support for selection of default queuing discipline.

	  Nearly all users can safely say no here, and the default
	  of pfifo_fast will be used. Many distributions already set
	  the default value via /proc/sys/net/core/default_qdisc.

	  If unsure, say N.

if NET_SCH_DEFAULT

choice
	prompt "Default queuing discipline"
	default DEFAULT_PFIFO_FAST
	help
	  Select the queueing discipline that will be used by default
	  for all network devices.

	config DEFAULT_FQ
		bool "Fair Queue" if NET_SCH_FQ

	config DEFAULT_CODEL
		bool "Controlled Delay" if NET_SCH_CODEL

	config DEFAULT_FQ_CODEL
		bool "Fair Queue Controlled Delay" if NET_SCH_FQ_CODEL

	config DEFAULT_SFQ
		bool "Stochastic Fair Queue" if NET_SCH_SFQ

	config DEFAULT_PFIFO_FAST
		bool "Priority FIFO Fast"
endchoice

config DEFAULT_NET_SCH
	string
	default "pfifo_fast" if DEFAULT_PFIFO_FAST
	default "fq" if DEFAULT_FQ
	default "fq_codel" if DEFAULT_FQ_CODEL
	default "sfq" if DEFAULT_SFQ
	default "pfifo_fast"
endif

comment "Classification"

config NET_CLS
+9 −0
Original line number Diff line number Diff line
@@ -251,6 +251,15 @@ int qdisc_set_default(const char *name)
	return ops ? 0 : -ENOENT;
}

#ifdef CONFIG_NET_SCH_DEFAULT
/* Set default value from kernel config */
static int __init sch_default_qdisc(void)
{
	return qdisc_set_default(CONFIG_DEFAULT_NET_SCH);
}
late_initcall(sch_default_qdisc);
#endif

/* We know handle. Find qdisc among all qdisc's attached to device
 * (root qdisc, all its children, children of children etc.)
 * Note: caller either uses rtnl or rcu_read_lock()