diff options
| author | John W. Linville <linville@tuxdriver.com> | 2014-05-01 11:23:21 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2014-05-01 11:23:21 -0400 |
| commit | 812e4dafa42c18bb5d2f810dc1dcf57284a15717 (patch) | |
| tree | 92727f799133ee7843542befddeb1a46fef05efe | |
| parent | 22041fb05b66387b2854f789d1e1f55c7d07b4f4 (diff) | |
| parent | 3234f5b06fc3094176a86772cc64baf3decc98fc (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem
| -rw-r--r-- | MAINTAINERS | 1 | ||||
| -rw-r--r-- | drivers/bluetooth/ath3k.c | 2 | ||||
| -rw-r--r-- | drivers/bluetooth/btusb.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ahb.c | 4 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ani.c | 6 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/ath9k.h | 1 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/debug_sta.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/init.c | 3 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/pci.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/recv.c | 9 | ||||
| -rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 14 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/chip.c | 5 | ||||
| -rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 22 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8188ee/trx.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 2 | ||||
| -rw-r--r-- | drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 6 | ||||
| -rw-r--r-- | net/bluetooth/hci_conn.c | 9 | ||||
| -rw-r--r-- | net/bluetooth/hci_event.c | 6 |
18 files changed, 57 insertions, 50 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 1241a73cc230..db5971f401ec 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -7277,7 +7277,6 @@ F: drivers/video/aty/aty128fb.c | |||
| 7277 | RALINK RT2X00 WIRELESS LAN DRIVER | 7277 | RALINK RT2X00 WIRELESS LAN DRIVER |
| 7278 | P: rt2x00 project | 7278 | P: rt2x00 project |
| 7279 | M: Ivo van Doorn <IvDoorn@gmail.com> | 7279 | M: Ivo van Doorn <IvDoorn@gmail.com> |
| 7280 | M: Gertjan van Wingerde <gwingerde@gmail.com> | ||
| 7281 | M: Helmut Schaa <helmut.schaa@googlemail.com> | 7280 | M: Helmut Schaa <helmut.schaa@googlemail.com> |
| 7282 | L: linux-wireless@vger.kernel.org | 7281 | L: linux-wireless@vger.kernel.org |
| 7283 | L: users@rt2x00.serialmonkey.com (moderated for non-subscribers) | 7282 | L: users@rt2x00.serialmonkey.com (moderated for non-subscribers) |
diff --git a/drivers/bluetooth/ath3k.c b/drivers/bluetooth/ath3k.c index be571fef185d..a83b57e57b63 100644 --- a/drivers/bluetooth/ath3k.c +++ b/drivers/bluetooth/ath3k.c | |||
| @@ -82,6 +82,7 @@ static const struct usb_device_id ath3k_table[] = { | |||
| 82 | { USB_DEVICE(0x04CA, 0x3004) }, | 82 | { USB_DEVICE(0x04CA, 0x3004) }, |
| 83 | { USB_DEVICE(0x04CA, 0x3005) }, | 83 | { USB_DEVICE(0x04CA, 0x3005) }, |
| 84 | { USB_DEVICE(0x04CA, 0x3006) }, | 84 | { USB_DEVICE(0x04CA, 0x3006) }, |
| 85 | { USB_DEVICE(0x04CA, 0x3007) }, | ||
| 85 | { USB_DEVICE(0x04CA, 0x3008) }, | 86 | { USB_DEVICE(0x04CA, 0x3008) }, |
| 86 | { USB_DEVICE(0x04CA, 0x300b) }, | 87 | { USB_DEVICE(0x04CA, 0x300b) }, |
| 87 | { USB_DEVICE(0x0930, 0x0219) }, | 88 | { USB_DEVICE(0x0930, 0x0219) }, |
| @@ -131,6 +132,7 @@ static const struct usb_device_id ath3k_blist_tbl[] = { | |||
| 131 | { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, | 132 | { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, |
| 132 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | 133 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, |
| 133 | { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, | 134 | { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, |
| 135 | { USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 }, | ||
| 134 | { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, | 136 | { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, |
| 135 | { USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 }, | 137 | { USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 }, |
| 136 | { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, | 138 | { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, |
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index f338b0c5a8de..a7dfbf9a3afb 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
| @@ -152,6 +152,7 @@ static const struct usb_device_id blacklist_table[] = { | |||
| 152 | { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, | 152 | { USB_DEVICE(0x04ca, 0x3004), .driver_info = BTUSB_ATH3012 }, |
| 153 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, | 153 | { USB_DEVICE(0x04ca, 0x3005), .driver_info = BTUSB_ATH3012 }, |
| 154 | { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, | 154 | { USB_DEVICE(0x04ca, 0x3006), .driver_info = BTUSB_ATH3012 }, |
| 155 | { USB_DEVICE(0x04ca, 0x3007), .driver_info = BTUSB_ATH3012 }, | ||
| 155 | { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, | 156 | { USB_DEVICE(0x04ca, 0x3008), .driver_info = BTUSB_ATH3012 }, |
| 156 | { USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 }, | 157 | { USB_DEVICE(0x04ca, 0x300b), .driver_info = BTUSB_ATH3012 }, |
| 157 | { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, | 158 | { USB_DEVICE(0x0930, 0x0219), .driver_info = BTUSB_ATH3012 }, |
| @@ -1485,10 +1486,8 @@ static int btusb_probe(struct usb_interface *intf, | |||
| 1485 | if (id->driver_info & BTUSB_BCM92035) | 1486 | if (id->driver_info & BTUSB_BCM92035) |
| 1486 | hdev->setup = btusb_setup_bcm92035; | 1487 | hdev->setup = btusb_setup_bcm92035; |
| 1487 | 1488 | ||
| 1488 | if (id->driver_info & BTUSB_INTEL) { | 1489 | if (id->driver_info & BTUSB_INTEL) |
| 1489 | usb_enable_autosuspend(data->udev); | ||
| 1490 | hdev->setup = btusb_setup_intel; | 1490 | hdev->setup = btusb_setup_intel; |
| 1491 | } | ||
| 1492 | 1491 | ||
| 1493 | /* Interface numbers are hardcoded in the specification */ | 1492 | /* Interface numbers are hardcoded in the specification */ |
| 1494 | data->isoc = usb_ifnum_to_if(data->udev, 1); | 1493 | data->isoc = usb_ifnum_to_if(data->udev, 1); |
diff --git a/drivers/net/wireless/ath/ath9k/ahb.c b/drivers/net/wireless/ath/ath9k/ahb.c index a0398fe3eb28..be3eb2a8d602 100644 --- a/drivers/net/wireless/ath/ath9k/ahb.c +++ b/drivers/net/wireless/ath/ath9k/ahb.c | |||
| @@ -86,7 +86,6 @@ static int ath_ahb_probe(struct platform_device *pdev) | |||
| 86 | int irq; | 86 | int irq; |
| 87 | int ret = 0; | 87 | int ret = 0; |
| 88 | struct ath_hw *ah; | 88 | struct ath_hw *ah; |
| 89 | struct ath_common *common; | ||
| 90 | char hw_name[64]; | 89 | char hw_name[64]; |
| 91 | 90 | ||
| 92 | if (!dev_get_platdata(&pdev->dev)) { | 91 | if (!dev_get_platdata(&pdev->dev)) { |
| @@ -146,9 +145,6 @@ static int ath_ahb_probe(struct platform_device *pdev) | |||
| 146 | wiphy_info(hw->wiphy, "%s mem=0x%lx, irq=%d\n", | 145 | wiphy_info(hw->wiphy, "%s mem=0x%lx, irq=%d\n", |
| 147 | hw_name, (unsigned long)mem, irq); | 146 | hw_name, (unsigned long)mem, irq); |
| 148 | 147 | ||
| 149 | common = ath9k_hw_common(sc->sc_ah); | ||
| 150 | /* Will be cleared in ath9k_start() */ | ||
| 151 | set_bit(ATH_OP_INVALID, &common->op_flags); | ||
| 152 | return 0; | 148 | return 0; |
| 153 | 149 | ||
| 154 | err_irq: | 150 | err_irq: |
diff --git a/drivers/net/wireless/ath/ath9k/ani.c b/drivers/net/wireless/ath/ath9k/ani.c index 6d47783f2e5b..ba502a2d199b 100644 --- a/drivers/net/wireless/ath/ath9k/ani.c +++ b/drivers/net/wireless/ath/ath9k/ani.c | |||
| @@ -155,6 +155,9 @@ static void ath9k_hw_set_ofdm_nil(struct ath_hw *ah, u8 immunityLevel, | |||
| 155 | ATH9K_ANI_RSSI_THR_LOW, | 155 | ATH9K_ANI_RSSI_THR_LOW, |
| 156 | ATH9K_ANI_RSSI_THR_HIGH); | 156 | ATH9K_ANI_RSSI_THR_HIGH); |
| 157 | 157 | ||
| 158 | if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_OFDM_DEF_LEVEL) | ||
| 159 | immunityLevel = ATH9K_ANI_OFDM_DEF_LEVEL; | ||
| 160 | |||
| 158 | if (!scan) | 161 | if (!scan) |
| 159 | aniState->ofdmNoiseImmunityLevel = immunityLevel; | 162 | aniState->ofdmNoiseImmunityLevel = immunityLevel; |
| 160 | 163 | ||
| @@ -235,6 +238,9 @@ static void ath9k_hw_set_cck_nil(struct ath_hw *ah, u_int8_t immunityLevel, | |||
| 235 | BEACON_RSSI(ah), ATH9K_ANI_RSSI_THR_LOW, | 238 | BEACON_RSSI(ah), ATH9K_ANI_RSSI_THR_LOW, |
| 236 | ATH9K_ANI_RSSI_THR_HIGH); | 239 | ATH9K_ANI_RSSI_THR_HIGH); |
| 237 | 240 | ||
| 241 | if (AR_SREV_9100(ah) && immunityLevel < ATH9K_ANI_CCK_DEF_LEVEL) | ||
| 242 | immunityLevel = ATH9K_ANI_CCK_DEF_LEVEL; | ||
| 243 | |||
| 238 | if (ah->opmode == NL80211_IFTYPE_STATION && | 244 | if (ah->opmode == NL80211_IFTYPE_STATION && |
| 239 | BEACON_RSSI(ah) <= ATH9K_ANI_RSSI_THR_LOW && | 245 | BEACON_RSSI(ah) <= ATH9K_ANI_RSSI_THR_LOW && |
| 240 | immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI) | 246 | immunityLevel > ATH9K_ANI_CCK_MAX_LEVEL_LOW_RSSI) |
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index 44d74495c4de..3ba03dde4215 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h | |||
| @@ -251,7 +251,6 @@ struct ath_atx_tid { | |||
| 251 | 251 | ||
| 252 | s8 bar_index; | 252 | s8 bar_index; |
| 253 | bool sched; | 253 | bool sched; |
| 254 | bool paused; | ||
| 255 | bool active; | 254 | bool active; |
| 256 | }; | 255 | }; |
| 257 | 256 | ||
diff --git a/drivers/net/wireless/ath/ath9k/debug_sta.c b/drivers/net/wireless/ath/ath9k/debug_sta.c index d76e6e0120d2..ffca918ff16a 100644 --- a/drivers/net/wireless/ath/ath9k/debug_sta.c +++ b/drivers/net/wireless/ath/ath9k/debug_sta.c | |||
| @@ -72,7 +72,7 @@ static ssize_t read_file_node_aggr(struct file *file, char __user *user_buf, | |||
| 72 | ath_txq_lock(sc, txq); | 72 | ath_txq_lock(sc, txq); |
| 73 | if (tid->active) { | 73 | if (tid->active) { |
| 74 | len += scnprintf(buf + len, size - len, | 74 | len += scnprintf(buf + len, size - len, |
| 75 | "%3d%11d%10d%10d%10d%10d%9d%6d%8d\n", | 75 | "%3d%11d%10d%10d%10d%10d%9d%6d\n", |
| 76 | tid->tidno, | 76 | tid->tidno, |
| 77 | tid->seq_start, | 77 | tid->seq_start, |
| 78 | tid->seq_next, | 78 | tid->seq_next, |
| @@ -80,8 +80,7 @@ static ssize_t read_file_node_aggr(struct file *file, char __user *user_buf, | |||
| 80 | tid->baw_head, | 80 | tid->baw_head, |
| 81 | tid->baw_tail, | 81 | tid->baw_tail, |
| 82 | tid->bar_index, | 82 | tid->bar_index, |
| 83 | tid->sched, | 83 | tid->sched); |
| 84 | tid->paused); | ||
| 85 | } | 84 | } |
| 86 | ath_txq_unlock(sc, txq); | 85 | ath_txq_unlock(sc, txq); |
| 87 | } | 86 | } |
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c index cbbb02a6b13b..36ae6490e554 100644 --- a/drivers/net/wireless/ath/ath9k/init.c +++ b/drivers/net/wireless/ath/ath9k/init.c | |||
| @@ -783,6 +783,9 @@ int ath9k_init_device(u16 devid, struct ath_softc *sc, | |||
| 783 | common = ath9k_hw_common(ah); | 783 | common = ath9k_hw_common(ah); |
| 784 | ath9k_set_hw_capab(sc, hw); | 784 | ath9k_set_hw_capab(sc, hw); |
| 785 | 785 | ||
| 786 | /* Will be cleared in ath9k_start() */ | ||
| 787 | set_bit(ATH_OP_INVALID, &common->op_flags); | ||
| 788 | |||
| 786 | /* Initialize regulatory */ | 789 | /* Initialize regulatory */ |
| 787 | error = ath_regd_init(&common->regulatory, sc->hw->wiphy, | 790 | error = ath_regd_init(&common->regulatory, sc->hw->wiphy, |
| 788 | ath9k_reg_notifier); | 791 | ath9k_reg_notifier); |
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c index 25304adece57..914dbc6b1720 100644 --- a/drivers/net/wireless/ath/ath9k/pci.c +++ b/drivers/net/wireless/ath/ath9k/pci.c | |||
| @@ -784,7 +784,6 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 784 | { | 784 | { |
| 785 | struct ath_softc *sc; | 785 | struct ath_softc *sc; |
| 786 | struct ieee80211_hw *hw; | 786 | struct ieee80211_hw *hw; |
| 787 | struct ath_common *common; | ||
| 788 | u8 csz; | 787 | u8 csz; |
| 789 | u32 val; | 788 | u32 val; |
| 790 | int ret = 0; | 789 | int ret = 0; |
| @@ -877,10 +876,6 @@ static int ath_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) | |||
| 877 | wiphy_info(hw->wiphy, "%s mem=0x%lx, irq=%d\n", | 876 | wiphy_info(hw->wiphy, "%s mem=0x%lx, irq=%d\n", |
| 878 | hw_name, (unsigned long)sc->mem, pdev->irq); | 877 | hw_name, (unsigned long)sc->mem, pdev->irq); |
| 879 | 878 | ||
| 880 | /* Will be cleared in ath9k_start() */ | ||
| 881 | common = ath9k_hw_common(sc->sc_ah); | ||
| 882 | set_bit(ATH_OP_INVALID, &common->op_flags); | ||
| 883 | |||
| 884 | return 0; | 879 | return 0; |
| 885 | 880 | ||
| 886 | err_init: | 881 | err_init: |
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 6c9accdb52e4..19df969ec909 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c | |||
| @@ -975,6 +975,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) | |||
| 975 | u64 tsf = 0; | 975 | u64 tsf = 0; |
| 976 | unsigned long flags; | 976 | unsigned long flags; |
| 977 | dma_addr_t new_buf_addr; | 977 | dma_addr_t new_buf_addr; |
| 978 | unsigned int budget = 512; | ||
| 978 | 979 | ||
| 979 | if (edma) | 980 | if (edma) |
| 980 | dma_type = DMA_BIDIRECTIONAL; | 981 | dma_type = DMA_BIDIRECTIONAL; |
| @@ -1113,15 +1114,17 @@ requeue_drop_frag: | |||
| 1113 | } | 1114 | } |
| 1114 | requeue: | 1115 | requeue: |
| 1115 | list_add_tail(&bf->list, &sc->rx.rxbuf); | 1116 | list_add_tail(&bf->list, &sc->rx.rxbuf); |
| 1116 | if (flush) | ||
| 1117 | continue; | ||
| 1118 | 1117 | ||
| 1119 | if (edma) { | 1118 | if (edma) { |
| 1120 | ath_rx_edma_buf_link(sc, qtype); | 1119 | ath_rx_edma_buf_link(sc, qtype); |
| 1121 | } else { | 1120 | } else { |
| 1122 | ath_rx_buf_relink(sc, bf); | 1121 | ath_rx_buf_relink(sc, bf); |
| 1123 | ath9k_hw_rxena(ah); | 1122 | if (!flush) |
| 1123 | ath9k_hw_rxena(ah); | ||
| 1124 | } | 1124 | } |
| 1125 | |||
| 1126 | if (!budget--) | ||
| 1127 | break; | ||
| 1125 | } while (1); | 1128 | } while (1); |
| 1126 | 1129 | ||
| 1127 | if (!(ah->imask & ATH9K_INT_RXEOL)) { | 1130 | if (!(ah->imask & ATH9K_INT_RXEOL)) { |
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 87cbec47fb48..66acb2cbd9df 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
| @@ -107,9 +107,6 @@ static void ath_tx_queue_tid(struct ath_txq *txq, struct ath_atx_tid *tid) | |||
| 107 | { | 107 | { |
| 108 | struct ath_atx_ac *ac = tid->ac; | 108 | struct ath_atx_ac *ac = tid->ac; |
| 109 | 109 | ||
| 110 | if (tid->paused) | ||
| 111 | return; | ||
| 112 | |||
| 113 | if (tid->sched) | 110 | if (tid->sched) |
| 114 | return; | 111 | return; |
| 115 | 112 | ||
| @@ -1407,7 +1404,6 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, | |||
| 1407 | ath_tx_tid_change_state(sc, txtid); | 1404 | ath_tx_tid_change_state(sc, txtid); |
| 1408 | 1405 | ||
| 1409 | txtid->active = true; | 1406 | txtid->active = true; |
| 1410 | txtid->paused = true; | ||
| 1411 | *ssn = txtid->seq_start = txtid->seq_next; | 1407 | *ssn = txtid->seq_start = txtid->seq_next; |
| 1412 | txtid->bar_index = -1; | 1408 | txtid->bar_index = -1; |
| 1413 | 1409 | ||
| @@ -1427,7 +1423,6 @@ void ath_tx_aggr_stop(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid) | |||
| 1427 | 1423 | ||
| 1428 | ath_txq_lock(sc, txq); | 1424 | ath_txq_lock(sc, txq); |
| 1429 | txtid->active = false; | 1425 | txtid->active = false; |
| 1430 | txtid->paused = false; | ||
| 1431 | ath_tx_flush_tid(sc, txtid); | 1426 | ath_tx_flush_tid(sc, txtid); |
| 1432 | ath_tx_tid_change_state(sc, txtid); | 1427 | ath_tx_tid_change_state(sc, txtid); |
| 1433 | ath_txq_unlock_complete(sc, txq); | 1428 | ath_txq_unlock_complete(sc, txq); |
| @@ -1487,7 +1482,7 @@ void ath_tx_aggr_wakeup(struct ath_softc *sc, struct ath_node *an) | |||
| 1487 | ath_txq_lock(sc, txq); | 1482 | ath_txq_lock(sc, txq); |
| 1488 | ac->clear_ps_filter = true; | 1483 | ac->clear_ps_filter = true; |
| 1489 | 1484 | ||
| 1490 | if (!tid->paused && ath_tid_has_buffered(tid)) { | 1485 | if (ath_tid_has_buffered(tid)) { |
| 1491 | ath_tx_queue_tid(txq, tid); | 1486 | ath_tx_queue_tid(txq, tid); |
| 1492 | ath_txq_schedule(sc, txq); | 1487 | ath_txq_schedule(sc, txq); |
| 1493 | } | 1488 | } |
| @@ -1510,7 +1505,6 @@ void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, | |||
| 1510 | ath_txq_lock(sc, txq); | 1505 | ath_txq_lock(sc, txq); |
| 1511 | 1506 | ||
| 1512 | tid->baw_size = IEEE80211_MIN_AMPDU_BUF << sta->ht_cap.ampdu_factor; | 1507 | tid->baw_size = IEEE80211_MIN_AMPDU_BUF << sta->ht_cap.ampdu_factor; |
| 1513 | tid->paused = false; | ||
| 1514 | 1508 | ||
| 1515 | if (ath_tid_has_buffered(tid)) { | 1509 | if (ath_tid_has_buffered(tid)) { |
| 1516 | ath_tx_queue_tid(txq, tid); | 1510 | ath_tx_queue_tid(txq, tid); |
| @@ -1544,8 +1538,6 @@ void ath9k_release_buffered_frames(struct ieee80211_hw *hw, | |||
| 1544 | continue; | 1538 | continue; |
| 1545 | 1539 | ||
| 1546 | tid = ATH_AN_2_TID(an, i); | 1540 | tid = ATH_AN_2_TID(an, i); |
| 1547 | if (tid->paused) | ||
| 1548 | continue; | ||
| 1549 | 1541 | ||
| 1550 | ath_txq_lock(sc, tid->ac->txq); | 1542 | ath_txq_lock(sc, tid->ac->txq); |
| 1551 | while (nframes > 0) { | 1543 | while (nframes > 0) { |
| @@ -1844,9 +1836,6 @@ void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq) | |||
| 1844 | list_del(&tid->list); | 1836 | list_del(&tid->list); |
| 1845 | tid->sched = false; | 1837 | tid->sched = false; |
| 1846 | 1838 | ||
| 1847 | if (tid->paused) | ||
| 1848 | continue; | ||
| 1849 | |||
| 1850 | if (ath_tx_sched_aggr(sc, txq, tid, &stop)) | 1839 | if (ath_tx_sched_aggr(sc, txq, tid, &stop)) |
| 1851 | sent = true; | 1840 | sent = true; |
| 1852 | 1841 | ||
| @@ -2698,7 +2687,6 @@ void ath_tx_node_init(struct ath_softc *sc, struct ath_node *an) | |||
| 2698 | tid->baw_size = WME_MAX_BA; | 2687 | tid->baw_size = WME_MAX_BA; |
| 2699 | tid->baw_head = tid->baw_tail = 0; | 2688 | tid->baw_head = tid->baw_tail = 0; |
| 2700 | tid->sched = false; | 2689 | tid->sched = false; |
| 2701 | tid->paused = false; | ||
| 2702 | tid->active = false; | 2690 | tid->active = false; |
| 2703 | __skb_queue_head_init(&tid->buf_q); | 2691 | __skb_queue_head_init(&tid->buf_q); |
| 2704 | __skb_queue_head_init(&tid->retry_q); | 2692 | __skb_queue_head_init(&tid->retry_q); |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/brcm80211/brcmfmac/chip.c index df130ef53d1c..c7c9f15c0fe0 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/chip.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/chip.c | |||
| @@ -303,10 +303,10 @@ static void brcmf_chip_ai_coredisable(struct brcmf_core_priv *core, | |||
| 303 | 303 | ||
| 304 | ci = core->chip; | 304 | ci = core->chip; |
| 305 | 305 | ||
| 306 | /* if core is already in reset, just return */ | 306 | /* if core is already in reset, skip reset */ |
| 307 | regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL); | 307 | regdata = ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL); |
| 308 | if ((regdata & BCMA_RESET_CTL_RESET) != 0) | 308 | if ((regdata & BCMA_RESET_CTL_RESET) != 0) |
| 309 | return; | 309 | goto in_reset_configure; |
| 310 | 310 | ||
| 311 | /* configure reset */ | 311 | /* configure reset */ |
| 312 | ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, | 312 | ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, |
| @@ -322,6 +322,7 @@ static void brcmf_chip_ai_coredisable(struct brcmf_core_priv *core, | |||
| 322 | SPINWAIT(ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) != | 322 | SPINWAIT(ci->ops->read32(ci->ctx, core->wrapbase + BCMA_RESET_CTL) != |
| 323 | BCMA_RESET_CTL_RESET, 300); | 323 | BCMA_RESET_CTL_RESET, 300); |
| 324 | 324 | ||
| 325 | in_reset_configure: | ||
| 325 | /* in-reset configure */ | 326 | /* in-reset configure */ |
| 326 | ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, | 327 | ci->ops->write32(ci->ctx, core->wrapbase + BCMA_IOCTL, |
| 327 | reset | BCMA_IOCTL_FGC | BCMA_IOCTL_CLK); | 328 | reset | BCMA_IOCTL_FGC | BCMA_IOCTL_CLK); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index ddeb5a709aa3..a87ee9b6585a 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
| @@ -621,20 +621,18 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw, | |||
| 621 | bss_conf->bssid); | 621 | bss_conf->bssid); |
| 622 | 622 | ||
| 623 | /* | 623 | /* |
| 624 | * Update the beacon. This is only required on USB devices. PCI | ||
| 625 | * devices fetch beacons periodically. | ||
| 626 | */ | ||
| 627 | if (changes & BSS_CHANGED_BEACON && rt2x00_is_usb(rt2x00dev)) | ||
| 628 | rt2x00queue_update_beacon(rt2x00dev, vif); | ||
| 629 | |||
| 630 | /* | ||
| 631 | * Start/stop beaconing. | 624 | * Start/stop beaconing. |
| 632 | */ | 625 | */ |
| 633 | if (changes & BSS_CHANGED_BEACON_ENABLED) { | 626 | if (changes & BSS_CHANGED_BEACON_ENABLED) { |
| 634 | if (!bss_conf->enable_beacon && intf->enable_beacon) { | 627 | if (!bss_conf->enable_beacon && intf->enable_beacon) { |
| 635 | rt2x00queue_clear_beacon(rt2x00dev, vif); | ||
| 636 | rt2x00dev->intf_beaconing--; | 628 | rt2x00dev->intf_beaconing--; |
| 637 | intf->enable_beacon = false; | 629 | intf->enable_beacon = false; |
| 630 | /* | ||
| 631 | * Clear beacon in the H/W for this vif. This is needed | ||
| 632 | * to disable beaconing on this particular interface | ||
| 633 | * and keep it running on other interfaces. | ||
| 634 | */ | ||
| 635 | rt2x00queue_clear_beacon(rt2x00dev, vif); | ||
| 638 | 636 | ||
| 639 | if (rt2x00dev->intf_beaconing == 0) { | 637 | if (rt2x00dev->intf_beaconing == 0) { |
| 640 | /* | 638 | /* |
| @@ -645,11 +643,15 @@ void rt2x00mac_bss_info_changed(struct ieee80211_hw *hw, | |||
| 645 | rt2x00queue_stop_queue(rt2x00dev->bcn); | 643 | rt2x00queue_stop_queue(rt2x00dev->bcn); |
| 646 | mutex_unlock(&intf->beacon_skb_mutex); | 644 | mutex_unlock(&intf->beacon_skb_mutex); |
| 647 | } | 645 | } |
| 648 | |||
| 649 | |||
| 650 | } else if (bss_conf->enable_beacon && !intf->enable_beacon) { | 646 | } else if (bss_conf->enable_beacon && !intf->enable_beacon) { |
| 651 | rt2x00dev->intf_beaconing++; | 647 | rt2x00dev->intf_beaconing++; |
| 652 | intf->enable_beacon = true; | 648 | intf->enable_beacon = true; |
| 649 | /* | ||
| 650 | * Upload beacon to the H/W. This is only required on | ||
| 651 | * USB devices. PCI devices fetch beacons periodically. | ||
| 652 | */ | ||
| 653 | if (rt2x00_is_usb(rt2x00dev)) | ||
| 654 | rt2x00queue_update_beacon(rt2x00dev, vif); | ||
| 653 | 655 | ||
| 654 | if (rt2x00dev->intf_beaconing == 1) { | 656 | if (rt2x00dev->intf_beaconing == 1) { |
| 655 | /* | 657 | /* |
diff --git a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c index 06ef47cd6203..5b4c225396f2 100644 --- a/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8188ee/trx.c | |||
| @@ -293,7 +293,7 @@ static void _rtl88ee_translate_rx_signal_stuff(struct ieee80211_hw *hw, | |||
| 293 | u8 *psaddr; | 293 | u8 *psaddr; |
| 294 | __le16 fc; | 294 | __le16 fc; |
| 295 | u16 type, ufc; | 295 | u16 type, ufc; |
| 296 | bool match_bssid, packet_toself, packet_beacon, addr; | 296 | bool match_bssid, packet_toself, packet_beacon = false, addr; |
| 297 | 297 | ||
| 298 | tmp_buf = skb->data + pstatus->rx_drvinfo_size + pstatus->rx_bufshift; | 298 | tmp_buf = skb->data + pstatus->rx_drvinfo_size + pstatus->rx_bufshift; |
| 299 | 299 | ||
diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c index 68b5c7e92cfb..07cb06da6729 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | |||
| @@ -1001,7 +1001,7 @@ int rtl92cu_hw_init(struct ieee80211_hw *hw) | |||
| 1001 | err = _rtl92cu_init_mac(hw); | 1001 | err = _rtl92cu_init_mac(hw); |
| 1002 | if (err) { | 1002 | if (err) { |
| 1003 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "init mac failed!\n"); | 1003 | RT_TRACE(rtlpriv, COMP_ERR, DBG_EMERG, "init mac failed!\n"); |
| 1004 | return err; | 1004 | goto exit; |
| 1005 | } | 1005 | } |
| 1006 | err = rtl92c_download_fw(hw); | 1006 | err = rtl92c_download_fw(hw); |
| 1007 | if (err) { | 1007 | if (err) { |
diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c index 36b48be8329c..2b3c78baa9f8 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c | |||
| @@ -49,6 +49,12 @@ static u8 _rtl92se_map_hwqueue_to_fwqueue(struct sk_buff *skb, u8 skb_queue) | |||
| 49 | if (ieee80211_is_nullfunc(fc)) | 49 | if (ieee80211_is_nullfunc(fc)) |
| 50 | return QSLT_HIGH; | 50 | return QSLT_HIGH; |
| 51 | 51 | ||
| 52 | /* Kernel commit 1bf4bbb4024dcdab changed EAPOL packets to use | ||
| 53 | * queue V0 at priority 7; however, the RTL8192SE appears to have | ||
| 54 | * that queue at priority 6 | ||
| 55 | */ | ||
| 56 | if (skb->priority == 7) | ||
| 57 | return QSLT_VO; | ||
| 52 | return skb->priority; | 58 | return skb->priority; |
| 53 | } | 59 | } |
| 54 | 60 | ||
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index d958e2dca52f..521fd4f3985e 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c | |||
| @@ -819,14 +819,17 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type) | |||
| 819 | if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->flags)) { | 819 | if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->flags)) { |
| 820 | struct hci_cp_auth_requested cp; | 820 | struct hci_cp_auth_requested cp; |
| 821 | 821 | ||
| 822 | /* encrypt must be pending if auth is also pending */ | ||
| 823 | set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags); | ||
| 824 | |||
| 825 | cp.handle = cpu_to_le16(conn->handle); | 822 | cp.handle = cpu_to_le16(conn->handle); |
| 826 | hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED, | 823 | hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED, |
| 827 | sizeof(cp), &cp); | 824 | sizeof(cp), &cp); |
| 825 | |||
| 826 | /* If we're already encrypted set the REAUTH_PEND flag, | ||
| 827 | * otherwise set the ENCRYPT_PEND. | ||
| 828 | */ | ||
| 828 | if (conn->key_type != 0xff) | 829 | if (conn->key_type != 0xff) |
| 829 | set_bit(HCI_CONN_REAUTH_PEND, &conn->flags); | 830 | set_bit(HCI_CONN_REAUTH_PEND, &conn->flags); |
| 831 | else | ||
| 832 | set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags); | ||
| 830 | } | 833 | } |
| 831 | 834 | ||
| 832 | return 0; | 835 | return 0; |
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index 49774912cb01..15010a230b6d 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
| @@ -3330,6 +3330,12 @@ static void hci_key_refresh_complete_evt(struct hci_dev *hdev, | |||
| 3330 | if (!conn) | 3330 | if (!conn) |
| 3331 | goto unlock; | 3331 | goto unlock; |
| 3332 | 3332 | ||
| 3333 | /* For BR/EDR the necessary steps are taken through the | ||
| 3334 | * auth_complete event. | ||
| 3335 | */ | ||
| 3336 | if (conn->type != LE_LINK) | ||
| 3337 | goto unlock; | ||
| 3338 | |||
| 3333 | if (!ev->status) | 3339 | if (!ev->status) |
| 3334 | conn->sec_level = conn->pending_sec_level; | 3340 | conn->sec_level = conn->pending_sec_level; |
| 3335 | 3341 | ||
