aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/wl12xx/wl1271_tx.h
diff options
context:
space:
mode:
authorIdo Yariv <ido@wizery.com>2010-10-12 08:49:10 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-11-15 13:25:05 -0500
commita522550a283de31c7cfc30c7a129ce584e38c582 (patch)
tree3cee18d0f0dbbb3c5bff27488c0d302821e4f1d8 /drivers/net/wireless/wl12xx/wl1271_tx.h
parent6c6e669ed6282788d6045397ce0f201edc400d9d (diff)
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.h1
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 d12a129ad11c..f1c906519b7d 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)
140} 140}
141 141
142void wl1271_tx_work(struct work_struct *work); 142void wl1271_tx_work(struct work_struct *work);
143void wl1271_tx_work_locked(struct wl1271 *wl);
143void wl1271_tx_complete(struct wl1271 *wl); 144void wl1271_tx_complete(struct wl1271 *wl);
144void wl1271_tx_reset(struct wl1271 *wl); 145void wl1271_tx_reset(struct wl1271 *wl);
145void wl1271_tx_flush(struct wl1271 *wl); 146void wl1271_tx_flush(struct wl1271 *wl);