diff options
author | Ido Yariv <ido@wizery.com> | 2010-10-12 14:49:10 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-11-15 13:25:05 -0500 |
commit | a522550a283de31c7cfc30c7a129ce584e38c582 (patch) | |
tree | 3cee18d0f0dbbb3c5bff27488c0d302821e4f1d8 /drivers/net/wireless/wl12xx/wl1271_tx.h | |
parent | 6c6e669ed6282788d6045397ce0f201edc400d9d (diff) | |
download | op-kernel-dev-a522550a283de31c7cfc30c7a129ce584e38c582.zip op-kernel-dev-a522550a283de31c7cfc30c7a129ce584e38c582.tar.gz |
wl1271: Fix TX starvation
While wl1271_irq_work handles RX directly (by calling wl1271_rx), a different
work is scheduled for transmitting packets. The IRQ work might handle more than
one interrupt during a single call, including multiple TX completion
interrupts. This might starve TX, since no packets are transmitted until all
interrupts are handled.
Fix this by calling the TX work function directly, instead of deferring
it.
Signed-off-by: Ido Yariv <ido@wizery.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/wl1271_tx.h')
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_tx.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_tx.h b/drivers/net/wireless/wl12xx/wl1271_tx.h index d12a129..f1c9065 100644 --- a/drivers/net/wireless/wl12xx/wl1271_tx.h +++ b/drivers/net/wireless/wl12xx/wl1271_tx.h @@ -140,6 +140,7 @@ static inline int wl1271_tx_get_queue(int queue) } void wl1271_tx_work(struct work_struct *work); +void wl1271_tx_work_locked(struct wl1271 *wl); void wl1271_tx_complete(struct wl1271 *wl); void wl1271_tx_reset(struct wl1271 *wl); void wl1271_tx_flush(struct wl1271 *wl); |