diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 42cc2884971c..0cd8cb96a5ef 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -4442,15 +4442,23 @@ static void iwl3945_bss_info_changed(struct ieee80211_hw *hw, | |||
4442 | 4442 | ||
4443 | } | 4443 | } |
4444 | 4444 | ||
4445 | static int iwl3945_mac_hw_scan(struct ieee80211_hw *hw, u8 *ssid, size_t len) | 4445 | static int iwl3945_mac_hw_scan(struct ieee80211_hw *hw, |
4446 | struct cfg80211_scan_request *req) | ||
4446 | { | 4447 | { |
4447 | int rc = 0; | 4448 | int rc = 0; |
4448 | unsigned long flags; | 4449 | unsigned long flags; |
4449 | struct iwl_priv *priv = hw->priv; | 4450 | struct iwl_priv *priv = hw->priv; |
4451 | size_t len = 0; | ||
4452 | u8 *ssid = NULL; | ||
4450 | DECLARE_SSID_BUF(ssid_buf); | 4453 | DECLARE_SSID_BUF(ssid_buf); |
4451 | 4454 | ||
4452 | IWL_DEBUG_MAC80211(priv, "enter\n"); | 4455 | IWL_DEBUG_MAC80211(priv, "enter\n"); |
4453 | 4456 | ||
4457 | if (req->n_ssids) { | ||
4458 | ssid = req->ssids[0].ssid; | ||
4459 | len = req->ssids[0].ssid_len; | ||
4460 | } | ||
4461 | |||
4454 | mutex_lock(&priv->mutex); | 4462 | mutex_lock(&priv->mutex); |
4455 | spin_lock_irqsave(&priv->lock, flags); | 4463 | spin_lock_irqsave(&priv->lock, flags); |
4456 | 4464 | ||
@@ -4478,9 +4486,8 @@ static int iwl3945_mac_hw_scan(struct ieee80211_hw *hw, u8 *ssid, size_t len) | |||
4478 | print_ssid(ssid_buf, ssid, len), len); | 4486 | print_ssid(ssid_buf, ssid, len), len); |
4479 | 4487 | ||
4480 | priv->one_direct_scan = 1; | 4488 | priv->one_direct_scan = 1; |
4481 | priv->direct_ssid_len = (u8) | 4489 | priv->direct_ssid_len = len; |
4482 | min((u8) len, (u8) IW_ESSID_MAX_SIZE); | 4490 | memcpy(priv->direct_ssid, ssid, len); |
4483 | memcpy(priv->direct_ssid, ssid, priv->direct_ssid_len); | ||
4484 | } else | 4491 | } else |
4485 | priv->one_direct_scan = 0; | 4492 | priv->one_direct_scan = 0; |
4486 | 4493 | ||
@@ -5412,6 +5419,8 @@ static int iwl3945_pci_probe(struct pci_dev *pdev, const struct pci_device_id *e | |||
5412 | 5419 | ||
5413 | hw->wiphy->custom_regulatory = true; | 5420 | hw->wiphy->custom_regulatory = true; |
5414 | 5421 | ||
5422 | hw->wiphy->max_scan_ssids = 1; | ||
5423 | |||
5415 | /* 4 EDCA QOS priorities */ | 5424 | /* 4 EDCA QOS priorities */ |
5416 | hw->queues = 4; | 5425 | hw->queues = 4; |
5417 | 5426 | ||