diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 17 |
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 | */ |
344 | static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv, | 344 | static 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); |