aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-tx.c17
2 files changed, 18 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index eedd71f5506b..e1b5250ea637 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -1290,6 +1290,12 @@ void iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif)
1290 rate = IWL_RATE_1M_PLCP; 1290 rate = IWL_RATE_1M_PLCP;
1291 rate_flags = RATE_MCS_CCK_MSK; 1291 rate_flags = RATE_MCS_CCK_MSK;
1292 } 1292 }
1293 /*
1294 * Internal scans are passive, so we can indiscriminately set
1295 * the BT ignore flag on 2.4 GHz since it applies to TX only.
1296 */
1297 if (priv->cfg->advanced_bt_coexist)
1298 scan->tx_cmd.tx_flags |= TX_CMD_FLG_IGNORE_BT;
1293 scan->good_CRC_th = IWL_GOOD_CRC_TH_DISABLED; 1299 scan->good_CRC_th = IWL_GOOD_CRC_TH_DISABLED;
1294 break; 1300 break;
1295 case IEEE80211_BAND_5GHZ: 1301 case IEEE80211_BAND_5GHZ:
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
index 3fc982e87921..8d2ffffe01b2 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
@@ -342,10 +342,11 @@ static inline int get_queue_from_ac(u16 ac)
342 * handle build REPLY_TX command notification. 342 * handle build REPLY_TX command notification.
343 */ 343 */
344static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv, 344static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv,
345 struct iwl_tx_cmd *tx_cmd, 345 struct sk_buff *skb,
346 struct ieee80211_tx_info *info, 346 struct iwl_tx_cmd *tx_cmd,
347 struct ieee80211_hdr *hdr, 347 struct ieee80211_tx_info *info,
348 u8 std_id) 348 struct ieee80211_hdr *hdr,
349 u8 std_id)
349{ 350{
350 __le16 fc = hdr->frame_control; 351 __le16 fc = hdr->frame_control;
351 __le32 tx_flags = tx_cmd->tx_flags; 352 __le32 tx_flags = tx_cmd->tx_flags;
@@ -365,6 +366,12 @@ static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv,
365 366
366 if (ieee80211_is_back_req(fc)) 367 if (ieee80211_is_back_req(fc))
367 tx_flags |= TX_CMD_FLG_ACK_MSK | TX_CMD_FLG_IMM_BA_RSP_MASK; 368 tx_flags |= TX_CMD_FLG_ACK_MSK | TX_CMD_FLG_IMM_BA_RSP_MASK;
369 else if (info->band == IEEE80211_BAND_2GHZ &&
370 priv->cfg->advanced_bt_coexist &&
371 (ieee80211_is_auth(fc) || ieee80211_is_assoc_req(fc) ||
372 ieee80211_is_reassoc_req(fc) ||
373 skb->protocol == cpu_to_be16(ETH_P_PAE)))
374 tx_flags |= TX_CMD_FLG_IGNORE_BT;
368 375
369 376
370 tx_cmd->sta_id = std_id; 377 tx_cmd->sta_id = std_id;
@@ -655,7 +662,7 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
655 iwlagn_tx_cmd_build_hwcrypto(priv, info, tx_cmd, skb, sta_id); 662 iwlagn_tx_cmd_build_hwcrypto(priv, info, tx_cmd, skb, sta_id);
656 663
657 /* TODO need this for burst mode later on */ 664 /* TODO need this for burst mode later on */
658 iwlagn_tx_cmd_build_basic(priv, tx_cmd, info, hdr, sta_id); 665 iwlagn_tx_cmd_build_basic(priv, skb, tx_cmd, info, hdr, sta_id);
659 iwl_dbg_log_tx_data_frame(priv, len, hdr); 666 iwl_dbg_log_tx_data_frame(priv, len, hdr);
660 667
661 iwlagn_tx_cmd_build_rate(priv, tx_cmd, info, fc); 668 iwlagn_tx_cmd_build_rate(priv, tx_cmd, info, fc);