浏览代码

iwlagn: provide data after WARN_ON

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>
Emmanuel Grumbach 13 年之前
父节点
当前提交
1dd9124e29
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      drivers/net/wireless/iwlwifi/iwl-core.c

+ 7 - 1
drivers/net/wireless/iwlwifi/iwl-core.c

@@ -1328,7 +1328,13 @@ void iwl_mac_remove_interface(struct ieee80211_hw *hw,
 
 
 	mutex_lock(&priv->shrd->mutex);
 	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;
 	ctx->vif = NULL;
 
 
 	iwl_teardown_interface(priv, vif, false);
 	iwl_teardown_interface(priv, vif, false);