diff options
Diffstat (limited to 'drivers/net/wireless/ath')
| -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/htc_drv_main.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 |
9 files changed, 22 insertions, 30 deletions
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/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index f46cd0250e48..5627917c5ff7 100644 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c | |||
| @@ -95,8 +95,10 @@ static void ath9k_htc_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif) | |||
| 95 | 95 | ||
| 96 | if ((vif->type == NL80211_IFTYPE_AP || | 96 | if ((vif->type == NL80211_IFTYPE_AP || |
| 97 | vif->type == NL80211_IFTYPE_MESH_POINT) && | 97 | vif->type == NL80211_IFTYPE_MESH_POINT) && |
| 98 | bss_conf->enable_beacon) | 98 | bss_conf->enable_beacon) { |
| 99 | priv->reconfig_beacon = true; | 99 | priv->reconfig_beacon = true; |
| 100 | priv->rearm_ani = true; | ||
| 101 | } | ||
| 100 | 102 | ||
| 101 | if (bss_conf->assoc) { | 103 | if (bss_conf->assoc) { |
| 102 | priv->rearm_ani = true; | 104 | priv->rearm_ani = true; |
| @@ -257,6 +259,7 @@ static int ath9k_htc_set_channel(struct ath9k_htc_priv *priv, | |||
| 257 | 259 | ||
| 258 | ath9k_htc_ps_wakeup(priv); | 260 | ath9k_htc_ps_wakeup(priv); |
| 259 | 261 | ||
| 262 | ath9k_htc_stop_ani(priv); | ||
| 260 | del_timer_sync(&priv->tx.cleanup_timer); | 263 | del_timer_sync(&priv->tx.cleanup_timer); |
| 261 | ath9k_htc_tx_drain(priv); | 264 | ath9k_htc_tx_drain(priv); |
| 262 | 265 | ||
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); |
