X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=carlfw%2Fsrc%2Fwlan.c;h=1f4afa3b618d147a7a7b9b493f85a86b5ae60a4c;hb=6f810932c1c9e2eac2abb56d2e4462c2c1d02ef1;hp=aaff3eeaf9bb2555cd6aa86f035e149060c1ab64;hpb=e72388a0aa23da8bc8e24a0cbe9d523c5a9ce294;p=carl9170fw.git diff --git a/carlfw/src/wlan.c b/carlfw/src/wlan.c index aaff3ee..1f4afa3 100644 --- a/carlfw/src/wlan.c +++ b/carlfw/src/wlan.c @@ -181,7 +181,7 @@ static void wlan_tx_complete(struct carl9170_tx_superframe *super, static bool wlan_tx_consume_retry(struct carl9170_tx_superframe *super) { /* check if this was the last possible retry with this rate */ - if (unlikely(super->s.cnt >= super->s.tries[super->s.rix])) { + if (unlikely(super->s.cnt >= super->s.ri[super->s.rix].tries)) { /* end of the road - indicate tx failure */ if (unlikely(super->s.rix == CARL9170_TX_MAX_RETRY_RATES)) return false; @@ -196,6 +196,9 @@ static bool wlan_tx_consume_retry(struct carl9170_tx_superframe *super) /* finally - mark the old rate as USED */ super->s.rix++; + /* update MAC flags */ + super->f.hdr.mac.erp_prot = super->s.ri[super->s.rix].erp_prot; + /* reinitialize try counter */ super->s.cnt = 1; } else { @@ -287,7 +290,7 @@ static bool wlan_tx_status(struct dma_queue *queue, success = true; - if (!!(desc->ctrl & AR9170_CTRL_FAIL_MASK)) { + if (!!(desc->ctrl & AR9170_CTRL_FAIL)) { txfail = !!(desc->ctrl & AR9170_CTRL_TXFAIL); /* reset retry indicator flags */ @@ -467,7 +470,7 @@ static void wlan_send_buffered_ba(void) sizeof(struct ar9170_tx_hwdesc) + sizeof(struct ieee80211_ba); - baf->s.tries[0] = 3; + baf->s.ri[0].tries = 3; baf->s.queue = 0; baf->f.hdr.length = sizeof(struct ieee80211_ba) + FCS_LEN;