Subject: Re: [PATCH net-next] Re: can't add tc multiq

From: Stephen Hemminger <[email-masked]>
Date: Mon, 9 Feb 2009 14:40:52 -0800

On Mon, 9 Feb 2009 22:44:47 +0100
Jarek Poplawski <[email-masked]> wrote:

> Stephen Hemminger wrote, On 02/09/2009 05:15 PM:
> 
> > On Mon, 09 Feb 2009 11:43:26 +0300
> > Badalian Vyacheslav <[email-masked]> wrote:
> > 
> >> Hello all!
> >> kernel 2.6.28.4
> >> iproute2 - last git
> >> Can't use multiq qdisc. How to fix this?
> >> Thanks!
> >>
> >> slavon ~ # tc qdisc add dev eth0 root handle 1: multiq
> >> RTNETLINK answers: Invalid argument
> ...
> > You need hardware with multiple transmit queues. Neither e1000 or r8169
> > has this.
> ------------------->
> pkt_sched: sch_multiq: Warn on non-multiqueue devices.
> 
> Current "RTNETLINK answers: Invalid argument" warning, while trying to
> add multiq qdisc to non-multiqueue device, isn't very helpful and some
> of these devs can be changed btw., so let's add a small printk.
> 
> With feedback from Stephen Hemminger <[email-masked]>
> 
> Reported-by: Badalian Vyacheslav <[email-masked]>
> Signed-off-by: Jarek Poplawski <[email-masked]>
> ---
> 
>  net/sched/sch_multiq.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/net/sched/sch_multiq.c b/net/sched/sch_multiq.c
> index 7e15186..a38f0c1 100644
> --- a/net/sched/sch_multiq.c
> +++ b/net/sched/sch_multiq.c
> @@ -201,8 +201,11 @@ static int multiq_tune(struct Qdisc *sch, struct nlattr *opt)
>  	struct tc_multiq_qopt *qopt;
>  	int i;
>  
> -	if (!netif_is_multiqueue(qdisc_dev(sch)))
> +	if (!netif_is_multiqueue(qdisc_dev(sch))) {
> +		printk(KERN_WARNING "multiq: dev %s isn't multiqueue.\n",
> +		       qdisc_dev(sch)->name);
>  		return -EINVAL;

Rather than warning which will buried off on some console that user will never
see (and can cause DoS overload). A better errno should be chosen.