wlcore: make Tx flush timings more verbose
authorArik Nemtsov <arik@wizery.com>
Mon, 23 Jul 2012 20:50:45 +0000 (23:50 +0300)
committerLuciano Coelho <luca@coelho.fi>
Thu, 27 Sep 2012 09:13:51 +0000 (12:13 +0300)
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>
drivers/net/wireless/ti/wlcore/tx.c

index 24ac8ec..d89e0db 100644 (file)
@@ -1076,9 +1076,10 @@ void wl12xx_tx_reset(struct wl1271 *wl)
 /* caller must *NOT* hold wl->mutex */
 void wl1271_tx_flush(struct wl1271 *wl)
 {
-       unsigned long timeout;
+       unsigned long timeout, start_time;
        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 */
        mutex_lock(&wl->flush_mutex);
@@ -1087,19 +1088,23 @@ void wl1271_tx_flush(struct wl1271 *wl)
 
        while (!time_after(jiffies, timeout)) {
                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,
                             wl1271_tx_total_queue_count(wl));
                if ((wl->tx_frames_cnt == 0) &&
                    (wl1271_tx_total_queue_count(wl) == 0)) {
                        mutex_unlock(&wl->mutex);
+                       wl1271_debug(DEBUG_MAC80211, "tx flush took %d ms",
+                                    jiffies_to_msecs(jiffies - start_time));
                        goto out;
                }
                mutex_unlock(&wl->mutex);
                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 */
        mutex_lock(&wl->mutex);