diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-core.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.c | 46 |
1 files changed, 6 insertions, 40 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c index b75808aad1ef..56a9f1741419 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.c +++ b/drivers/net/wireless/iwlwifi/iwl-core.c | |||
@@ -829,19 +829,6 @@ static u8 iwl_count_chain_bitmap(u32 chain_bitmap) | |||
829 | } | 829 | } |
830 | 830 | ||
831 | /** | 831 | /** |
832 | * iwl_is_monitor_mode - Determine if interface in monitor mode | ||
833 | * | ||
834 | * priv->iw_mode is set in add_interface, but add_interface is | ||
835 | * never called for monitor mode. The only way mac80211 informs us about | ||
836 | * monitor mode is through configuring filters (call to configure_filter). | ||
837 | */ | ||
838 | bool iwl_is_monitor_mode(struct iwl_priv *priv) | ||
839 | { | ||
840 | return !!(priv->staging_rxon.filter_flags & RXON_FILTER_PROMISC_MSK); | ||
841 | } | ||
842 | EXPORT_SYMBOL(iwl_is_monitor_mode); | ||
843 | |||
844 | /** | ||
845 | * iwl_set_rxon_chain - Set up Rx chain usage in "staging" RXON image | 832 | * iwl_set_rxon_chain - Set up Rx chain usage in "staging" RXON image |
846 | * | 833 | * |
847 | * Selects how many and which Rx receivers/antennas/chains to use. | 834 | * Selects how many and which Rx receivers/antennas/chains to use. |
@@ -884,19 +871,6 @@ void iwl_set_rxon_chain(struct iwl_priv *priv) | |||
884 | rx_chain |= active_rx_cnt << RXON_RX_CHAIN_MIMO_CNT_POS; | 871 | rx_chain |= active_rx_cnt << RXON_RX_CHAIN_MIMO_CNT_POS; |
885 | rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS; | 872 | rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS; |
886 | 873 | ||
887 | /* copied from 'iwl_bg_request_scan()' */ | ||
888 | /* Force use of chains B and C (0x6) for Rx | ||
889 | * Avoid A (0x1) for the device has off-channel reception on A-band. | ||
890 | * MIMO is not used here, but value is required */ | ||
891 | if (iwl_is_monitor_mode(priv) && | ||
892 | !(priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) && | ||
893 | priv->cfg->off_channel_workaround) { | ||
894 | rx_chain = ANT_ABC << RXON_RX_CHAIN_VALID_POS; | ||
895 | rx_chain |= ANT_BC << RXON_RX_CHAIN_FORCE_SEL_POS; | ||
896 | rx_chain |= ANT_ABC << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS; | ||
897 | rx_chain |= 0x1 << RXON_RX_CHAIN_DRIVER_FORCE_POS; | ||
898 | } | ||
899 | |||
900 | priv->staging_rxon.rx_chain = cpu_to_le16(rx_chain); | 874 | priv->staging_rxon.rx_chain = cpu_to_le16(rx_chain); |
901 | 875 | ||
902 | if (!is_single && (active_rx_cnt >= IWL_NUM_RX_CHAINS_SINGLE) && is_cam) | 876 | if (!is_single && (active_rx_cnt >= IWL_NUM_RX_CHAINS_SINGLE) && is_cam) |
@@ -1480,7 +1454,7 @@ irqreturn_t iwl_isr_legacy(int irq, void *data) | |||
1480 | } | 1454 | } |
1481 | EXPORT_SYMBOL(iwl_isr_legacy); | 1455 | EXPORT_SYMBOL(iwl_isr_legacy); |
1482 | 1456 | ||
1483 | int iwl_send_bt_config(struct iwl_priv *priv) | 1457 | void iwl_send_bt_config(struct iwl_priv *priv) |
1484 | { | 1458 | { |
1485 | struct iwl_bt_cmd bt_cmd = { | 1459 | struct iwl_bt_cmd bt_cmd = { |
1486 | .lead_time = BT_LEAD_TIME_DEF, | 1460 | .lead_time = BT_LEAD_TIME_DEF, |
@@ -1497,8 +1471,9 @@ int iwl_send_bt_config(struct iwl_priv *priv) | |||
1497 | IWL_DEBUG_INFO(priv, "BT coex %s\n", | 1471 | IWL_DEBUG_INFO(priv, "BT coex %s\n", |
1498 | (bt_cmd.flags == BT_COEX_DISABLE) ? "disable" : "active"); | 1472 | (bt_cmd.flags == BT_COEX_DISABLE) ? "disable" : "active"); |
1499 | 1473 | ||
1500 | return iwl_send_cmd_pdu(priv, REPLY_BT_CONFIG, | 1474 | if (iwl_send_cmd_pdu(priv, REPLY_BT_CONFIG, |
1501 | sizeof(struct iwl_bt_cmd), &bt_cmd); | 1475 | sizeof(struct iwl_bt_cmd), &bt_cmd)) |
1476 | IWL_ERR(priv, "failed to send BT Coex Config\n"); | ||
1502 | } | 1477 | } |
1503 | EXPORT_SYMBOL(iwl_send_bt_config); | 1478 | EXPORT_SYMBOL(iwl_send_bt_config); |
1504 | 1479 | ||
@@ -1868,7 +1843,6 @@ static inline void iwl_set_no_assoc(struct iwl_priv *priv) | |||
1868 | iwlcore_commit_rxon(priv); | 1843 | iwlcore_commit_rxon(priv); |
1869 | } | 1844 | } |
1870 | 1845 | ||
1871 | #define IWL_DELAY_NEXT_SCAN_AFTER_ASSOC (HZ*6) | ||
1872 | void iwl_bss_info_changed(struct ieee80211_hw *hw, | 1846 | void iwl_bss_info_changed(struct ieee80211_hw *hw, |
1873 | struct ieee80211_vif *vif, | 1847 | struct ieee80211_vif *vif, |
1874 | struct ieee80211_bss_conf *bss_conf, | 1848 | struct ieee80211_bss_conf *bss_conf, |
@@ -1989,14 +1963,6 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw, | |||
1989 | 1963 | ||
1990 | iwl_led_associate(priv); | 1964 | iwl_led_associate(priv); |
1991 | 1965 | ||
1992 | /* | ||
1993 | * We have just associated, don't start scan too early | ||
1994 | * leave time for EAPOL exchange to complete. | ||
1995 | * | ||
1996 | * XXX: do this in mac80211 | ||
1997 | */ | ||
1998 | priv->next_scan_jiffies = jiffies + | ||
1999 | IWL_DELAY_NEXT_SCAN_AFTER_ASSOC; | ||
2000 | if (!iwl_is_rfkill(priv)) | 1966 | if (!iwl_is_rfkill(priv)) |
2001 | priv->cfg->ops->lib->post_associate(priv); | 1967 | priv->cfg->ops->lib->post_associate(priv); |
2002 | } else | 1968 | } else |
@@ -2383,11 +2349,11 @@ EXPORT_SYMBOL(iwl_free_txq_mem); | |||
2383 | 2349 | ||
2384 | int iwl_send_wimax_coex(struct iwl_priv *priv) | 2350 | int iwl_send_wimax_coex(struct iwl_priv *priv) |
2385 | { | 2351 | { |
2386 | struct iwl_wimax_coex_cmd uninitialized_var(coex_cmd); | 2352 | struct iwl_wimax_coex_cmd coex_cmd; |
2387 | 2353 | ||
2388 | if (priv->cfg->support_wimax_coexist) { | 2354 | if (priv->cfg->support_wimax_coexist) { |
2389 | /* UnMask wake up src at associated sleep */ | 2355 | /* UnMask wake up src at associated sleep */ |
2390 | coex_cmd.flags |= COEX_FLAGS_ASSOC_WA_UNMASK_MSK; | 2356 | coex_cmd.flags = COEX_FLAGS_ASSOC_WA_UNMASK_MSK; |
2391 | 2357 | ||
2392 | /* UnMask wake up src at unassociated sleep */ | 2358 | /* UnMask wake up src at unassociated sleep */ |
2393 | coex_cmd.flags |= COEX_FLAGS_UNASSOC_WA_UNMASK_MSK; | 2359 | coex_cmd.flags |= COEX_FLAGS_UNASSOC_WA_UNMASK_MSK; |