diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl4965-base.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl4965-base.c | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl4965-base.c b/drivers/net/wireless/iwlwifi/iwl4965-base.c index 5eb2a3eaf677..ba0f28945eb1 100644 --- a/drivers/net/wireless/iwlwifi/iwl4965-base.c +++ b/drivers/net/wireless/iwlwifi/iwl4965-base.c | |||
@@ -758,7 +758,7 @@ static void iwl4965_connection_init_rx_config(struct iwl_priv *priv) | |||
758 | #endif | 758 | #endif |
759 | 759 | ||
760 | ch_info = iwl_get_channel_info(priv, priv->band, | 760 | ch_info = iwl_get_channel_info(priv, priv->band, |
761 | le16_to_cpu(priv->staging_rxon.channel)); | 761 | le16_to_cpu(priv->active_rxon.channel)); |
762 | 762 | ||
763 | if (!ch_info) | 763 | if (!ch_info) |
764 | ch_info = &priv->channel_info[0]; | 764 | ch_info = &priv->channel_info[0]; |
@@ -794,9 +794,6 @@ static int iwl4965_set_mode(struct iwl_priv *priv, int mode) | |||
794 | { | 794 | { |
795 | priv->iw_mode = mode; | 795 | priv->iw_mode = mode; |
796 | 796 | ||
797 | /* init channel/phymode to values given at driver init */ | ||
798 | iwl_set_rxon_channel(priv, IEEE80211_BAND_2GHZ, 6); | ||
799 | |||
800 | iwl4965_connection_init_rx_config(priv); | 797 | iwl4965_connection_init_rx_config(priv); |
801 | memcpy(priv->staging_rxon.node_addr, priv->mac_addr, ETH_ALEN); | 798 | memcpy(priv->staging_rxon.node_addr, priv->mac_addr, ETH_ALEN); |
802 | 799 | ||
@@ -3025,26 +3022,18 @@ static void iwl4965_configure_filter(struct ieee80211_hw *hw, | |||
3025 | unsigned int *total_flags, | 3022 | unsigned int *total_flags, |
3026 | int mc_count, struct dev_addr_list *mc_list) | 3023 | int mc_count, struct dev_addr_list *mc_list) |
3027 | { | 3024 | { |
3028 | /* | ||
3029 | * XXX: dummy | ||
3030 | * see also iwl4965_connection_init_rx_config | ||
3031 | */ | ||
3032 | struct iwl_priv *priv = hw->priv; | 3025 | struct iwl_priv *priv = hw->priv; |
3033 | int new_flags = 0; | 3026 | |
3034 | if (changed_flags & (FIF_PROMISC_IN_BSS | FIF_OTHER_BSS)) { | 3027 | if (changed_flags & (*total_flags) & FIF_OTHER_BSS) { |
3035 | if (*total_flags & (FIF_PROMISC_IN_BSS | FIF_OTHER_BSS)) { | 3028 | IWL_DEBUG_MAC80211("Enter: type %d (0x%x, 0x%x)\n", |
3036 | IWL_DEBUG_MAC80211("Enter: type %d (0x%x, 0x%x)\n", | 3029 | IEEE80211_IF_TYPE_MNTR, |
3037 | IEEE80211_IF_TYPE_MNTR, | 3030 | changed_flags, *total_flags); |
3038 | changed_flags, *total_flags); | 3031 | /* queue work 'cuz mac80211 is holding a lock which |
3039 | /* queue work 'cuz mac80211 is holding a lock which | 3032 | * prevents us from issuing (synchronous) f/w cmds */ |
3040 | * prevents us from issuing (synchronous) f/w cmds */ | 3033 | queue_work(priv->workqueue, &priv->set_monitor); |
3041 | queue_work(priv->workqueue, &priv->set_monitor); | ||
3042 | new_flags &= FIF_PROMISC_IN_BSS | | ||
3043 | FIF_OTHER_BSS | | ||
3044 | FIF_ALLMULTI; | ||
3045 | } | ||
3046 | } | 3034 | } |
3047 | *total_flags = new_flags; | 3035 | *total_flags &= FIF_OTHER_BSS | FIF_ALLMULTI | |
3036 | FIF_BCN_PRBRESP_PROMISC | FIF_CONTROL; | ||
3048 | } | 3037 | } |
3049 | 3038 | ||
3050 | static void iwl4965_mac_remove_interface(struct ieee80211_hw *hw, | 3039 | static void iwl4965_mac_remove_interface(struct ieee80211_hw *hw, |