BQL enabled drivers¶
Queue Disciplines such as fq_codel need the underlying buffering of the device and device driver well controlled. Under Linux, the mechanism to do so is called "Byte Queue Limits" (BQL), which needs a small amount of driver support to enable.
This is a partial list of the known BQL-enabled device drivers for Linux as of version 3.6
Highly desirable to BQL enable¶
- e1000 (patch out there on netdev)
- Kirkwood (dreamplug, guruplug etc)
- net-usb (patch discussed on cerowrt-devel) (raspery pi uses usb to network)
- r8169 (buggy in 3.6 and earlier, currently reverted)
- niu (same problem basically as r8169, also currently reverted)
BQL is desirable for devices running at line rate. It is not required for soft rate shapers such as hfsc and htb, which are independent of the underlying wire rate.
Similar techniques to BQL could be used at other layers in the stack, such as various forms of wireless, usb network devices, and adsl. But adding this technique is going to be really hard for wireless .