diff options
| -rw-r--r-- | Documentation/DocBook/mac80211.tmpl | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/Kconfig | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 9 | ||||
| -rw-r--r-- | drivers/net/wireless/b43/b43.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/b43/main.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/b43/pcmcia.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/b43legacy/b43legacy.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/b43legacy/main.c | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/iwmc3200wifi/Kconfig | 9 | ||||
| -rw-r--r-- | drivers/net/wireless/mac80211_hwsim.c | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/p54/p54common.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/zd1211rw/zd_usb.c | 3 | ||||
| -rw-r--r-- | drivers/platform/x86/hp-wmi.c | 2 | ||||
| -rw-r--r-- | drivers/ssb/pcmcia.c | 6 | ||||
| -rw-r--r-- | include/linux/rfkill.h | 1 | ||||
| -rw-r--r-- | net/mac80211/mesh_hwmp.c | 2 | ||||
| -rw-r--r-- | net/mac80211/rc80211_minstrel.c | 5 | ||||
| -rw-r--r-- | net/wireless/nl80211.c | 1 | ||||
| -rw-r--r-- | net/wireless/scan.c | 1 |
19 files changed, 48 insertions, 17 deletions
diff --git a/Documentation/DocBook/mac80211.tmpl b/Documentation/DocBook/mac80211.tmpl index e36986663570..f3f37f141dbd 100644 --- a/Documentation/DocBook/mac80211.tmpl +++ b/Documentation/DocBook/mac80211.tmpl | |||
| @@ -184,8 +184,6 @@ usage should require reading the full document. | |||
| 184 | !Finclude/net/mac80211.h ieee80211_ctstoself_get | 184 | !Finclude/net/mac80211.h ieee80211_ctstoself_get |
| 185 | !Finclude/net/mac80211.h ieee80211_ctstoself_duration | 185 | !Finclude/net/mac80211.h ieee80211_ctstoself_duration |
| 186 | !Finclude/net/mac80211.h ieee80211_generic_frame_duration | 186 | !Finclude/net/mac80211.h ieee80211_generic_frame_duration |
| 187 | !Finclude/net/mac80211.h ieee80211_get_hdrlen_from_skb | ||
| 188 | !Finclude/net/mac80211.h ieee80211_hdrlen | ||
| 189 | !Finclude/net/mac80211.h ieee80211_wake_queue | 187 | !Finclude/net/mac80211.h ieee80211_wake_queue |
| 190 | !Finclude/net/mac80211.h ieee80211_stop_queue | 188 | !Finclude/net/mac80211.h ieee80211_stop_queue |
| 191 | !Finclude/net/mac80211.h ieee80211_wake_queues | 189 | !Finclude/net/mac80211.h ieee80211_wake_queues |
diff --git a/drivers/net/wireless/ath/Kconfig b/drivers/net/wireless/ath/Kconfig index d26e7b485315..eb0337c49546 100644 --- a/drivers/net/wireless/ath/Kconfig +++ b/drivers/net/wireless/ath/Kconfig | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | config ATH_COMMON | 1 | config ATH_COMMON |
| 2 | tristate "Atheros Wireless Cards" | 2 | tristate "Atheros Wireless Cards" |
| 3 | depends on WLAN_80211 | ||
| 3 | depends on ATH5K || ATH9K || AR9170_USB | 4 | depends on ATH5K || ATH9K || AR9170_USB |
| 4 | 5 | ||
| 5 | source "drivers/net/wireless/ath/ath5k/Kconfig" | 6 | source "drivers/net/wireless/ath/ath5k/Kconfig" |
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index b61a071788a5..4ccf48e396df 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
| @@ -355,7 +355,14 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq, | |||
| 355 | } | 355 | } |
| 356 | 356 | ||
| 357 | if (bf_next == NULL) { | 357 | if (bf_next == NULL) { |
| 358 | INIT_LIST_HEAD(&bf_head); | 358 | /* |
| 359 | * Make sure the last desc is reclaimed if it | ||
| 360 | * not a holding desc. | ||
| 361 | */ | ||
| 362 | if (!bf_last->bf_stale) | ||
| 363 | list_move_tail(&bf->list, &bf_head); | ||
| 364 | else | ||
| 365 | INIT_LIST_HEAD(&bf_head); | ||
| 359 | } else { | 366 | } else { |
| 360 | ASSERT(!list_empty(bf_q)); | 367 | ASSERT(!list_empty(bf_q)); |
| 361 | list_move_tail(&bf->list, &bf_head); | 368 | list_move_tail(&bf->list, &bf_head); |
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h index f580c2812d91..40448067e4cc 100644 --- a/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h | |||
| @@ -648,6 +648,7 @@ struct b43_wl { | |||
| 648 | u8 nr_devs; | 648 | u8 nr_devs; |
| 649 | 649 | ||
| 650 | bool radiotap_enabled; | 650 | bool radiotap_enabled; |
| 651 | bool radio_enabled; | ||
| 651 | 652 | ||
| 652 | /* The beacon we are currently using (AP or IBSS mode). | 653 | /* The beacon we are currently using (AP or IBSS mode). |
| 653 | * This beacon stuff is protected by the irq_lock. */ | 654 | * This beacon stuff is protected by the irq_lock. */ |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 6456afebdba1..e71c8d9cd706 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
| @@ -3497,8 +3497,8 @@ static int b43_op_config(struct ieee80211_hw *hw, u32 changed) | |||
| 3497 | if (phy->ops->set_rx_antenna) | 3497 | if (phy->ops->set_rx_antenna) |
| 3498 | phy->ops->set_rx_antenna(dev, antenna); | 3498 | phy->ops->set_rx_antenna(dev, antenna); |
| 3499 | 3499 | ||
| 3500 | if (!!conf->radio_enabled != phy->radio_on) { | 3500 | if (wl->radio_enabled != phy->radio_on) { |
| 3501 | if (conf->radio_enabled) { | 3501 | if (wl->radio_enabled) { |
| 3502 | b43_software_rfkill(dev, false); | 3502 | b43_software_rfkill(dev, false); |
| 3503 | b43info(dev->wl, "Radio turned on by software\n"); | 3503 | b43info(dev->wl, "Radio turned on by software\n"); |
| 3504 | if (!dev->radio_hw_enable) { | 3504 | if (!dev->radio_hw_enable) { |
| @@ -4339,6 +4339,7 @@ static int b43_op_start(struct ieee80211_hw *hw) | |||
| 4339 | wl->beacon0_uploaded = 0; | 4339 | wl->beacon0_uploaded = 0; |
| 4340 | wl->beacon1_uploaded = 0; | 4340 | wl->beacon1_uploaded = 0; |
| 4341 | wl->beacon_templates_virgin = 1; | 4341 | wl->beacon_templates_virgin = 1; |
| 4342 | wl->radio_enabled = 1; | ||
| 4342 | 4343 | ||
| 4343 | mutex_lock(&wl->mutex); | 4344 | mutex_lock(&wl->mutex); |
| 4344 | 4345 | ||
| @@ -4378,6 +4379,7 @@ static void b43_op_stop(struct ieee80211_hw *hw) | |||
| 4378 | if (b43_status(dev) >= B43_STAT_STARTED) | 4379 | if (b43_status(dev) >= B43_STAT_STARTED) |
| 4379 | b43_wireless_core_stop(dev); | 4380 | b43_wireless_core_stop(dev); |
| 4380 | b43_wireless_core_exit(dev); | 4381 | b43_wireless_core_exit(dev); |
| 4382 | wl->radio_enabled = 0; | ||
| 4381 | mutex_unlock(&wl->mutex); | 4383 | mutex_unlock(&wl->mutex); |
| 4382 | 4384 | ||
| 4383 | cancel_work_sync(&(wl->txpower_adjust_work)); | 4385 | cancel_work_sync(&(wl->txpower_adjust_work)); |
| @@ -4560,6 +4562,7 @@ static int b43_wireless_core_attach(struct b43_wldev *dev) | |||
| 4560 | B43_WARN_ON(1); | 4562 | B43_WARN_ON(1); |
| 4561 | 4563 | ||
| 4562 | dev->phy.gmode = have_2ghz_phy; | 4564 | dev->phy.gmode = have_2ghz_phy; |
| 4565 | dev->phy.radio_on = 1; | ||
| 4563 | tmp = dev->phy.gmode ? B43_TMSLOW_GMODE : 0; | 4566 | tmp = dev->phy.gmode ? B43_TMSLOW_GMODE : 0; |
| 4564 | b43_wireless_core_reset(dev, tmp); | 4567 | b43_wireless_core_reset(dev, tmp); |
| 4565 | 4568 | ||
diff --git a/drivers/net/wireless/b43/pcmcia.c b/drivers/net/wireless/b43/pcmcia.c index 3cfc30307a27..6c3a74964ab8 100644 --- a/drivers/net/wireless/b43/pcmcia.c +++ b/drivers/net/wireless/b43/pcmcia.c | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | 35 | ||
| 36 | static /*const */ struct pcmcia_device_id b43_pcmcia_tbl[] = { | 36 | static /*const */ struct pcmcia_device_id b43_pcmcia_tbl[] = { |
| 37 | PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x448), | 37 | PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x448), |
| 38 | PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x476), | ||
| 38 | PCMCIA_DEVICE_NULL, | 39 | PCMCIA_DEVICE_NULL, |
| 39 | }; | 40 | }; |
| 40 | 41 | ||
diff --git a/drivers/net/wireless/b43legacy/b43legacy.h b/drivers/net/wireless/b43legacy/b43legacy.h index 77fda148ac46..038baa8869e2 100644 --- a/drivers/net/wireless/b43legacy/b43legacy.h +++ b/drivers/net/wireless/b43legacy/b43legacy.h | |||
| @@ -607,6 +607,7 @@ struct b43legacy_wl { | |||
| 607 | u8 nr_devs; | 607 | u8 nr_devs; |
| 608 | 608 | ||
| 609 | bool radiotap_enabled; | 609 | bool radiotap_enabled; |
| 610 | bool radio_enabled; | ||
| 610 | 611 | ||
| 611 | /* The beacon we are currently using (AP or IBSS mode). | 612 | /* The beacon we are currently using (AP or IBSS mode). |
| 612 | * This beacon stuff is protected by the irq_lock. */ | 613 | * This beacon stuff is protected by the irq_lock. */ |
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index e5136fb65ddd..c4973c1942bf 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
| @@ -2689,8 +2689,8 @@ static int b43legacy_op_dev_config(struct ieee80211_hw *hw, | |||
| 2689 | /* Antennas for RX and management frame TX. */ | 2689 | /* Antennas for RX and management frame TX. */ |
| 2690 | b43legacy_mgmtframe_txantenna(dev, antenna_tx); | 2690 | b43legacy_mgmtframe_txantenna(dev, antenna_tx); |
| 2691 | 2691 | ||
| 2692 | if (!!conf->radio_enabled != phy->radio_on) { | 2692 | if (wl->radio_enabled != phy->radio_on) { |
| 2693 | if (conf->radio_enabled) { | 2693 | if (wl->radio_enabled) { |
| 2694 | b43legacy_radio_turn_on(dev); | 2694 | b43legacy_radio_turn_on(dev); |
| 2695 | b43legacyinfo(dev->wl, "Radio turned on by software\n"); | 2695 | b43legacyinfo(dev->wl, "Radio turned on by software\n"); |
| 2696 | if (!dev->radio_hw_enable) | 2696 | if (!dev->radio_hw_enable) |
| @@ -3441,6 +3441,7 @@ static int b43legacy_op_start(struct ieee80211_hw *hw) | |||
| 3441 | wl->beacon0_uploaded = 0; | 3441 | wl->beacon0_uploaded = 0; |
| 3442 | wl->beacon1_uploaded = 0; | 3442 | wl->beacon1_uploaded = 0; |
| 3443 | wl->beacon_templates_virgin = 1; | 3443 | wl->beacon_templates_virgin = 1; |
| 3444 | wl->radio_enabled = 1; | ||
| 3444 | 3445 | ||
| 3445 | mutex_lock(&wl->mutex); | 3446 | mutex_lock(&wl->mutex); |
| 3446 | 3447 | ||
| @@ -3479,6 +3480,7 @@ static void b43legacy_op_stop(struct ieee80211_hw *hw) | |||
| 3479 | if (b43legacy_status(dev) >= B43legacy_STAT_STARTED) | 3480 | if (b43legacy_status(dev) >= B43legacy_STAT_STARTED) |
| 3480 | b43legacy_wireless_core_stop(dev); | 3481 | b43legacy_wireless_core_stop(dev); |
| 3481 | b43legacy_wireless_core_exit(dev); | 3482 | b43legacy_wireless_core_exit(dev); |
| 3483 | wl->radio_enabled = 0; | ||
| 3482 | mutex_unlock(&wl->mutex); | 3484 | mutex_unlock(&wl->mutex); |
| 3483 | } | 3485 | } |
| 3484 | 3486 | ||
| @@ -3620,6 +3622,7 @@ static int b43legacy_wireless_core_attach(struct b43legacy_wldev *dev) | |||
| 3620 | have_bphy = 1; | 3622 | have_bphy = 1; |
| 3621 | 3623 | ||
| 3622 | dev->phy.gmode = (have_gphy || have_bphy); | 3624 | dev->phy.gmode = (have_gphy || have_bphy); |
| 3625 | dev->phy.radio_on = 1; | ||
| 3623 | tmp = dev->phy.gmode ? B43legacy_TMSLOW_GMODE : 0; | 3626 | tmp = dev->phy.gmode ? B43legacy_TMSLOW_GMODE : 0; |
| 3624 | b43legacy_wireless_core_reset(dev, tmp); | 3627 | b43legacy_wireless_core_reset(dev, tmp); |
| 3625 | 3628 | ||
diff --git a/drivers/net/wireless/iwmc3200wifi/Kconfig b/drivers/net/wireless/iwmc3200wifi/Kconfig index 1eccb6df46dd..030401d367d3 100644 --- a/drivers/net/wireless/iwmc3200wifi/Kconfig +++ b/drivers/net/wireless/iwmc3200wifi/Kconfig | |||
| @@ -4,6 +4,15 @@ config IWM | |||
| 4 | depends on CFG80211 | 4 | depends on CFG80211 |
| 5 | select WIRELESS_EXT | 5 | select WIRELESS_EXT |
| 6 | select FW_LOADER | 6 | select FW_LOADER |
| 7 | help | ||
| 8 | The Intel Wireless Multicomm 3200 hardware is a combo | ||
| 9 | card with GPS, Bluetooth, WiMax and 802.11 radios. It | ||
| 10 | runs over SDIO and is typically found on Moorestown | ||
| 11 | based platform. This driver takes care of the 802.11 | ||
| 12 | part, which is a fullmac one. | ||
| 13 | |||
| 14 | If you choose to build it as a module, it'll be called | ||
| 15 | iwmc3200wifi.ko. | ||
| 7 | 16 | ||
| 8 | config IWM_DEBUG | 17 | config IWM_DEBUG |
| 9 | bool "Enable full debugging output in iwmc3200wifi" | 18 | bool "Enable full debugging output in iwmc3200wifi" |
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index e789c6e9938c..a111bda392e2 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c | |||
| @@ -418,6 +418,7 @@ static bool mac80211_hwsim_tx_frame(struct ieee80211_hw *hw, | |||
| 418 | continue; | 418 | continue; |
| 419 | 419 | ||
| 420 | if (!data2->started || !hwsim_ps_rx_ok(data2, skb) || | 420 | if (!data2->started || !hwsim_ps_rx_ok(data2, skb) || |
| 421 | !data->channel || !data2->channel || | ||
| 421 | data->channel->center_freq != data2->channel->center_freq || | 422 | data->channel->center_freq != data2->channel->center_freq || |
| 422 | !(data->group & data2->group)) | 423 | !(data->group & data2->group)) |
| 423 | continue; | 424 | continue; |
diff --git a/drivers/net/wireless/p54/p54common.c b/drivers/net/wireless/p54/p54common.c index 48d81d98e12d..22ca122bd798 100644 --- a/drivers/net/wireless/p54/p54common.c +++ b/drivers/net/wireless/p54/p54common.c | |||
| @@ -912,13 +912,14 @@ static void p54_rx_frame_sent(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
| 912 | } | 912 | } |
| 913 | 913 | ||
| 914 | __skb_unlink(entry, &priv->tx_queue); | 914 | __skb_unlink(entry, &priv->tx_queue); |
| 915 | spin_unlock_irqrestore(&priv->tx_queue.lock, flags); | ||
| 916 | 915 | ||
| 917 | frame_len = entry->len; | 916 | frame_len = entry->len; |
| 918 | entry_hdr = (struct p54_hdr *) entry->data; | 917 | entry_hdr = (struct p54_hdr *) entry->data; |
| 919 | entry_data = (struct p54_tx_data *) entry_hdr->data; | 918 | entry_data = (struct p54_tx_data *) entry_hdr->data; |
| 920 | priv->tx_stats[entry_data->hw_queue].len--; | 919 | if (priv->tx_stats[entry_data->hw_queue].len) |
| 920 | priv->tx_stats[entry_data->hw_queue].len--; | ||
| 921 | priv->stats.dot11ACKFailureCount += payload->tries - 1; | 921 | priv->stats.dot11ACKFailureCount += payload->tries - 1; |
| 922 | spin_unlock_irqrestore(&priv->tx_queue.lock, flags); | ||
| 922 | 923 | ||
| 923 | /* | 924 | /* |
| 924 | * Frames in P54_QUEUE_FWSCAN and P54_QUEUE_BEACON are | 925 | * Frames in P54_QUEUE_FWSCAN and P54_QUEUE_BEACON are |
diff --git a/drivers/net/wireless/zd1211rw/zd_usb.c b/drivers/net/wireless/zd1211rw/zd_usb.c index 14a19baff214..0e6e44689cc6 100644 --- a/drivers/net/wireless/zd1211rw/zd_usb.c +++ b/drivers/net/wireless/zd1211rw/zd_usb.c | |||
| @@ -38,7 +38,6 @@ static struct usb_device_id usb_ids[] = { | |||
| 38 | /* ZD1211 */ | 38 | /* ZD1211 */ |
| 39 | { USB_DEVICE(0x0ace, 0x1211), .driver_info = DEVICE_ZD1211 }, | 39 | { USB_DEVICE(0x0ace, 0x1211), .driver_info = DEVICE_ZD1211 }, |
| 40 | { USB_DEVICE(0x0ace, 0xa211), .driver_info = DEVICE_ZD1211 }, | 40 | { USB_DEVICE(0x0ace, 0xa211), .driver_info = DEVICE_ZD1211 }, |
| 41 | { USB_DEVICE(0x07b8, 0x6001), .driver_info = DEVICE_ZD1211 }, | ||
| 42 | { USB_DEVICE(0x126f, 0xa006), .driver_info = DEVICE_ZD1211 }, | 41 | { USB_DEVICE(0x126f, 0xa006), .driver_info = DEVICE_ZD1211 }, |
| 43 | { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 }, | 42 | { USB_DEVICE(0x6891, 0xa727), .driver_info = DEVICE_ZD1211 }, |
| 44 | { USB_DEVICE(0x0df6, 0x9071), .driver_info = DEVICE_ZD1211 }, | 43 | { USB_DEVICE(0x0df6, 0x9071), .driver_info = DEVICE_ZD1211 }, |
| @@ -61,6 +60,7 @@ static struct usb_device_id usb_ids[] = { | |||
| 61 | { USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 }, | 60 | { USB_DEVICE(0x157e, 0x300a), .driver_info = DEVICE_ZD1211 }, |
| 62 | { USB_DEVICE(0x0105, 0x145f), .driver_info = DEVICE_ZD1211 }, | 61 | { USB_DEVICE(0x0105, 0x145f), .driver_info = DEVICE_ZD1211 }, |
| 63 | /* ZD1211B */ | 62 | /* ZD1211B */ |
| 63 | { USB_DEVICE(0x054c, 0x0257), .driver_info = DEVICE_ZD1211B }, | ||
| 64 | { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B }, | 64 | { USB_DEVICE(0x0ace, 0x1215), .driver_info = DEVICE_ZD1211B }, |
| 65 | { USB_DEVICE(0x0ace, 0xb215), .driver_info = DEVICE_ZD1211B }, | 65 | { USB_DEVICE(0x0ace, 0xb215), .driver_info = DEVICE_ZD1211B }, |
| 66 | { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B }, | 66 | { USB_DEVICE(0x157e, 0x300d), .driver_info = DEVICE_ZD1211B }, |
| @@ -87,6 +87,7 @@ static struct usb_device_id usb_ids[] = { | |||
| 87 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, | 87 | { USB_DEVICE(0x0471, 0x1237), .driver_info = DEVICE_ZD1211B }, |
| 88 | { USB_DEVICE(0x07fa, 0x1196), .driver_info = DEVICE_ZD1211B }, | 88 | { USB_DEVICE(0x07fa, 0x1196), .driver_info = DEVICE_ZD1211B }, |
| 89 | { USB_DEVICE(0x0df6, 0x0036), .driver_info = DEVICE_ZD1211B }, | 89 | { USB_DEVICE(0x0df6, 0x0036), .driver_info = DEVICE_ZD1211B }, |
| 90 | { USB_DEVICE(0x07b8, 0x6001), .driver_info = DEVICE_ZD1211B }, | ||
| 90 | /* "Driverless" devices that need ejecting */ | 91 | /* "Driverless" devices that need ejecting */ |
| 91 | { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER }, | 92 | { USB_DEVICE(0x0ace, 0x2011), .driver_info = DEVICE_INSTALLER }, |
| 92 | { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER }, | 93 | { USB_DEVICE(0x0ace, 0x20ff), .driver_info = DEVICE_INSTALLER }, |
diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c index 4ac2311c00af..ca508564a181 100644 --- a/drivers/platform/x86/hp-wmi.c +++ b/drivers/platform/x86/hp-wmi.c | |||
| @@ -171,7 +171,7 @@ static int hp_wmi_tablet_state(void) | |||
| 171 | static int hp_wmi_set_block(void *data, bool blocked) | 171 | static int hp_wmi_set_block(void *data, bool blocked) |
| 172 | { | 172 | { |
| 173 | unsigned long b = (unsigned long) data; | 173 | unsigned long b = (unsigned long) data; |
| 174 | int query = BIT(b + 8) | ((!!blocked) << b); | 174 | int query = BIT(b + 8) | ((!blocked) << b); |
| 175 | 175 | ||
| 176 | return hp_wmi_perform_query(HPWMI_WIRELESS_QUERY, 1, query); | 176 | return hp_wmi_perform_query(HPWMI_WIRELESS_QUERY, 1, query); |
| 177 | } | 177 | } |
diff --git a/drivers/ssb/pcmcia.c b/drivers/ssb/pcmcia.c index fbfadbac67e8..d288608d2206 100644 --- a/drivers/ssb/pcmcia.c +++ b/drivers/ssb/pcmcia.c | |||
| @@ -678,7 +678,8 @@ int ssb_pcmcia_get_invariants(struct ssb_bus *bus, | |||
| 678 | sprom->board_rev = tuple.TupleData[1]; | 678 | sprom->board_rev = tuple.TupleData[1]; |
| 679 | break; | 679 | break; |
| 680 | case SSB_PCMCIA_CIS_PA: | 680 | case SSB_PCMCIA_CIS_PA: |
| 681 | GOTO_ERROR_ON(tuple.TupleDataLen != 9, | 681 | GOTO_ERROR_ON((tuple.TupleDataLen != 9) && |
| 682 | (tuple.TupleDataLen != 10), | ||
| 682 | "pa tpl size"); | 683 | "pa tpl size"); |
| 683 | sprom->pa0b0 = tuple.TupleData[1] | | 684 | sprom->pa0b0 = tuple.TupleData[1] | |
| 684 | ((u16)tuple.TupleData[2] << 8); | 685 | ((u16)tuple.TupleData[2] << 8); |
| @@ -718,7 +719,8 @@ int ssb_pcmcia_get_invariants(struct ssb_bus *bus, | |||
| 718 | sprom->antenna_gain.ghz5.a3 = tuple.TupleData[1]; | 719 | sprom->antenna_gain.ghz5.a3 = tuple.TupleData[1]; |
| 719 | break; | 720 | break; |
| 720 | case SSB_PCMCIA_CIS_BFLAGS: | 721 | case SSB_PCMCIA_CIS_BFLAGS: |
| 721 | GOTO_ERROR_ON(tuple.TupleDataLen != 3, | 722 | GOTO_ERROR_ON((tuple.TupleDataLen != 3) && |
| 723 | (tuple.TupleDataLen != 5), | ||
| 722 | "bfl tpl size"); | 724 | "bfl tpl size"); |
| 723 | sprom->boardflags_lo = tuple.TupleData[1] | | 725 | sprom->boardflags_lo = tuple.TupleData[1] | |
| 724 | ((u16)tuple.TupleData[2] << 8); | 726 | ((u16)tuple.TupleData[2] << 8); |
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index e73e2429a1b1..2ce29831feb6 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
| @@ -99,7 +99,6 @@ enum rfkill_user_states { | |||
| 99 | #undef RFKILL_STATE_UNBLOCKED | 99 | #undef RFKILL_STATE_UNBLOCKED |
| 100 | #undef RFKILL_STATE_HARD_BLOCKED | 100 | #undef RFKILL_STATE_HARD_BLOCKED |
| 101 | 101 | ||
| 102 | #include <linux/types.h> | ||
| 103 | #include <linux/kernel.h> | 102 | #include <linux/kernel.h> |
| 104 | #include <linux/list.h> | 103 | #include <linux/list.h> |
| 105 | #include <linux/mutex.h> | 104 | #include <linux/mutex.h> |
diff --git a/net/mac80211/mesh_hwmp.c b/net/mac80211/mesh_hwmp.c index 003cb470ac84..f49ef288e2e2 100644 --- a/net/mac80211/mesh_hwmp.c +++ b/net/mac80211/mesh_hwmp.c | |||
| @@ -637,7 +637,7 @@ static void mesh_queue_preq(struct mesh_path *mpath, u8 flags) | |||
| 637 | struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; | 637 | struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; |
| 638 | struct mesh_preq_queue *preq_node; | 638 | struct mesh_preq_queue *preq_node; |
| 639 | 639 | ||
| 640 | preq_node = kmalloc(sizeof(struct mesh_preq_queue), GFP_KERNEL); | 640 | preq_node = kmalloc(sizeof(struct mesh_preq_queue), GFP_ATOMIC); |
| 641 | if (!preq_node) { | 641 | if (!preq_node) { |
| 642 | printk(KERN_DEBUG "Mesh HWMP: could not allocate PREQ node\n"); | 642 | printk(KERN_DEBUG "Mesh HWMP: could not allocate PREQ node\n"); |
| 643 | return; | 643 | return; |
diff --git a/net/mac80211/rc80211_minstrel.c b/net/mac80211/rc80211_minstrel.c index b218b98fba7f..37771abd8f5a 100644 --- a/net/mac80211/rc80211_minstrel.c +++ b/net/mac80211/rc80211_minstrel.c | |||
| @@ -66,7 +66,7 @@ rix_to_ndx(struct minstrel_sta_info *mi, int rix) | |||
| 66 | for (i = rix; i >= 0; i--) | 66 | for (i = rix; i >= 0; i--) |
| 67 | if (mi->r[i].rix == rix) | 67 | if (mi->r[i].rix == rix) |
| 68 | break; | 68 | break; |
| 69 | WARN_ON(mi->r[i].rix != rix); | 69 | WARN_ON(i < 0); |
| 70 | return i; | 70 | return i; |
| 71 | } | 71 | } |
| 72 | 72 | ||
| @@ -181,6 +181,9 @@ minstrel_tx_status(void *priv, struct ieee80211_supported_band *sband, | |||
| 181 | break; | 181 | break; |
| 182 | 182 | ||
| 183 | ndx = rix_to_ndx(mi, ar[i].idx); | 183 | ndx = rix_to_ndx(mi, ar[i].idx); |
| 184 | if (ndx < 0) | ||
| 185 | continue; | ||
| 186 | |||
| 184 | mi->r[ndx].attempts += ar[i].count; | 187 | mi->r[ndx].attempts += ar[i].count; |
| 185 | 188 | ||
| 186 | if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0)) | 189 | if ((i != IEEE80211_TX_MAX_RATES - 1) && (ar[i + 1].idx < 0)) |
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 241bddd0b4f1..43bdb1372cae 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
| @@ -447,6 +447,7 @@ static int nl80211_set_wiphy(struct sk_buff *skb, struct genl_info *info) | |||
| 447 | 447 | ||
| 448 | rdev = __cfg80211_drv_from_info(info); | 448 | rdev = __cfg80211_drv_from_info(info); |
| 449 | if (IS_ERR(rdev)) { | 449 | if (IS_ERR(rdev)) { |
| 450 | mutex_unlock(&cfg80211_mutex); | ||
| 450 | result = PTR_ERR(rdev); | 451 | result = PTR_ERR(rdev); |
| 451 | goto unlock; | 452 | goto unlock; |
| 452 | } | 453 | } |
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index e95b638b919f..f8e71b300001 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c | |||
| @@ -366,7 +366,6 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev, | |||
| 366 | found = rb_find_bss(dev, res); | 366 | found = rb_find_bss(dev, res); |
| 367 | 367 | ||
| 368 | if (found) { | 368 | if (found) { |
| 369 | kref_get(&found->ref); | ||
| 370 | found->pub.beacon_interval = res->pub.beacon_interval; | 369 | found->pub.beacon_interval = res->pub.beacon_interval; |
| 371 | found->pub.tsf = res->pub.tsf; | 370 | found->pub.tsf = res->pub.tsf; |
| 372 | found->pub.signal = res->pub.signal; | 371 | found->pub.signal = res->pub.signal; |
