Loading drivers/bcma/driver_pci.c +26 −23 Original line number Diff line number Diff line Loading @@ -210,25 +210,6 @@ static void bcma_core_pci_config_fixup(struct bcma_drv_pci *pc) } } static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up) { u16 data; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } /************************************************** * Init. **************************************************/ Loading @@ -255,6 +236,32 @@ void bcma_core_pci_init(struct bcma_drv_pci *pc) bcma_core_pci_clientmode_init(pc); } void bcma_core_pci_power_save(struct bcma_bus *bus, bool up) { struct bcma_drv_pci *pc; u16 data; if (bus->hosttype != BCMA_HOSTTYPE_PCI) return; pc = &bus->drv_pci[0]; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } EXPORT_SYMBOL_GPL(bcma_core_pci_power_save); int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core, bool enable) { Loading Loading @@ -310,8 +317,6 @@ void bcma_core_pci_up(struct bcma_bus *bus) pc = &bus->drv_pci[0]; bcma_core_pci_power_save(pc, true); bcma_core_pci_extend_L1timer(pc, true); } EXPORT_SYMBOL_GPL(bcma_core_pci_up); Loading @@ -326,7 +331,5 @@ void bcma_core_pci_down(struct bcma_bus *bus) pc = &bus->drv_pci[0]; bcma_core_pci_extend_L1timer(pc, false); bcma_core_pci_power_save(pc, false); } EXPORT_SYMBOL_GPL(bcma_core_pci_down); drivers/net/wireless/ath/ath5k/base.c +3 −3 Original line number Diff line number Diff line Loading @@ -1663,15 +1663,15 @@ ath5k_tx_frame_completed(struct ath5k_hw *ah, struct sk_buff *skb, ah->stats.tx_bytes_count += skb->len; info = IEEE80211_SKB_CB(skb); size = min_t(int, sizeof(info->status.rates), sizeof(bf->rates)); memcpy(info->status.rates, bf->rates, size); tries[0] = info->status.rates[0].count; tries[1] = info->status.rates[1].count; tries[2] = info->status.rates[2].count; ieee80211_tx_info_clear_status(info); size = min_t(int, sizeof(info->status.rates), sizeof(bf->rates)); memcpy(info->status.rates, bf->rates, size); for (i = 0; i < ts->ts_final_idx; i++) { struct ieee80211_tx_rate *r = &info->status.rates[i]; Loading drivers/net/wireless/ath/ath9k/main.c +11 −12 Original line number Diff line number Diff line Loading @@ -208,6 +208,7 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start) struct ath_hw *ah = sc->sc_ah; struct ath_common *common = ath9k_hw_common(ah); unsigned long flags; int i; if (ath_startrecv(sc) != 0) { ath_err(common, "Unable to restart recv logic\n"); Loading Loading @@ -235,6 +236,15 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start) } work: ath_restart_work(sc); for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { if (!ATH_TXQ_SETUP(sc, i)) continue; spin_lock_bh(&sc->tx.txq[i].axq_lock); ath_txq_schedule(sc, &sc->tx.txq[i]); spin_unlock_bh(&sc->tx.txq[i].axq_lock); } } ieee80211_wake_queues(sc->hw); Loading Loading @@ -619,21 +629,10 @@ irqreturn_t ath_isr(int irq, void *dev) static int ath_reset(struct ath_softc *sc) { int i, r; int r; ath9k_ps_wakeup(sc); r = ath_reset_internal(sc, NULL); for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { if (!ATH_TXQ_SETUP(sc, i)) continue; spin_lock_bh(&sc->tx.txq[i].axq_lock); ath_txq_schedule(sc, &sc->tx.txq[i]); spin_unlock_bh(&sc->tx.txq[i].axq_lock); } ath9k_ps_restore(sc); return r; Loading drivers/net/wireless/ath/ath9k/recv.c +0 −7 Original line number Diff line number Diff line Loading @@ -1342,13 +1342,6 @@ static void ath9k_antenna_check(struct ath_softc *sc, if (!(ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB)) return; /* * All MPDUs in an aggregate will use the same LNA * as the first MPDU. */ if (rs->rs_isaggr && !rs->rs_firstaggr) return; /* * Change the default rx antenna if rx diversity * chooses the other antenna 3 times in a row. Loading drivers/net/wireless/ath/ath9k/xmit.c +20 −6 Original line number Diff line number Diff line Loading @@ -399,6 +399,7 @@ static struct ath_buf* ath_clone_txbuf(struct ath_softc *sc, struct ath_buf *bf) tbf->bf_buf_addr = bf->bf_buf_addr; memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len); tbf->bf_state = bf->bf_state; tbf->bf_state.stale = false; return tbf; } Loading Loading @@ -1390,11 +1391,15 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid, u16 *ssn) { struct ath_atx_tid *txtid; struct ath_txq *txq; struct ath_node *an; u8 density; an = (struct ath_node *)sta->drv_priv; txtid = ATH_AN_2_TID(an, tid); txq = txtid->ac->txq; ath_txq_lock(sc, txq); /* update ampdu factor/density, they may have changed. This may happen * in HT IBSS when a beacon with HT-info is received after the station Loading @@ -1418,6 +1423,8 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf)); txtid->baw_head = txtid->baw_tail = 0; ath_txq_unlock_complete(sc, txq); return 0; } Loading Loading @@ -1556,8 +1563,10 @@ void ath9k_release_buffered_frames(struct ieee80211_hw *hw, __skb_unlink(bf->bf_mpdu, tid_q); list_add_tail(&bf->list, &bf_q); ath_set_rates(tid->an->vif, tid->an->sta, bf); if (bf_isampdu(bf)) { ath_tx_addto_baw(sc, tid, bf); bf->bf_state.bf_type &= ~BUF_AGGR; } if (bf_tail) bf_tail->bf_next = bf; Loading Loading @@ -1944,7 +1953,9 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq, if (bf_is_ampdu_not_probing(bf)) txq->axq_ampdu_depth++; bf = bf->bf_lastbf->bf_next; bf_last = bf->bf_lastbf; bf = bf_last->bf_next; bf_last->bf_next = NULL; } } } Loading @@ -1952,15 +1963,18 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq, static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, struct sk_buff *skb) { struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); struct ath_frame_info *fi = get_frame_info(skb); struct list_head bf_head; struct ath_buf *bf; bf = fi->bf; struct ath_buf *bf = fi->bf; INIT_LIST_HEAD(&bf_head); list_add_tail(&bf->list, &bf_head); bf->bf_state.bf_type = 0; if (tid && (tx_info->flags & IEEE80211_TX_CTL_AMPDU)) { bf->bf_state.bf_type = BUF_AMPDU; ath_tx_addto_baw(sc, tid, bf); } bf->bf_next = NULL; bf->bf_lastbf = bf; Loading Loading
drivers/bcma/driver_pci.c +26 −23 Original line number Diff line number Diff line Loading @@ -210,25 +210,6 @@ static void bcma_core_pci_config_fixup(struct bcma_drv_pci *pc) } } static void bcma_core_pci_power_save(struct bcma_drv_pci *pc, bool up) { u16 data; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } /************************************************** * Init. **************************************************/ Loading @@ -255,6 +236,32 @@ void bcma_core_pci_init(struct bcma_drv_pci *pc) bcma_core_pci_clientmode_init(pc); } void bcma_core_pci_power_save(struct bcma_bus *bus, bool up) { struct bcma_drv_pci *pc; u16 data; if (bus->hosttype != BCMA_HOSTTYPE_PCI) return; pc = &bus->drv_pci[0]; if (pc->core->id.rev >= 15 && pc->core->id.rev <= 20) { data = up ? 0x74 : 0x7C; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7F64); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } else if (pc->core->id.rev >= 21 && pc->core->id.rev <= 22) { data = up ? 0x75 : 0x7D; bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT1, 0x7E65); bcma_pcie_mdio_writeread(pc, BCMA_CORE_PCI_MDIO_BLK1, BCMA_CORE_PCI_MDIO_BLK1_MGMT3, data); } } EXPORT_SYMBOL_GPL(bcma_core_pci_power_save); int bcma_core_pci_irq_ctl(struct bcma_drv_pci *pc, struct bcma_device *core, bool enable) { Loading Loading @@ -310,8 +317,6 @@ void bcma_core_pci_up(struct bcma_bus *bus) pc = &bus->drv_pci[0]; bcma_core_pci_power_save(pc, true); bcma_core_pci_extend_L1timer(pc, true); } EXPORT_SYMBOL_GPL(bcma_core_pci_up); Loading @@ -326,7 +331,5 @@ void bcma_core_pci_down(struct bcma_bus *bus) pc = &bus->drv_pci[0]; bcma_core_pci_extend_L1timer(pc, false); bcma_core_pci_power_save(pc, false); } EXPORT_SYMBOL_GPL(bcma_core_pci_down);
drivers/net/wireless/ath/ath5k/base.c +3 −3 Original line number Diff line number Diff line Loading @@ -1663,15 +1663,15 @@ ath5k_tx_frame_completed(struct ath5k_hw *ah, struct sk_buff *skb, ah->stats.tx_bytes_count += skb->len; info = IEEE80211_SKB_CB(skb); size = min_t(int, sizeof(info->status.rates), sizeof(bf->rates)); memcpy(info->status.rates, bf->rates, size); tries[0] = info->status.rates[0].count; tries[1] = info->status.rates[1].count; tries[2] = info->status.rates[2].count; ieee80211_tx_info_clear_status(info); size = min_t(int, sizeof(info->status.rates), sizeof(bf->rates)); memcpy(info->status.rates, bf->rates, size); for (i = 0; i < ts->ts_final_idx; i++) { struct ieee80211_tx_rate *r = &info->status.rates[i]; Loading
drivers/net/wireless/ath/ath9k/main.c +11 −12 Original line number Diff line number Diff line Loading @@ -208,6 +208,7 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start) struct ath_hw *ah = sc->sc_ah; struct ath_common *common = ath9k_hw_common(ah); unsigned long flags; int i; if (ath_startrecv(sc) != 0) { ath_err(common, "Unable to restart recv logic\n"); Loading Loading @@ -235,6 +236,15 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start) } work: ath_restart_work(sc); for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { if (!ATH_TXQ_SETUP(sc, i)) continue; spin_lock_bh(&sc->tx.txq[i].axq_lock); ath_txq_schedule(sc, &sc->tx.txq[i]); spin_unlock_bh(&sc->tx.txq[i].axq_lock); } } ieee80211_wake_queues(sc->hw); Loading Loading @@ -619,21 +629,10 @@ irqreturn_t ath_isr(int irq, void *dev) static int ath_reset(struct ath_softc *sc) { int i, r; int r; ath9k_ps_wakeup(sc); r = ath_reset_internal(sc, NULL); for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++) { if (!ATH_TXQ_SETUP(sc, i)) continue; spin_lock_bh(&sc->tx.txq[i].axq_lock); ath_txq_schedule(sc, &sc->tx.txq[i]); spin_unlock_bh(&sc->tx.txq[i].axq_lock); } ath9k_ps_restore(sc); return r; Loading
drivers/net/wireless/ath/ath9k/recv.c +0 −7 Original line number Diff line number Diff line Loading @@ -1342,13 +1342,6 @@ static void ath9k_antenna_check(struct ath_softc *sc, if (!(ah->caps.hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB)) return; /* * All MPDUs in an aggregate will use the same LNA * as the first MPDU. */ if (rs->rs_isaggr && !rs->rs_firstaggr) return; /* * Change the default rx antenna if rx diversity * chooses the other antenna 3 times in a row. Loading
drivers/net/wireless/ath/ath9k/xmit.c +20 −6 Original line number Diff line number Diff line Loading @@ -399,6 +399,7 @@ static struct ath_buf* ath_clone_txbuf(struct ath_softc *sc, struct ath_buf *bf) tbf->bf_buf_addr = bf->bf_buf_addr; memcpy(tbf->bf_desc, bf->bf_desc, sc->sc_ah->caps.tx_desc_len); tbf->bf_state = bf->bf_state; tbf->bf_state.stale = false; return tbf; } Loading Loading @@ -1390,11 +1391,15 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid, u16 *ssn) { struct ath_atx_tid *txtid; struct ath_txq *txq; struct ath_node *an; u8 density; an = (struct ath_node *)sta->drv_priv; txtid = ATH_AN_2_TID(an, tid); txq = txtid->ac->txq; ath_txq_lock(sc, txq); /* update ampdu factor/density, they may have changed. This may happen * in HT IBSS when a beacon with HT-info is received after the station Loading @@ -1418,6 +1423,8 @@ int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf)); txtid->baw_head = txtid->baw_tail = 0; ath_txq_unlock_complete(sc, txq); return 0; } Loading Loading @@ -1556,8 +1563,10 @@ void ath9k_release_buffered_frames(struct ieee80211_hw *hw, __skb_unlink(bf->bf_mpdu, tid_q); list_add_tail(&bf->list, &bf_q); ath_set_rates(tid->an->vif, tid->an->sta, bf); if (bf_isampdu(bf)) { ath_tx_addto_baw(sc, tid, bf); bf->bf_state.bf_type &= ~BUF_AGGR; } if (bf_tail) bf_tail->bf_next = bf; Loading Loading @@ -1944,7 +1953,9 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq, if (bf_is_ampdu_not_probing(bf)) txq->axq_ampdu_depth++; bf = bf->bf_lastbf->bf_next; bf_last = bf->bf_lastbf; bf = bf_last->bf_next; bf_last->bf_next = NULL; } } } Loading @@ -1952,15 +1963,18 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq, static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, struct sk_buff *skb) { struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb); struct ath_frame_info *fi = get_frame_info(skb); struct list_head bf_head; struct ath_buf *bf; bf = fi->bf; struct ath_buf *bf = fi->bf; INIT_LIST_HEAD(&bf_head); list_add_tail(&bf->list, &bf_head); bf->bf_state.bf_type = 0; if (tid && (tx_info->flags & IEEE80211_TX_CTL_AMPDU)) { bf->bf_state.bf_type = BUF_AMPDU; ath_tx_addto_baw(sc, tid, bf); } bf->bf_next = NULL; bf->bf_lastbf = bf; Loading