View | Details | Raw Unified | Return to bug 56581 | Differences between
and this patch

Collapse All | Expand All

(-)a/drivers/net/wireless/iwlwifi/dvm/mac80211.c (-12 / +13 lines)
Lines 1095-1100 static void iwlagn_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, Link Here
1095
			     u32 queues, bool drop)
1095
			     u32 queues, bool drop)
1096
{
1096
{
1097
	struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw);
1097
	struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw);
1098
	u32 scd_queues;
1098
1099
1099
	mutex_lock(&priv->mutex);
1100
	mutex_lock(&priv->mutex);
1100
	IWL_DEBUG_MAC80211(priv, "enter\n");
1101
	IWL_DEBUG_MAC80211(priv, "enter\n");
Lines 1108-1125 static void iwlagn_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif, Link Here
1108
		goto done;
1109
		goto done;
1109
	}
1110
	}
1110
1111
1111
	/*
1112
	scd_queues = BIT(priv->cfg->base_params->num_of_queues) - 1;
1112
	 * mac80211 will not push any more frames for transmit
1113
	scd_queues &= ~(BIT(IWL_IPAN_CMD_QUEUE_NUM) |
1113
	 * until the flush is completed
1114
			BIT(IWL_DEFAULT_CMD_QUEUE_NUM));
1114
	 */
1115
1115
	if (drop) {
1116
	if (vif)
1116
		IWL_DEBUG_MAC80211(priv, "send flush command\n");
1117
		scd_queues &= ~BIT(vif->hw_queue[IEEE80211_AC_VO]);
1117
		if (iwlagn_txfifo_flush(priv, 0)) {
1118
1118
			IWL_ERR(priv, "flush request fail\n");
1119
	IWL_DEBUG_TX_QUEUES(priv, "Flushing SCD queues: 0x%x\n", scd_queues);
1119
			goto done;
1120
	if (iwlagn_txfifo_flush(priv, scd_queues)) {
1120
		}
1121
		IWL_ERR(priv, "flush request fail\n");
1122
		goto done;
1121
	}
1123
	}
1122
	IWL_DEBUG_MAC80211(priv, "wait transmit/flush all frames\n");
1124
	IWL_DEBUG_TX_QUEUES(priv, "wait transmit/flush all frames\n");
1123
	iwl_trans_wait_tx_queue_empty(priv->trans, 0xffffffff);
1125
	iwl_trans_wait_tx_queue_empty(priv->trans, 0xffffffff);
1124
done:
1126
done:
1125
	mutex_unlock(&priv->mutex);
1127
	mutex_unlock(&priv->mutex);
1126
- 

Return to bug 56581