From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Ricardo Leitner Subject: Re: [PATCH v3 net-next] net/sched: add skbprio scheduler Date: Wed, 11 Jul 2018 15:37:56 -0300 Message-ID: <20180711183755.GE8880@localhost.localdomain> References: <20180707101351.GA8300@gmail.com> <20180709154409.GC8880@localhost.localdomain> <20180709195319.GD8880@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Michel Machado , Nishanth Devarajan , Jamal Hadi Salim , Jiri Pirko , David Miller , Linux Kernel Network Developers , Cody Doucette To: Cong Wang Return-path: Received: from mail-qk0-f194.google.com ([209.85.220.194]:35391 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726782AbeGKSne (ORCPT ); Wed, 11 Jul 2018 14:43:34 -0400 Received: by mail-qk0-f194.google.com with SMTP id u21-v6so14193786qku.2 for ; Wed, 11 Jul 2018 11:37:58 -0700 (PDT) Content-Disposition: inline In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: On Tue, Jul 10, 2018 at 07:32:43PM -0700, Cong Wang wrote: > On Mon, Jul 9, 2018 at 12:53 PM Marcelo Ricardo Leitner > wrote: > > > > On Mon, Jul 09, 2018 at 02:18:33PM -0400, Michel Machado wrote: > > > > > > 2. sch_prio.c does not have a global limit on the number of packets on > > > all its queues, only a limit per queue. > > > > It can be useful to sch_prio.c as well, why not? > > prio_enqueue() > > { > > ... > > + if (count > sch->global_limit) > > + prio_tail_drop(sch); /* to be implemented */ > > ret = qdisc_enqueue(skb, qdisc, to_free); > > > > Isn't the whole point of sch_prio offloading the queueing to > each class? If you need a limit, there is one for each child > qdisc if you use for example pfifo or bfifo (depending on you > want to limit bytes or packets). Yes, but Michel wants to drop from other lower priorities if needed, and that's not possible if you handle the limit already in a child qdisc as they don't know about their siblings. The idea in the example above is to discard it from whatever lower priority is needed, then queue it. (ok, the example missed to check the priority level) As for the different units, sch_prio holds a count of how many packets are queued on its children, and that's what would be used for the limit. > > Also, what's your plan for backward compatibility here? say: if (sch->global_limit && count > sch->global_limit) as in, only do the limit check/enforcing if needed.