X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=target_firmware%2Fwlan%2Fif_ath.c;h=a024574d957f44faaf6014cd98582f7481e4cc65;hb=43b337a87061e666ce8ec54dfa8c5a8b9bbe4872;hp=abbdb3e6fb52799388e32c7e8c4cf72623fdf62b;hpb=7de2de434c6ad56bafba0c09d8bfec49866e2781;p=open-ath9k-htc-firmware.git diff --git a/target_firmware/wlan/if_ath.c b/target_firmware/wlan/if_ath.c index abbdb3e..a024574 100755 --- a/target_firmware/wlan/if_ath.c +++ b/target_firmware/wlan/if_ath.c @@ -50,13 +50,12 @@ #include #include -#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; @@ -97,11 +96,12 @@ static a_uint16_t adf_os_cpu_to_le16(a_uint16_t x) */ static u_int64_t ath_extend_tsf(struct ath_softc_tgt *sc, u_int32_t rstamp) { + struct ath_hal *ah = sc->sc_ah; u_int64_t tsf; u_int32_t tsf_low; u_int64_t tsf64; - tsf = ath_hal_gettsf64(sc->sc_ah); + tsf = ah->ah_getTsf64(ah); tsf_low = tsf & 0xffffffff; tsf64 = (tsf & ~0xffffffffULL) | rstamp; @@ -121,10 +121,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; @@ -271,7 +271,7 @@ static a_int32_t ath_rxdesc_init(struct ath_softc_tgt *sc, struct ath_rx_desc *d 0); if (sc->sc_rxlink == NULL) { - ath_hal_putrxbuf(ah, ds->ds_daddr); + ah->ah_setRxDP(ah, ds->ds_daddr); } else { *sc->sc_rxlink = ds->ds_daddr; @@ -335,7 +335,7 @@ static void ath_uapsd_processtriggers(struct ath_softc_tgt *sc) ((struct ath_desc *)((caddr_t)(_sc)->sc_rxdma.dd_desc + \ ((_pa) - (_sc)->sc_rxdma.dd_desc_paddr))) - tsf = ath_hal_gettsf64(ah); + tsf = ah->ah_getTsf64(ah); bf = asf_tailq_first(&sc->sc_rxbuf); ds = asf_tailq_first(&sc->sc_rxdesc); @@ -472,7 +472,7 @@ static a_int32_t ath_startrecv(struct ath_softc_tgt *sc) } ds = asf_tailq_first(&sc->sc_rxdesc); - ath_hal_putrxbuf(ah, ds->ds_daddr); + ah->ah_setRxDP(ah, ds->ds_daddr); return 0; } @@ -539,7 +539,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; @@ -624,9 +624,9 @@ static void ath_tgt_send_beacon(struct ath_softc_tgt *sc, adf_nbuf_t bc_hdr, adf_nbuf_dmamap_info(bf->bf_dmamap,&bf->bf_dmamap_info); ath_beacon_setup(sc, bf, &sc->sc_vap[vap_index]); - ath_hal_stoptxdma(ah, sc->sc_bhalq); - ath_hal_puttxbuf(ah, sc->sc_bhalq, ATH_BUF_GET_DESC_PHY_ADDR(bf)); - ath_hal_txstart(ah, sc->sc_bhalq); + ah->ah_stopTxDma(ah, sc->sc_bhalq); + ah->ah_setTxDP(ah, sc->sc_bhalq, ATH_BUF_GET_DESC_PHY_ADDR(bf)); + ah->ah_startTxDma(ah, sc->sc_bhalq); } /******/ @@ -637,7 +637,7 @@ static void ath_tx_stopdma(struct ath_softc_tgt *sc, struct ath_txq *txq) { struct ath_hal *ah = sc->sc_ah; - (void) ath_hal_stoptxdma(ah, txq->axq_qnum); + ah->ah_stopTxDma(ah, txq->axq_qnum); } static void owltgt_txq_drain(struct ath_softc_tgt *sc, struct ath_txq *txq) @@ -660,7 +660,7 @@ static void ath_draintxq(struct ath_softc_tgt *sc, HAL_BOOL drain_softq) ath_tx_status_clear(sc); sc->sc_tx_draining = 1; - (void) ath_hal_stoptxdma(ah, sc->sc_bhalq); + ah->ah_stopTxDma(ah, sc->sc_bhalq); for (i = 0; i < HAL_NUM_TX_QUEUES; i++) if (ATH_TXQ_SETUP(sc, i)) @@ -785,7 +785,7 @@ static void tgt_HTCRecv_cabhandler(HTC_ENDPOINT_ID EndPt, adf_nbuf_t hdr_buf, a_uint32_t tmp; #ifdef ATH_ENABLE_CABQ - tsf = ath_hal_gettsf64(ah); + tsf = ah->ah_getTsf64(ah); tmp = tsf - sc->sc_swba_tsf; if ( tmp > ATH_CABQ_HANDLING_THRESHOLD ) { @@ -933,7 +933,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); @@ -1036,9 +1036,9 @@ adf_os_irq_resp_t ath_intr(adf_drv_handle_t hdl) WMI_SWBA_EVENT swbaEvt; struct ath_txq *txq = ATH_TXQ(sc, 8); - swbaEvt.tsf = ath_hal_gettsf64(ah); - swbaEvt.beaconPendingCount = ath_hal_numtxpending(ah, sc->sc_bhalq); - sc->sc_swba_tsf = ath_hal_gettsf64(ah); + swbaEvt.tsf = ah->ah_getTsf64(ah); + swbaEvt.beaconPendingCount = ah->ah_numTxPending(ah, sc->sc_bhalq); + sc->sc_swba_tsf = ah->ah_getTsf64(ah); wmi_event(sc->tgt_wmi_handle, WMI_SWBA_EVENTID, @@ -1068,7 +1068,7 @@ adf_os_irq_resp_t ath_intr(adf_drv_handle_t hdl) if (status & HAL_INT_TXURN) { sc->sc_int_stats.ast_txurn++; - ath_hal_updatetxtriglevel(ah, AH_TRUE); + ah->ah_updateTxTrigLevel(ah, AH_TRUE); } ATH_SCHEDULE_TQUEUE(sc->sc_dev, &sc->sc_txtq); @@ -1136,7 +1136,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 +1146,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); @@ -1573,8 +1565,9 @@ static void ath_aborttx_dma_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_hal *ah = sc->sc_ah; - ath_hal_aborttxdma(sc->sc_ah); + ah->ah_abortTxDma(sc->sc_ah); wmi_cmd_rsp(sc->tgt_wmi_handle, Command, SeqNo, NULL, 0); } @@ -1604,7 +1597,7 @@ static void ath_stop_tx_dma_tgt(void *Context, A_UINT16 Command, q = *(a_uint32_t *)data; q = adf_os_ntohl(q); - ath_hal_stoptxdma(ah, q); + ah->ah_stopTxDma(ah, q); wmi_cmd_rsp(sc->tgt_wmi_handle, Command, SeqNo, NULL, 0); } @@ -1625,8 +1618,8 @@ static void ath_stoprecv_tgt(void *Context, A_UINT16 Command, struct ath_hal *ah = sc->sc_ah; ath_hal_stoppcurecv(ah); - ath_hal_setrxfilter(ah, 0); - ath_hal_stopdmarecv(ah); + ah->ah_setRxFilter(ah, 0); + ah->ah_stopDmaReceive(ah); sc->sc_rxlink = NULL; wmi_cmd_rsp(sc->tgt_wmi_handle, Command, SeqNo, NULL, 0); @@ -1653,7 +1646,7 @@ static void ath_detach_tgt(void *Context, A_UINT16 Command, A_UINT16 SeqNo, struct ath_hal *ah = sc->sc_ah; ath_desc_free(sc); - ath_hal_detach(ah); + ah->ah_detach(ah); wmi_cmd_rsp(sc->tgt_wmi_handle, Command, SeqNo, NULL, 0); adf_os_mem_free(sc); } @@ -1883,8 +1876,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 +1898,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; @@ -1946,7 +1938,7 @@ bad: bad2: ath_desc_free(sc); if (ah) - ath_hal_detach(ah); + ah->ah_detach(ah); } static void tgt_hif_htc_wmi_shutdown(struct ath_softc_tgt *sc)