iwlagn: provide data after WARN_ON
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 15 Sep 2011 18:46:40 +0000 (11:46 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 19 Sep 2011 19:58:29 +0000 (15:58 -0400)
From time to time, we hit a WARN_ON in iwl_mac_remove_interface.
This basically means that we got out of sync with mac80211: the vif
we hold differs from the vif 80211 passes as parameter. Try to get
some data that will help to debug this.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-core.c

index 0a426cbcbfc4bf644e9c7eeaebe762e3ce2a3330..ce8a015c7205c8dc39f4142fb718dd923a368341 100644 (file)
@@ -1328,7 +1328,13 @@ void iwl_mac_remove_interface(struct ieee80211_hw *hw,
 
        mutex_lock(&priv->shrd->mutex);
 
-       WARN_ON(ctx->vif != vif);
+       if (WARN_ON(ctx->vif != vif)) {
+               struct iwl_rxon_context *tmp;
+               IWL_ERR(priv, "ctx->vif = %p, vif = %p\n", ctx->vif, vif);
+               for_each_context(priv, tmp)
+                       IWL_ERR(priv, "\tID = %d:\tctx = %p\tctx->vif = %p\n",
+                               tmp->ctxid, tmp, tmp->vif);
+       }
        ctx->vif = NULL;
 
        iwl_teardown_interface(priv, vif, false);