netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Custom hardware Qdisc...
@ 2009-12-11 18:26 David Daney
  2009-12-11 22:40 ` David Miller
  0 siblings, 1 reply; 4+ messages in thread
From: David Daney @ 2009-12-11 18:26 UTC (permalink / raw)
  To: Netdev

Our hardware (Octeon SOC) has fairly flexible packet output queuing that 
can be done completely in hardware.

I am thinking of trying to take advantage of this in the driver 
(currently in drivers/staging/octeon).

At a very hige level my tentative plan is to implement a custom  Qdisc 
that has an enqueue method that places the packets directly in the 
output queues after they are classified.

The dequeue method would be a noop returning NULL because once the 
packets are on the queues, no further action is needed from the driver.

Does doing something like this seem plausible?  If not, what are the 
main problems I might be overlooking?

Thanks in advance,
David Daney

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Custom hardware Qdisc...
  2009-12-11 18:26 Custom hardware Qdisc David Daney
@ 2009-12-11 22:40 ` David Miller
  2009-12-12  0:58   ` David Daney
  0 siblings, 1 reply; 4+ messages in thread
From: David Miller @ 2009-12-11 22:40 UTC (permalink / raw)
  To: ddaney; +Cc: netdev

From: David Daney <ddaney@caviumnetworks.com>
Date: Fri, 11 Dec 2009 10:26:08 -0800

> Our hardware (Octeon SOC) has fairly flexible packet output queuing
> that can be done completely in hardware.

You haven't described sufficiently what your hardware is
capable of.

Generally, implementing qdiscs specifically to support
hardware features is not how things are handled.

But really we need to know a lot more about the details of your
hardware to make any kind of real suggestions.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Custom hardware Qdisc...
  2009-12-11 22:40 ` David Miller
@ 2009-12-12  0:58   ` David Daney
  2009-12-12  1:05     ` David Miller
  0 siblings, 1 reply; 4+ messages in thread
From: David Daney @ 2009-12-12  0:58 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

David Miller wrote:
> From: David Daney <ddaney@caviumnetworks.com>
> Date: Fri, 11 Dec 2009 10:26:08 -0800
> 
>> Our hardware (Octeon SOC) has fairly flexible packet output queuing
>> that can be done completely in hardware.
> 
> You haven't described sufficiently what your hardware is
> capable of.
> 

Up to 16 output queues per port. With (almost) any combination of 
absolute and weighted priorities between the various queues.


> Generally, implementing qdiscs specifically to support
> hardware features is not how things are handled.
> 

I think I could emulate the default pfifo Qdisk fairly well in hardware. 
  By making it a Qdisc, the user would still be able to switch to one of 
the software implementations if desired at runtime.


> But really we need to know a lot more about the details of your
> hardware to make any kind of real suggestions.
> 

Well see above for the overview.  I just wanted to get an idea if such 
an approach would be highly frowned upon before coding anything up.

We see significant cacheline bouncing in the Qdisc code and can increase 
  packet forwarding rates by 10%-15% by setting the txqueuelen to zero 
to disable the queuing.  I would like to see if the same thing can be 
achieved without throwing away the features of the Qdisc.

David Daney


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Custom hardware Qdisc...
  2009-12-12  0:58   ` David Daney
@ 2009-12-12  1:05     ` David Miller
  0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2009-12-12  1:05 UTC (permalink / raw)
  To: ddaney; +Cc: netdev

From: David Daney <ddaney@caviumnetworks.com>
Date: Fri, 11 Dec 2009 16:58:50 -0800

> David Miller wrote:
>> From: David Daney <ddaney@caviumnetworks.com>
>> Date: Fri, 11 Dec 2009 10:26:08 -0800
>> 
>>> Our hardware (Octeon SOC) has fairly flexible packet output queuing
>>> that can be done completely in hardware.
>> You haven't described sufficiently what your hardware is
>> capable of.
>> 
> 
> Up to 16 output queues per port. With (almost) any combination of
> absolute and weighted priorities between the various queues.

It sounds like these queues could be configured to have equal
priorities and thus be used as purely a TX multiqueue scheme
for better scalability.

I suspect that doing that alone will fix the qdisc cache line bouncing
you mention.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-12-12  1:13 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-11 18:26 Custom hardware Qdisc David Daney
2009-12-11 22:40 ` David Miller
2009-12-12  0:58   ` David Daney
2009-12-12  1:05     ` David Miller

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).