MQ Patch.

Adrian Chadd adrian at freebsd.org
Wed Oct 30 01:43:23 UTC 2013


Hi,

We can't assume the hardware has deep queues _and_ we can't just hand
packets to the DMA engine.

Why?

Because once you've pushed it into the transmit ring, you can't
guarantee / impose any ordering on things. You can't guarantee that
you can abort a frame that has been queued because it now breaks the
queue rules.

That's why we don't want to just have a light wrapper around hardware
transmit queues. We give up way too much useful control.

I've seen this both when doing wifi (where I absolutely have to have
per-node, per-TID queues, far before it hits the hardware) and doing
WAN style optimisation, where I want to ensure I only queue a handful
of milliseconds of frames to the hardware so I can ensure I can hit
QoS requirements (eg there being a large amount of bulk data, then I
want to inject some voice traffic that should go out sooner..)

Thanks,


-adrian


More information about the freebsd-net mailing list