On Tue, Feb 4, 2025 at 5:27 PM Jakub Kicinski <kuba@xxxxxxxxxx> wrote: > > On Tue, 4 Feb 2025 15:21:27 -0800 Amery Hung wrote: > > On Tue, Feb 4, 2025 at 2:18 PM Jakub Kicinski <kuba@xxxxxxxxxx> wrote: > > > On Fri, 31 Jan 2025 11:28:47 -0800 Amery Hung wrote: > > > > + if (new && > > > > + !(parent->flags & TCQ_F_MQROOT) && > > > > + new->ops->owner == BPF_MODULE_OWNER) { > > > > + NL_SET_ERR_MSG(extack, "BPF qdisc not supported on a non root"); > > > > + return -EINVAL; > > > > + } > > > > > > This check should live in bpf_qdisc.c > > > > Might be a dumb question, but could you explain why this is preferred? > > > > I can certainly do the check in Qdisc_ops::init instead though. > > Basic SW abstractions, this is the generic layer, bpf_qdisc is just > one implementation that plugs into it. Got it. Thanks for the clarification.