Commit 958e303a authored by Arik Nemtsov's avatar Arik Nemtsov Committed by Luciano Coelho

wlcore: make Tx flush timings more verbose

Print how much time a flush took. This will help debug the time it takes
to switch between channels.
Signed-off-by: default avatarArik Nemtsov <arik@wizery.com>
Signed-off-by: default avatarLuciano Coelho <luca@coelho.fi>
parent 71494760
...@@ -1076,9 +1076,10 @@ void wl12xx_tx_reset(struct wl1271 *wl) ...@@ -1076,9 +1076,10 @@ void wl12xx_tx_reset(struct wl1271 *wl)
/* caller must *NOT* hold wl->mutex */ /* caller must *NOT* hold wl->mutex */
void wl1271_tx_flush(struct wl1271 *wl) void wl1271_tx_flush(struct wl1271 *wl)
{ {
unsigned long timeout; unsigned long timeout, start_time;
int i; int i;
timeout = jiffies + usecs_to_jiffies(WL1271_TX_FLUSH_TIMEOUT); start_time = jiffies;
timeout = start_time + usecs_to_jiffies(WL1271_TX_FLUSH_TIMEOUT);
/* only one flush should be in progress, for consistent queue state */ /* only one flush should be in progress, for consistent queue state */
mutex_lock(&wl->flush_mutex); mutex_lock(&wl->flush_mutex);
...@@ -1087,19 +1088,23 @@ void wl1271_tx_flush(struct wl1271 *wl) ...@@ -1087,19 +1088,23 @@ void wl1271_tx_flush(struct wl1271 *wl)
while (!time_after(jiffies, timeout)) { while (!time_after(jiffies, timeout)) {
mutex_lock(&wl->mutex); mutex_lock(&wl->mutex);
wl1271_debug(DEBUG_TX, "flushing tx buffer: %d %d", wl1271_debug(DEBUG_MAC80211, "flushing tx buffer: %d %d",
wl->tx_frames_cnt, wl->tx_frames_cnt,
wl1271_tx_total_queue_count(wl)); wl1271_tx_total_queue_count(wl));
if ((wl->tx_frames_cnt == 0) && if ((wl->tx_frames_cnt == 0) &&
(wl1271_tx_total_queue_count(wl) == 0)) { (wl1271_tx_total_queue_count(wl) == 0)) {
mutex_unlock(&wl->mutex); mutex_unlock(&wl->mutex);
wl1271_debug(DEBUG_MAC80211, "tx flush took %d ms",
jiffies_to_msecs(jiffies - start_time));
goto out; goto out;
} }
mutex_unlock(&wl->mutex); mutex_unlock(&wl->mutex);
msleep(1); msleep(1);
} }
wl1271_warning("Unable to flush all TX buffers, timed out."); wl1271_warning("Unable to flush all TX buffers, "
"timed out (timeout %d ms",
WL1271_TX_FLUSH_TIMEOUT / 1000);
/* forcibly flush all Tx buffers on our queues */ /* forcibly flush all Tx buffers on our queues */
mutex_lock(&wl->mutex); mutex_lock(&wl->mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment