Queue Disciplines such as fq_codel and fq 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.14. Also see the list at Best practices for benchmarking Codel and FQ Codel
There are 7 out of tree BQL drivers here that could use testing and integration: http://www.mcmilk.de/projects/linux-bql/
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 .