(The make-wifi-fast list is annoying as it always spams me when it's on CC, so dropped it.) Toke Høiland-Jørgensen <toke@xxxxxxx> writes: > This reworks the ath9k driver to schedule transmissions to connected > stations in a way that enforces airtime fairness between them. It > accomplishes this by measuring the time spent transmitting to or > receiving from a station at TX and RX completion, and accounting this to > a per-station, per-QoS level airtime deficit. Then, an FQ-CoDel based > deficit scheduler is employed at packet dequeue time, to control which > station gets the next transmission opportunity. > > Airtime fairness can significantly improve the efficiency of the network > when station rates vary. The following throughput values are from a > simple three-station test scenario, where two stations operate at the > highest HT20 rate, and one station at the lowest, and the scheduler is > employed at the access point: > > Before / After > Fast station 1: 19.17 / 25.09 Mbps > Fast station 2: 19.83 / 25.21 Mbps > Slow station: 2.58 / 1.77 Mbps > Total: 41.58 / 52.07 Mbps > > The benefit of airtime fairness goes up the more stations are present. > In a 30-station test with one station artificially limited to 1 Mbps, > we have seen aggregate throughput go from 2.14 to 17.76 Mbps. > > Signed-off-by: Toke Høiland-Jørgensen <toke@xxxxxxx> [...] > +void ath_acq_lock(struct ath_softc *sc, struct ath_acq *acq) > + __acquires(&acq->lock) > +{ > + spin_lock_bh(&acq->lock); > +} > + > +void ath_acq_unlock(struct ath_softc *sc, struct ath_acq *acq) > + __releases(&acq->lock) > +{ > + spin_unlock_bh(&acq->lock); > +} Why these? To me it looks like they just add an extra function jump and unneccessary extra layer. -- Kalle Valo