diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 2945acd955f0..adcef735180a 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -2860,16 +2860,13 @@ int iwl3945_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif) | |||
2860 | u32 extra; | 2860 | u32 extra; |
2861 | u32 suspend_time = 100; | 2861 | u32 suspend_time = 100; |
2862 | u32 scan_suspend_time = 100; | 2862 | u32 scan_suspend_time = 100; |
2863 | unsigned long flags; | ||
2864 | 2863 | ||
2865 | IWL_DEBUG_INFO(priv, "Scanning while associated...\n"); | 2864 | IWL_DEBUG_INFO(priv, "Scanning while associated...\n"); |
2866 | 2865 | ||
2867 | spin_lock_irqsave(&priv->lock, flags); | ||
2868 | if (priv->is_internal_short_scan) | 2866 | if (priv->is_internal_short_scan) |
2869 | interval = 0; | 2867 | interval = 0; |
2870 | else | 2868 | else |
2871 | interval = vif->bss_conf.beacon_int; | 2869 | interval = vif->bss_conf.beacon_int; |
2872 | spin_unlock_irqrestore(&priv->lock, flags); | ||
2873 | 2870 | ||
2874 | scan->suspend_time = 0; | 2871 | scan->suspend_time = 0; |
2875 | scan->max_out_time = cpu_to_le32(200 * 1024); | 2872 | scan->max_out_time = cpu_to_le32(200 * 1024); |
@@ -3286,6 +3283,14 @@ static int iwl3945_mac_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, | |||
3286 | return -EOPNOTSUPP; | 3283 | return -EOPNOTSUPP; |
3287 | } | 3284 | } |
3288 | 3285 | ||
3286 | /* | ||
3287 | * To support IBSS RSN, don't program group keys in IBSS, the | ||
3288 | * hardware will then not attempt to decrypt the frames. | ||
3289 | */ | ||
3290 | if (vif->type == NL80211_IFTYPE_ADHOC && | ||
3291 | !(key->flags & IEEE80211_KEY_FLAG_PAIRWISE)) | ||
3292 | return -EOPNOTSUPP; | ||
3293 | |||
3289 | static_key = !iwl_is_associated(priv, IWL_RXON_CTX_BSS); | 3294 | static_key = !iwl_is_associated(priv, IWL_RXON_CTX_BSS); |
3290 | 3295 | ||
3291 | if (!static_key) { | 3296 | if (!static_key) { |
@@ -3915,7 +3920,8 @@ static int iwl3945_setup_mac(struct iwl_priv *priv) | |||
3915 | priv->contexts[IWL_RXON_CTX_BSS].interface_modes; | 3920 | priv->contexts[IWL_RXON_CTX_BSS].interface_modes; |
3916 | 3921 | ||
3917 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | | 3922 | hw->wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY | |
3918 | WIPHY_FLAG_DISABLE_BEACON_HINTS; | 3923 | WIPHY_FLAG_DISABLE_BEACON_HINTS | |
3924 | WIPHY_FLAG_IBSS_RSN; | ||
3919 | 3925 | ||
3920 | hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945; | 3926 | hw->wiphy->max_scan_ssids = PROBE_OPTION_MAX_3945; |
3921 | /* we create the 802.11 header and a zero-length SSID element */ | 3927 | /* we create the 802.11 header and a zero-length SSID element */ |