From: Stephen Hemminger <stephen@networkplumber.org>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: "Valdis Klētnieks" <valdis.kletnieks@vt.edu>,
"Michal Marek" <michal.lkml@markovi.net>,
"David S. Miller" <davem@davemloft.net>,
Networking <netdev@vger.kernel.org>,
"Linux Kbuild mailing list" <linux-kbuild@vger.kernel.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>
Subject: Re: Kconfig, DEFAULT_NETSCH, and shooting yourself in the foot..
Date: Sun, 3 Jan 2021 10:20:11 -0800 [thread overview]
Message-ID: <20210103102011.444ecaa4@hermes.local> (raw)
In-Reply-To: <CAK7LNAQU61eccDfh_jX_cnZHnyxfbfgBGu1845QM8XbBTJPnsw@mail.gmail.com>
On Sun, 3 Jan 2021 15:30:30 +0900
Masahiro Yamada <masahiroy@kernel.org> wrote:
> On Sun, Jan 3, 2021 at 5:14 AM Valdis Klētnieks <valdis.kletnieks@vt.edu> wrote:
> >
> > Consider the following own goal I just discovered I scored:
> >
> > [~] zgrep -i fq_codel /proc/config.gz
> > CONFIG_NET_SCH_FQ_CODEL=m
> > CONFIG_DEFAULT_FQ_CODEL=y
> > CONFIG_DEFAULT_NET_SCH="fq_codel"
> >
> > Obviously, fq_codel didn't get set as the default, because that happens
> > before the module gets loaded (which may never happen if the sysadmin
> > thinks the DEFAULT_NET_SCH already made it happen)
> >
> > Whoops. My bad, probably - but....
> >
> > The deeper question, part 1:
> >
> > There's this chunk in net/sched/Kconfig:
> >
> > 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 "fq_pie" if DEFAULT_FQ_PIE
> > default "sfq" if DEFAULT_SFQ
> > default "pfifo_fast"
> > endif
> >
> > (And a similar chunk right above it with a similar issue)
> >
> > Should those be "if (foo=y)" so =m can't be chosen? (I'll be
> > happy to write the patch if that's what we want)
> >
> > Deeper question, part 2:
> >
> > Should there be a way in the Kconfig language to ensure that
> > these two chunks can't accidentally get out of sync? There's other
> > places in the kernel where similar issues arise - a few days ago I was
> > chasing a CPU governor issue where it looked like it was possible
> > to set a default that was a module and thus possibly not actually loaded.
> >
>
>
> If there is a restriction where a modular discipline cannot be the default,
> I think you can add 'depends on FOO = y'.
>
>
>
> For example,
>
>
> choice
> prompt "Default"
>
> config DEFAULT_FOO
> bool "Use foo for default"
> depends on FOO = y
>
> config DEFAULT_BAR
> bool "Use bar for default"
> depends on BAR = y
>
> config DEFAULT_FALLBACK
> bool "fallback when nothing else is builtin"
>
> endchoice
>
>
>
>
>
You can use a qdisc that is a module, it just has to be available when device
is loaded. Typically that means putting it in initramfs.
next prev parent reply other threads:[~2021-01-03 18:21 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-02 20:14 Kconfig, DEFAULT_NETSCH, and shooting yourself in the foot Valdis Klētnieks
2021-01-03 6:30 ` Masahiro Yamada
2021-01-03 18:20 ` Stephen Hemminger [this message]
2021-01-03 18:34 ` Valdis Klētnieks
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210103102011.444ecaa4@hermes.local \
--to=stephen@networkplumber.org \
--cc=davem@davemloft.net \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masahiroy@kernel.org \
--cc=michal.lkml@markovi.net \
--cc=netdev@vger.kernel.org \
--cc=valdis.kletnieks@vt.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).