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: Arik Nemtsov <arik@wizery.com> Signed-off-by: Luciano Coelho <luca@coelho.fi>
This commit is contained in:
parent
714947600e
commit
958e303abb
1 changed files with 9 additions and 4 deletions
|
@ -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)
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue