diff options
author | David S. Miller <davem@davemloft.net> | 2008-11-07 01:43:03 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-11-07 01:43:03 -0500 |
commit | 9eeda9abd1faf489f3df9a1f557975f4c8650363 (patch) | |
tree | 3e0a58e25b776cfbee193195460324dccb1886c7 /drivers/net/wireless | |
parent | 61c9eaf90081cbe6dc4f389e0056bff76eca19ec (diff) | |
parent | 4bab0ea1d42dd1927af9df6fbf0003fc00617c50 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/wireless/ath5k/base.c
net/8021q/vlan_core.c
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r-- | drivers/net/wireless/ath5k/base.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/ath5k/desc.c | 16 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 15 | ||||
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_usb.c | 2 |
5 files changed, 32 insertions, 11 deletions
diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index 7ac5f2847da5..6f368e8cdf17 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c | |||
@@ -2949,8 +2949,10 @@ static void ath5k_configure_filter(struct ieee80211_hw *hw, | |||
2949 | sc->opmode != NL80211_IFTYPE_MESH_POINT && | 2949 | sc->opmode != NL80211_IFTYPE_MESH_POINT && |
2950 | test_bit(ATH_STAT_PROMISC, sc->status)) | 2950 | test_bit(ATH_STAT_PROMISC, sc->status)) |
2951 | rfilt |= AR5K_RX_FILTER_PROM; | 2951 | rfilt |= AR5K_RX_FILTER_PROM; |
2952 | if (sc->opmode == NL80211_IFTYPE_ADHOC) | 2952 | if (sc->opmode == NL80211_IFTYPE_STATION || |
2953 | sc->opmode == NL80211_IFTYPE_ADHOC) { | ||
2953 | rfilt |= AR5K_RX_FILTER_BEACON; | 2954 | rfilt |= AR5K_RX_FILTER_BEACON; |
2955 | } | ||
2954 | if (sc->opmode == NL80211_IFTYPE_MESH_POINT) | 2956 | if (sc->opmode == NL80211_IFTYPE_MESH_POINT) |
2955 | rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON | | 2957 | rfilt |= AR5K_RX_FILTER_CONTROL | AR5K_RX_FILTER_BEACON | |
2956 | AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM; | 2958 | AR5K_RX_FILTER_PROBEREQ | AR5K_RX_FILTER_PROM; |
diff --git a/drivers/net/wireless/ath5k/desc.c b/drivers/net/wireless/ath5k/desc.c index dd1374052ba9..5e362a7a3620 100644 --- a/drivers/net/wireless/ath5k/desc.c +++ b/drivers/net/wireless/ath5k/desc.c | |||
@@ -531,10 +531,10 @@ static int ath5k_hw_proc_5210_rx_status(struct ath5k_hw *ah, | |||
531 | AR5K_5210_RX_DESC_STATUS0_RECEIVE_SIGNAL); | 531 | AR5K_5210_RX_DESC_STATUS0_RECEIVE_SIGNAL); |
532 | rs->rs_rate = AR5K_REG_MS(rx_status->rx_status_0, | 532 | rs->rs_rate = AR5K_REG_MS(rx_status->rx_status_0, |
533 | AR5K_5210_RX_DESC_STATUS0_RECEIVE_RATE); | 533 | AR5K_5210_RX_DESC_STATUS0_RECEIVE_RATE); |
534 | rs->rs_antenna = rx_status->rx_status_0 & | 534 | rs->rs_antenna = AR5K_REG_MS(rx_status->rx_status_0, |
535 | AR5K_5210_RX_DESC_STATUS0_RECEIVE_ANTENNA; | 535 | AR5K_5210_RX_DESC_STATUS0_RECEIVE_ANTENNA); |
536 | rs->rs_more = rx_status->rx_status_0 & | 536 | rs->rs_more = !!(rx_status->rx_status_0 & |
537 | AR5K_5210_RX_DESC_STATUS0_MORE; | 537 | AR5K_5210_RX_DESC_STATUS0_MORE); |
538 | /* TODO: this timestamp is 13 bit, later on we assume 15 bit */ | 538 | /* TODO: this timestamp is 13 bit, later on we assume 15 bit */ |
539 | rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1, | 539 | rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1, |
540 | AR5K_5210_RX_DESC_STATUS1_RECEIVE_TIMESTAMP); | 540 | AR5K_5210_RX_DESC_STATUS1_RECEIVE_TIMESTAMP); |
@@ -607,10 +607,10 @@ static int ath5k_hw_proc_5212_rx_status(struct ath5k_hw *ah, | |||
607 | AR5K_5212_RX_DESC_STATUS0_RECEIVE_SIGNAL); | 607 | AR5K_5212_RX_DESC_STATUS0_RECEIVE_SIGNAL); |
608 | rs->rs_rate = AR5K_REG_MS(rx_status->rx_status_0, | 608 | rs->rs_rate = AR5K_REG_MS(rx_status->rx_status_0, |
609 | AR5K_5212_RX_DESC_STATUS0_RECEIVE_RATE); | 609 | AR5K_5212_RX_DESC_STATUS0_RECEIVE_RATE); |
610 | rs->rs_antenna = rx_status->rx_status_0 & | 610 | rs->rs_antenna = AR5K_REG_MS(rx_status->rx_status_0, |
611 | AR5K_5212_RX_DESC_STATUS0_RECEIVE_ANTENNA; | 611 | AR5K_5212_RX_DESC_STATUS0_RECEIVE_ANTENNA); |
612 | rs->rs_more = rx_status->rx_status_0 & | 612 | rs->rs_more = !!(rx_status->rx_status_0 & |
613 | AR5K_5212_RX_DESC_STATUS0_MORE; | 613 | AR5K_5212_RX_DESC_STATUS0_MORE); |
614 | rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1, | 614 | rs->rs_tstamp = AR5K_REG_MS(rx_status->rx_status_1, |
615 | AR5K_5212_RX_DESC_STATUS1_RECEIVE_TIMESTAMP); | 615 | AR5K_5212_RX_DESC_STATUS1_RECEIVE_TIMESTAMP); |
616 | rs->rs_status = 0; | 616 | rs->rs_status = 0; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 82e98b4602c5..2c35a017e5f6 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -3237,7 +3237,11 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw, | |||
3237 | return; | 3237 | return; |
3238 | } | 3238 | } |
3239 | 3239 | ||
3240 | iwl_scan_cancel_timeout(priv, 100); | 3240 | if (iwl_scan_cancel(priv)) { |
3241 | /* cancel scan failed, just live w/ bad key and rely | ||
3242 | briefly on SW decryption */ | ||
3243 | return; | ||
3244 | } | ||
3241 | 3245 | ||
3242 | key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK); | 3246 | key_flags |= (STA_KEY_FLG_TKIP | STA_KEY_FLG_MAP_KEY_MSK); |
3243 | key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS); | 3247 | key_flags |= cpu_to_le16(keyconf->keyidx << STA_KEY_FLG_KEYID_POS); |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c index 5436cb43bca7..f675b2993a3d 100644 --- a/drivers/net/wireless/iwlwifi/iwl3945-base.c +++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c | |||
@@ -5720,7 +5720,6 @@ static void iwl3945_alive_start(struct iwl3945_priv *priv) | |||
5720 | if (priv->error_recovering) | 5720 | if (priv->error_recovering) |
5721 | iwl3945_error_recovery(priv); | 5721 | iwl3945_error_recovery(priv); |
5722 | 5722 | ||
5723 | ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC); | ||
5724 | return; | 5723 | return; |
5725 | 5724 | ||
5726 | restart: | 5725 | restart: |
@@ -5965,6 +5964,7 @@ static void iwl3945_bg_alive_start(struct work_struct *data) | |||
5965 | mutex_lock(&priv->mutex); | 5964 | mutex_lock(&priv->mutex); |
5966 | iwl3945_alive_start(priv); | 5965 | iwl3945_alive_start(priv); |
5967 | mutex_unlock(&priv->mutex); | 5966 | mutex_unlock(&priv->mutex); |
5967 | ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC); | ||
5968 | } | 5968 | } |
5969 | 5969 | ||
5970 | static void iwl3945_bg_rf_kill(struct work_struct *work) | 5970 | static void iwl3945_bg_rf_kill(struct work_struct *work) |
@@ -6209,6 +6209,11 @@ static void iwl3945_bg_request_scan(struct work_struct *data) | |||
6209 | n_probes, | 6209 | n_probes, |
6210 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); | 6210 | (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); |
6211 | 6211 | ||
6212 | if (scan->channel_count == 0) { | ||
6213 | IWL_DEBUG_SCAN("channel count %d\n", scan->channel_count); | ||
6214 | goto done; | ||
6215 | } | ||
6216 | |||
6212 | cmd.len += le16_to_cpu(scan->tx_cmd.len) + | 6217 | cmd.len += le16_to_cpu(scan->tx_cmd.len) + |
6213 | scan->channel_count * sizeof(struct iwl3945_scan_channel); | 6218 | scan->channel_count * sizeof(struct iwl3945_scan_channel); |
6214 | cmd.data = scan; | 6219 | cmd.data = scan; |
@@ -6226,6 +6231,14 @@ static void iwl3945_bg_request_scan(struct work_struct *data) | |||
6226 | return; | 6231 | return; |
6227 | 6232 | ||
6228 | done: | 6233 | done: |
6234 | /* can not perform scan make sure we clear scanning | ||
6235 | * bits from status so next scan request can be performed. | ||
6236 | * if we dont clear scanning status bit here all next scan | ||
6237 | * will fail | ||
6238 | */ | ||
6239 | clear_bit(STATUS_SCAN_HW, &priv->status); | ||
6240 | clear_bit(STATUS_SCANNING, &priv->status); | ||
6241 | |||
6229 | /* inform mac80211 scan aborted */ | 6242 | /* inform mac80211 scan aborted */ |
6230 | queue_work(priv->workqueue, &priv->scan_completed); | 6243 | queue_work(priv->workqueue, &priv->scan_completed); |
6231 | mutex_unlock(&priv->mutex); | 6244 | mutex_unlock(&priv->mutex); |
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index d7a2f52e40cf..04c139666965 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c | |||
@@ -61,6 +61,7 @@ static struct usb_device_id usb_ids[] = { | |||
61 | { USB_DEVICE(0x0105, 0x145f), .driver_info = DEVICE_ZD1211 }, | 61 | { USB_DEVICE(0x0105, 0x145f), .driver_info = DEVICE_ZD1211 }, |
62 | /* ZD1211B */ | 62 | /* ZD1211B */ |
63 | { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B }, | 63 | { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B }, |
64 | { USB_DEVICE(0x0ace, 0xb215), .driver_info = DEVICE_ZD1211B }, | ||
64 | { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B }, | 65 | { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B }, |
65 | { USB_DEVICE(0x079b, 0x0062), .driver_info = DEVICE_ZD1211B }, | 66 | { USB_DEVICE(0x079b, 0x0062), .driver_info = DEVICE_ZD1211B }, |
66 | { USB_DEVICE(0x1582, 0x6003), .driver_info = DEVICE_ZD1211B }, | 67 | { USB_DEVICE(0x1582, 0x6003), .driver_info = DEVICE_ZD1211B }, |
@@ -82,6 +83,7 @@ static struct usb_device_id usb_ids[] = { | |||
82 | { USB_DEVICE(0x0cde, 0x001a), .driver_info = DEVICE_ZD1211B }, | 83 | { USB_DEVICE(0x0cde, 0x001a), .driver_info = DEVICE_ZD1211B }, |
83 | { USB_DEVICE(0x0586, 0x340a), .driver_info = DEVICE_ZD1211B }, | 84 | { USB_DEVICE(0x0586, 0x340a), .driver_info = DEVICE_ZD1211B }, |
84 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, | 85 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, |
86 | { USB_DEVICE(0x07fa, 0x1196), .driver_info = DEVICE_ZD1211B }, | ||
85 | /* "Driverless" devices that need ejecting */ | 87 | /* "Driverless" devices that need ejecting */ |
86 | { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER }, | 88 | { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER }, |
87 | { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER }, | 89 | { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER }, |