X-Git-Url: https://jxself.org/git/?p=linux-libre-firmware.git;a=blobdiff_plain;f=ath9k_htc%2Ftarget_firmware%2Fwlan%2Fif_ath.c;h=f8dee47b87439700dfab9150ae3a6c0e884170cb;hp=2d6a7f793623dc004714bf35255cc50efa3b8b23;hb=1ba1a88647bfe113c885f985d6e383790dec2a1f;hpb=a2fe6b1f6253377c952c224d4ec9d55b196660ce diff --git a/ath9k_htc/target_firmware/wlan/if_ath.c b/ath9k_htc/target_firmware/wlan/if_ath.c index 2d6a7f7..f8dee47 100755 --- a/ath9k_htc/target_firmware/wlan/if_ath.c +++ b/ath9k_htc/target_firmware/wlan/if_ath.c @@ -56,6 +56,8 @@ #include "if_athvar.h" #include "ah_desc.h" #include "ah.h" +#include "ratectrl.h" +#include "ah_internal.h" static a_int32_t ath_numrxbufs = -1; static a_int32_t ath_numrxdescs = -1; @@ -327,13 +329,11 @@ static void ath_uapsd_processtriggers(struct ath_softc_tgt *sc) a_int32_t retval; a_uint32_t cnt = 0; a_uint16_t frame_len = 0; - a_uint64_t tsf; #define PA2DESC(_sc, _pa) \ ((struct ath_desc *)((caddr_t)(_sc)->sc_rxdma.dd_desc + \ ((_pa) - (_sc)->sc_rxdma.dd_desc_paddr))) - tsf = ah->ah_getTsf64(ah); bf = asf_tailq_first(&sc->sc_rxbuf); ds = asf_tailq_first(&sc->sc_rxdesc); @@ -583,24 +583,21 @@ static void ath_tgt_send_beacon(struct ath_softc_tgt *sc, adf_nbuf_t bc_hdr, struct ath_hal *ah = sc->sc_ah; struct ath_tx_buf *bf; a_uint8_t vap_index, *anbdata; - ath_beacon_hdr_t *bhdr; - struct ieee80211vap_target *vap; + ath_beacon_hdr_t *bhdr = NULL; a_uint32_t anblen; - struct ieee80211_frame *wh; if (!bc_hdr) { adf_nbuf_peek_header(nbuf, &anbdata, &anblen); bhdr = (ath_beacon_hdr_t *)anbdata; } else { adf_os_print("found bc_hdr! 0x%x\n", bc_hdr); + adf_os_assert(0); } vap_index = bhdr->vap_index; adf_os_assert(vap_index < TARGET_VAP_MAX); - vap = &sc->sc_vap[vap_index].av_vap; - wh = (struct ieee80211_frame *)adf_nbuf_pull_head(nbuf, - sizeof(ath_beacon_hdr_t)); + adf_nbuf_pull_head(nbuf, sizeof(ath_beacon_hdr_t)); bf = sc->sc_vap[vap_index].av_bcbuf; adf_os_assert(bf); @@ -763,6 +760,7 @@ static void tgt_HTCRecvMessageHandler(HTC_ENDPOINT_ID EndPt, bf->bf_endpt = EndPt; bf->bf_cookie = dh->cookie; + bf->vap_index = dh->vap_index; if (tid->flag & TID_AGGR_ENABLED) ath_tgt_handle_aggr(sc, bf); @@ -874,7 +872,6 @@ static void ath_descdma_cleanup(struct ath_softc_tgt *sc, ath_bufhead *head, a_int32_t dir) { 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) { @@ -892,7 +889,6 @@ static void ath_descdma_cleanup(struct ath_softc_tgt *sc, adf_nbuf_dmamap_destroy(sc->sc_dev, bf->bf_dmamap); - ni = bf->bf_node; bf->bf_node = NULL; } @@ -1104,9 +1100,9 @@ static void ath_enable_intr_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 intr; + a_uint32_t intr = 0; - if (data) + if (datalen == 4) intr = (*(a_uint32_t *)data); intr = adf_os_ntohl(intr); @@ -1619,11 +1615,14 @@ static void ath_stop_tx_dma_tgt(void *Context, A_UINT16 Command, struct ath_hal *ah = sc->sc_ah; a_uint32_t q; - if (data) - q = *(a_uint32_t *)data; + if (!datalen) + goto done; + + q = *(a_uint32_t *)data; q = adf_os_ntohl(q); ah->ah_stopTxDma(ah, q); +done: wmi_cmd_rsp(sc->tgt_wmi_handle, Command, SeqNo, NULL, 0); }