ath5k: HW code cleanup
PATCH 1/1 ath5k: HW code cleanup
* No code changes...
* Split hw.c to multiple files for better maintenance and add some documentation on each file code is going to grow soon (eeprom.c for example is going to get much stuff currently developed on ath_info) so it's better this way.
* Rename following functions to maintain naming scheme:
ah_setup_xtx_desc -> ah_setup_mrr_tx_desc
(Because xtx doesn't say much, it's actually
a multi-rate-retry tx descriptor)
ath5k_hw_put_tx/rx_buf - > ath5k_hw_set_tx/rxdp
ath5k_hw_get_tx/rx_buf -> ath5k_hw_get_tx/rxdp
(We don't put any "buf" we set descriptor pointers on hw)
ath5k_hw_tx_start -> ath5k_hw_start_tx_dma
ath5k_hw_start_rx -> ath5k_hw_start_rx_dma
ath5k_hw_stop_pcu_recv -> ath5k_hw_stop_rx_pcu
(It's easier this way to identify them, we also
have ath5k_hw_start_rx_pcu which completes the
set)
ath5k_hw_set_intr -> ath5k_hw_set_imr
(As in get_isr we set imr here, not "intr") * Move ath5k_hw_setup_rx_desc on ah->ah_setup_rx_desc so we can include support for different rx descriptors in the future
* Further cleanups so that checkpatch doesn't complain (only some > 80 col warnings for eeprom.h and reg.h as usual due to comments)
Tested on 5211 and 5213 cards and works ok.
Changes-licensed-under: ISC
--- drivers/net/wireless/ath5k/Makefile | 12 +- drivers/net/wireless/ath5k/ath5k.h | 390 +++- drivers/net/wireless/ath5k/attach.c | 315 +++ drivers/net/wireless/ath5k/base.c | 32 +- drivers/net/wireless/ath5k/caps.c | 193 ++ drivers/net/wireless/ath5k/debug.c | 4 +- drivers/net/wireless/ath5k/desc.c | 667 +++++ drivers/net/wireless/ath5k/desc.h | 332 +++ drivers/net/wireless/ath5k/dma.c | 566 +++++ drivers/net/wireless/ath5k/eeprom.c | 466 ++++ drivers/net/wireless/ath5k/eeprom.h | 215 ++ drivers/net/wireless/ath5k/gpio.c | 176 ++ drivers/net/wireless/ath5k/hw.c | 4492 --------------------------------- drivers/net/wireless/ath5k/hw.h | 616 ----- drivers/net/wireless/ath5k/initvals.c | 22 +- drivers/net/wireless/ath5k/pcu.c | 1002 ++++++++ drivers/net/wireless/ath5k/phy.c | 10 +- drivers/net/wireless/ath5k/qcu.c | 488 ++++ drivers/net/wireless/ath5k/reg.h | 102 +- drivers/net/wireless/ath5k/reset.c | 925 +++++++ 20 files changed, 5709 insertions(+), 5316 deletions(-)
drivers/net/wireless/ath5k/Makefile +10 -2
@@ -1,6 +1,14 @@ -ath5k-y += base.o -ath5k-y += hw.o +ath5k-y += caps.o ath5k-y += initvals.o +ath5k-y += eeprom.o +ath5k-y += gpio.o +ath5k-y += desc.o +ath5k-y += dma.o +ath5k-y += qcu.o +ath5k-y += pcu.o ath5k-y += phy.o +ath5k-y += reset.o +ath5k-y += attach.o +ath5k-y += base.o ath5k-$(CONFIG_ATH5K_DEBUG) += debug.o obj-$(CONFIG_ATH5K) += ath5k.o
drivers/net/wireless/ath5k/ath5k.h +315 -75
613 lines not on this page · raw message
drivers/net/wireless/ath5k/attach.c new file +315 -0
315 lines not on this page · raw message
drivers/net/wireless/ath5k/base.c +16 -16
@@ -707,7 +707,7 @@ ath5k_attach(struct pci_dev *pdev, struct ieee80211_hw *hw)* return false w/o doing anything. MAC's that do * support it will return true w/o doing anything. */ - ret = ah->ah_setup_xtx_desc (ah,NULL ,0 ,0 ,0 ,0 ,0 ,0 ); + ret = ah->ah_setup_mrr_tx_desc (ah,NULL ,0 ,0 ,0 ,0 ,0 ,0 );if (ret <0 ) goto err;if (ret >0 )
@@ -1137,7 +1137,7 @@ ath5k_rxbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf) ds = bf->desc; ds->ds_link = bf->daddr;/* link to self */ ds->ds_data = bf->skbaddr; -ath5k_hw_setup_rx_desc (ah, ds, + ah->ah_setup_rx_desc (ah, ds,skb_tailroom (skb),/* buffer size */ 0 );
@@ -1188,12 +1188,12 @@ ath5k_txbuf_setup(struct ath5k_softc *sc, struct ath5k_buf *bf)list_add_tail (&bf->list, &txq->q); sc->tx_stats[txq->qnum].len++;if (txq->link ==NULL )/* is this first packet? */ -ath5k_hw_put_tx_buf (ah, txq->qnum, bf->daddr); +ath5k_hw_set_txdp (ah, txq->qnum, bf->daddr);else /* no, so only link it */ *txq->link = bf->daddr; txq->link = &ds->ds_link; -ath5k_hw_tx_start (ah, txq->qnum); +ath5k_hw_start_tx_dma (ah, txq->qnum);mmiowb ();spin_unlock_bh (&txq->lock);
@@ -1393,7 +1393,7 @@ ath5k_beaconq_config(struct ath5k_softc *sc)"beacon queueprops tqi_aifs:%d tqi_cw_min:%d tqi_cw_max:%d\n" , qi.tqi_aifs, qi.tqi_cw_min, qi.tqi_cw_max); - ret =ath5k_hw_setup_tx_queueprops (ah, sc->bhalq, &qi); + ret =ath5k_hw_set_tx_queueprops (ah, sc->bhalq, &qi);if (ret) {ATH5K_ERR (sc,"%s: unable to update parameters for beacon " "hardware queue!\n" , __func__);
@@ -1442,14 +1442,14 @@ ath5k_txq_cleanup(struct ath5k_softc *sc)/* don't touch the hardware if marked invalid */ ath5k_hw_stop_tx_dma (ah, sc->bhalq);ATH5K_DBG (sc,ATH5K_DEBUG_RESET ,"beacon queue %x\n" , -ath5k_hw_get_tx_buf (ah, sc->bhalq)); +ath5k_hw_get_txdp (ah, sc->bhalq));for (i =0 ; i <ARRAY_SIZE (sc->txqs); i++)if (sc->txqs[i].setup) {ath5k_hw_stop_tx_dma (ah, sc->txqs[i].qnum);ATH5K_DBG (sc,ATH5K_DEBUG_RESET ,"txq [%u] %x, " "link %p\n" , sc->txqs[i].qnum, -ath5k_hw_get_tx_buf (ah, +ath5k_hw_get_txdp (ah, sc->txqs[i].qnum), sc->txqs[i].link); }
@@ -1509,8 +1509,8 @@ ath5k_rx_start(struct ath5k_softc *sc) bf = list_first_entry(&sc->rxbuf, struct ath5k_buf, list);spin_unlock_bh (&sc->rxbuflock); -ath5k_hw_put_rx_buf (ah, bf->daddr); -ath5k_hw_start_rx (ah);/* enable recv descriptors */ +ath5k_hw_set_rxdp (ah, bf->daddr); +ath5k_hw_start_rx_dma (ah);/* enable recv descriptors */ ath5k_mode_setup (sc);/* set filters, etc. */ ath5k_hw_start_rx_pcu (ah);/* re-enable PCU/DMA engine */
@@ -1527,7 +1527,7 @@ ath5k_rx_stop(struct ath5k_softc *sc) {struct ath5k_hw *ah = sc->ah; -ath5k_hw_stop_pcu_recv (ah);/* disable PCU */ +ath5k_hw_stop_rx_pcu (ah);/* disable PCU */ ath5k_hw_set_rx_filter (ah,0 );/* clear recv filter */ ath5k_hw_stop_rx_dma (ah);/* disable DMA engine */
@@ -1976,8 +1976,8 @@ ath5k_beacon_send(struct ath5k_softc *sc)/* NB: hw still stops DMA, so proceed */ } -ath5k_hw_put_tx_buf (ah, sc->bhalq, bf->daddr); -ath5k_hw_tx_start (ah, sc->bhalq); +ath5k_hw_set_txdp (ah, sc->bhalq, bf->daddr); +ath5k_hw_start_tx_dma (ah, sc->bhalq);ATH5K_DBG (sc,ATH5K_DEBUG_BEACON ,"TXDP[%u] = %llx (%p)\n" , sc->bhalq, (unsigned long long )bf->daddr, bf->desc);
@@ -2106,7 +2106,7 @@ ath5k_beacon_config(struct ath5k_softc *sc) {struct ath5k_hw *ah = sc->ah; -ath5k_hw_set_intr (ah,0 ); +ath5k_hw_set_imr (ah,0 ); sc->bmisscount =0 ; sc->imask &= ~(AR5K_INT_BMISS |AR5K_INT_SWBA );
@@ -2132,7 +2132,7 @@ ath5k_beacon_config(struct ath5k_softc *sc) }/* TODO else AP */ -ath5k_hw_set_intr (ah, sc->imask); +ath5k_hw_set_imr (ah, sc->imask); }
@@ -2211,7 +2211,7 @@ ath5k_stop_locked(struct ath5k_softc *sc)if (!test_bit (ATH_STAT_INVALID , sc->status)) {ath5k_led_off (sc); -ath5k_hw_set_intr (ah,0 ); +ath5k_hw_set_imr (ah,0 );synchronize_irq (sc->pdev->irq); }ath5k_txq_cleanup (sc);
@@ -2604,7 +2604,7 @@ ath5k_reset(struct ath5k_softc *sc, bool stop, bool change_channel)ATH5K_DBG (sc,ATH5K_DEBUG_RESET ,"resetting\n" );if (stop) { -ath5k_hw_set_intr (ah,0 ); +ath5k_hw_set_imr (ah,0 );ath5k_txq_cleanup (sc);ath5k_rx_stop (sc); }
drivers/net/wireless/ath5k/caps.c new file +193 -0
193 lines not on this page · raw message
drivers/net/wireless/ath5k/debug.c +2 -2
@@ -58,8 +58,8 @@* THE POSSIBILITY OF SUCH DAMAGES. */ -#include "debug.h" #include "base.h" +#include "debug.h" static unsigned int ath5k_debug;module_param_named (debug, ath5k_debug, uint,0 );
@@ -525,7 +525,7 @@ ath5k_debug_printrxbuffs(struct ath5k_softc *sc, struct ath5k_hw *ah)return ;printk (KERN_DEBUG "rx queue %x, link %p\n" , -ath5k_hw_get_rx_buf (ah), sc->rxlink); +ath5k_hw_get_rxdp (ah), sc->rxlink);spin_lock_bh (&sc->rxbuflock);list_for_each_entry (bf, &sc->rxbuf, list) {
drivers/net/wireless/ath5k/desc.c new file +667 -0
667 lines not on this page · raw message
drivers/net/wireless/ath5k/desc.h new file +332 -0
332 lines not on this page · raw message
drivers/net/wireless/ath5k/dma.c new file +566 -0
566 lines not on this page · raw message
drivers/net/wireless/ath5k/eeprom.c new file +466 -0
167 lines not on this page · raw message
drivers/net/wireless/ath5k/eeprom.h new file +215 -0
215 lines not on this page · raw message
drivers/net/wireless/ath5k/gpio.c new file +176 -0
176 lines not on this page · raw message
drivers/net/wireless/ath5k/hw.c deleted +0 -4492
4,492 lines not on this page · raw message
drivers/net/wireless/ath5k/hw.h deleted +0 -616
616 lines not on this page · raw message
drivers/net/wireless/ath5k/pcu.c new file +1002 -0
1,002 lines not on this page · raw message
drivers/net/wireless/ath5k/qcu.c new file +488 -0
488 lines not on this page · raw message
drivers/net/wireless/ath5k/reg.h +5 -97
102 lines not on this page · raw message
drivers/net/wireless/ath5k/reset.c new file +925 -0
925 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.
Quoted 2 lines · Nick Kossifidis
Changes-licensed-under: ISC
Signed-off-by Nick Kossifidis <[email protected]>
Luis