use ah_getRateTable directly
[open-ath9k-htc-firmware.git] / target_firmware / wlan / if_ath.c
index 90813fb67efdfd15f135aa289c9c5c0d3aa7bea3..889d1b4f29f5302a873821f2bb106a7d6386915f 100755 (executable)
 #include <adf_os_irq.h>
 
 #include <if_ath_pci.h>
-#include "if_ethersubr.h"
 #include "if_llc.h"
 #include "ieee80211_var.h"
-#include "ieee80211_proto.h"
 #include "if_athrate.h"
 #include "if_athvar.h"
 #include "ah_desc.h"
+#include "ah.h"
 
 static a_int32_t ath_numrxbufs = -1;
 static a_int32_t ath_numrxdescs = -1;
@@ -121,10 +120,10 @@ static a_int32_t ath_rate_setup(struct ath_softc_tgt *sc, a_uint32_t mode)
 
        switch (mode) {
        case IEEE80211_MODE_11NA:
-               sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_11NA);
+               sc->sc_rates[mode] = ah->ah_getRateTable(ah, HAL_MODE_11NA);
                break;
        case IEEE80211_MODE_11NG:
-               sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_11NG);
+               sc->sc_rates[mode] = ah->ah_getRateTable(ah, HAL_MODE_11NG);
                break;
        default:
                return 0;
@@ -539,7 +538,7 @@ static void ath_beacon_setup(struct ath_softc_tgt *sc,
 {
        adf_nbuf_t skb = bf->bf_skb;
        struct ath_hal *ah = sc->sc_ah;
-       struct ath_desc *ds;
+       struct ath_tx_desc *ds;
        a_int32_t flags;
        const HAL_RATE_TABLE *rt;
        a_uint8_t rix, rate;
@@ -879,8 +878,8 @@ static void ath_descdma_cleanup(struct ath_softc_tgt *sc,
                                struct ath_descdma *dd,
                                ath_bufhead *head, a_int32_t dir)
 {
-       struct ath_tx_buf *bf;
-       struct ieee80211_node *ni;
+       struct ath_buf *bf;
+       struct ieee80211_node_target *ni;
 
        asf_tailq_foreach(bf, head, bf_list) {
                if (adf_nbuf_queue_len(&bf->bf_skbhead) != 0) {
@@ -924,7 +923,7 @@ static a_int32_t ath_desc_alloc(struct ath_softc_tgt *sc)
        if (ath_numrxdescs == -1)
                ath_numrxdescs = ATH_RXDESC;
 
-       error = ath_descdma_setup(sc, &sc->sc_rxdma, &sc->sc_rxbuf,
+       error = ath_descdma_setup(sc, &sc->sc_rxdma, (ath_bufhead *)&sc->sc_rxbuf,
                                  "rx", ath_numrxdescs, 1,
                                  sizeof(struct ath_rx_buf),
                                  sizeof(struct ath_rx_desc));
@@ -933,7 +932,7 @@ static a_int32_t ath_desc_alloc(struct ath_softc_tgt *sc)
 
        a_uint32_t i;
        struct ath_descdma *dd = &sc->sc_rxdma;
-       struct ath_rx_desc *ds = dd->dd_desc;
+       struct ath_rx_desc *ds = (struct ath_rx_desc *)dd->dd_desc;
        struct ath_rx_desc *ds_prev = NULL;
 
        asf_tailq_init(&sc->sc_rxdesc);
@@ -961,24 +960,24 @@ static a_int32_t ath_desc_alloc(struct ath_softc_tgt *sc)
                asf_tailq_insert_tail(&sc->sc_rxdesc, ds, ds_list);
        }
 
-       error = ath_descdma_setup(sc, &sc->sc_txdma, &sc->sc_txbuf,
+       error = ath_descdma_setup(sc, &sc->sc_txdma, (ath_bufhead *)&sc->sc_txbuf,
                                  "tx", ATH_TXBUF + 1, ATH_TXDESC,
                                  sizeof(struct ath_tx_buf),
                                  sizeof(struct ath_tx_desc));
        if (error != 0) {
-               ath_descdma_cleanup(sc, &sc->sc_rxdma, &sc->sc_rxbuf,
+               ath_descdma_cleanup(sc, &sc->sc_rxdma, (ath_bufhead *)&sc->sc_rxbuf,
                                    ADF_OS_DMA_FROM_DEVICE);
                return error;
        }
 
-       error = ath_descdma_setup(sc, &sc->sc_bdma, &sc->sc_bbuf,
+       error = ath_descdma_setup(sc, &sc->sc_bdma, (ath_bufhead *)&sc->sc_bbuf,
                                  "beacon", ATH_BCBUF, 1,
                                  sizeof(struct ath_tx_buf),
                                  sizeof(struct ath_tx_desc));
        if (error != 0) {
-               ath_descdma_cleanup(sc, &sc->sc_txdma, &sc->sc_txbuf,
+               ath_descdma_cleanup(sc, &sc->sc_txdma, (ath_bufhead *)&sc->sc_txbuf,
                                    ADF_OS_DMA_TO_DEVICE);
-               ath_descdma_cleanup(sc, &sc->sc_rxdma, &sc->sc_rxbuf,
+               ath_descdma_cleanup(sc, &sc->sc_rxdma, (ath_bufhead *)&sc->sc_rxbuf,
                                    ADF_OS_DMA_FROM_DEVICE);
                return error;
        }
@@ -1001,10 +1000,10 @@ static void ath_desc_free(struct ath_softc_tgt *sc)
        sc->sc_txbuf_held = NULL;
 
        if (sc->sc_txdma.dd_desc_len != 0)
-               ath_descdma_cleanup(sc, &sc->sc_txdma, &sc->sc_txbuf,
+               ath_descdma_cleanup(sc, &sc->sc_txdma, (ath_bufhead *)&sc->sc_txbuf,
                                    ADF_OS_DMA_TO_DEVICE);
        if (sc->sc_rxdma.dd_desc_len != 0)
-               ath_descdma_cleanup(sc, &sc->sc_rxdma, &sc->sc_rxbuf,
+               ath_descdma_cleanup(sc, &sc->sc_rxdma, (ath_bufhead *)&sc->sc_rxbuf,
                                    ADF_OS_DMA_FROM_DEVICE);
 }
 
@@ -1136,7 +1135,6 @@ static void ath_init_tgt(void *Context, A_UINT16 Command,
 {
        struct ath_softc_tgt *sc = (struct ath_softc_tgt *)Context;
        struct ath_hal *ah = sc->sc_ah;
-       a_uint32_t stbcsupport;
 
        sc->sc_imask = HAL_INT_RX | HAL_INT_TX
                | HAL_INT_RXEOL | HAL_INT_RXORN
@@ -1147,13 +1145,6 @@ static void ath_init_tgt(void *Context, A_UINT16 Command,
        if (ath_hal_htsupported(ah))
                sc->sc_imask |= HAL_INT_CST;
 
-#ifdef MAGPIE_MERLIN
-       if (ath_hal_txstbcsupport(ah, &stbcsupport))
-               sc->sc_txstbcsupport = stbcsupport;
-
-       if (ath_hal_rxstbcsupport(ah, &stbcsupport))
-               sc->sc_rxstbcsupport = stbcsupport;
-#endif
        adf_os_setup_intr(sc->sc_dev, ath_intr);
        ath_hal_intrset(ah, sc->sc_imask);
 
@@ -1532,7 +1523,7 @@ static void ath_flushrecv_tgt(void *Context, A_UINT16 Command,
                              A_UINT16 SeqNo, A_UINT8 *data, a_int32_t datalen)
 {
        struct ath_softc_tgt *sc = (struct ath_softc_tgt *)Context;
-       struct ath_buf *bf;
+       struct ath_rx_buf *bf;
 
        asf_tailq_foreach(bf, &sc->sc_rxbuf, bf_list)
                if (bf->bf_skb != NULL) {
@@ -1883,8 +1874,7 @@ static void tgt_hif_htc_wmi_init(struct ath_softc_tgt *sc)
        HTC_Ready(sc->tgt_htc_handle);
 }
 
-a_int32_t ath_tgt_attach(a_uint32_t devid,a_uint32_t mem_start,
-                        struct ath_softc_tgt *sc, adf_os_device_t osdev)
+a_int32_t ath_tgt_attach(a_uint32_t devid, struct ath_softc_tgt *sc, adf_os_device_t osdev)
 {
        struct ath_hal *ah;
        HAL_STATUS status;
@@ -1906,7 +1896,7 @@ a_int32_t ath_tgt_attach(a_uint32_t devid,a_uint32_t mem_start,
        ATH_INIT_TQUEUE(sc->sc_dev, &sc->sc_fataltq, ath_fatal_tasklet, sc);
 
        flags |= AH_USE_EEPROM;
-       ah = _ath_hal_attach_tgt(devid,sc,sc->sc_dev,mem_start, flags, &status);
+       ah = _ath_hal_attach_tgt(devid, sc, sc->sc_dev, flags, &status);
        if (ah == NULL) {
                error = ENXIO;
                goto bad;