diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-tx.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-tx.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-tx.c b/drivers/net/wireless/iwlwifi/iwl-tx.c index 71d5b8a1a73e..a82cca0a30c7 100644 --- a/drivers/net/wireless/iwlwifi/iwl-tx.c +++ b/drivers/net/wireless/iwlwifi/iwl-tx.c | |||
@@ -728,7 +728,7 @@ int iwl_tx_skb(struct iwl_priv *priv, struct sk_buff *skb) | |||
728 | 728 | ||
729 | /* drop all data frame if we are not associated */ | 729 | /* drop all data frame if we are not associated */ |
730 | if (ieee80211_is_data(fc) && | 730 | if (ieee80211_is_data(fc) && |
731 | (priv->iw_mode != NL80211_IFTYPE_MONITOR || | 731 | (!iwl_is_monitor_mode(priv) || |
732 | !(info->flags & IEEE80211_TX_CTL_INJECTED)) && /* packet injection */ | 732 | !(info->flags & IEEE80211_TX_CTL_INJECTED)) && /* packet injection */ |
733 | (!iwl_is_associated(priv) || | 733 | (!iwl_is_associated(priv) || |
734 | ((priv->iw_mode == NL80211_IFTYPE_STATION) && !priv->assoc_id) || | 734 | ((priv->iw_mode == NL80211_IFTYPE_STATION) && !priv->assoc_id) || |
@@ -1183,8 +1183,10 @@ int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn) | |||
1183 | __func__, ra, tid); | 1183 | __func__, ra, tid); |
1184 | 1184 | ||
1185 | sta_id = iwl_find_station(priv, ra); | 1185 | sta_id = iwl_find_station(priv, ra); |
1186 | if (sta_id == IWL_INVALID_STATION) | 1186 | if (sta_id == IWL_INVALID_STATION) { |
1187 | IWL_ERR(priv, "Start AGG on invalid station\n"); | ||
1187 | return -ENXIO; | 1188 | return -ENXIO; |
1189 | } | ||
1188 | 1190 | ||
1189 | if (priv->stations[sta_id].tid[tid].agg.state != IWL_AGG_OFF) { | 1191 | if (priv->stations[sta_id].tid[tid].agg.state != IWL_AGG_OFF) { |
1190 | IWL_ERR(priv, "Start AGG when state is not IWL_AGG_OFF !\n"); | 1192 | IWL_ERR(priv, "Start AGG when state is not IWL_AGG_OFF !\n"); |
@@ -1192,8 +1194,10 @@ int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn) | |||
1192 | } | 1194 | } |
1193 | 1195 | ||
1194 | txq_id = iwl_txq_ctx_activate_free(priv); | 1196 | txq_id = iwl_txq_ctx_activate_free(priv); |
1195 | if (txq_id == -1) | 1197 | if (txq_id == -1) { |
1198 | IWL_ERR(priv, "No free aggregation queue available\n"); | ||
1196 | return -ENXIO; | 1199 | return -ENXIO; |
1200 | } | ||
1197 | 1201 | ||
1198 | spin_lock_irqsave(&priv->sta_lock, flags); | 1202 | spin_lock_irqsave(&priv->sta_lock, flags); |
1199 | tid_data = &priv->stations[sta_id].tid[tid]; | 1203 | tid_data = &priv->stations[sta_id].tid[tid]; |
@@ -1207,7 +1211,7 @@ int iwl_tx_agg_start(struct iwl_priv *priv, const u8 *ra, u16 tid, u16 *ssn) | |||
1207 | return ret; | 1211 | return ret; |
1208 | 1212 | ||
1209 | if (tid_data->tfds_in_queue == 0) { | 1213 | if (tid_data->tfds_in_queue == 0) { |
1210 | IWL_ERR(priv, "HW queue is empty\n"); | 1214 | IWL_DEBUG_HT(priv, "HW queue is empty\n"); |
1211 | tid_data->agg.state = IWL_AGG_ON; | 1215 | tid_data->agg.state = IWL_AGG_ON; |
1212 | ieee80211_start_tx_ba_cb_irqsafe(priv->hw, ra, tid); | 1216 | ieee80211_start_tx_ba_cb_irqsafe(priv->hw, ra, tid); |
1213 | } else { | 1217 | } else { |