From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Greear Date: Fri, 07 Jan 2011 22:12:54 -0800 Subject: [ath9k-devel] Dealing with packets out of BAW (tx progress blocked) Message-ID: <4D280066.50409@candelatech.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: ath9k-devel@lists.ath9k.org Still working on the tx-logic hang. I am seeing cases where we cannot form aggr packets for transmit because the fi->seqno is a bit less than tid->seq_start. Should we just drop these packets...or maybe there is no valid way we should ever get in this state?? Code check that fails is below: static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc, struct ath_txq *txq, struct ath_atx_tid *tid, struct list_head *bf_q, int *aggr_len) { #define PADBYTES(_len) ((4 - ((_len) % 4)) % 4) struct ath_buf *bf, *bf_first, *bf_prev = NULL; int rl = 0, nframes = 0, ndelim, prev_al = 0; u16 aggr_limit = 0, al = 0, bpad = 0, al_delta, h_baw = tid->baw_size / 2; enum ATH_AGGR_STATUS status = ATH_AGGR_DONE; struct ieee80211_tx_info *tx_info; struct ath_frame_info *fi; bf_first = list_first_entry(&tid->buf_q, struct ath_buf, list); do { bf = list_first_entry(&tid->buf_q, struct ath_buf, list); fi = get_frame_info(bf->bf_mpdu); /* do not step over block-ack window */ if (!BAW_WITHIN(tid->seq_start, tid->baw_size, fi->seqno)) { if (dbg_hack) printk(" tid->seq_start: %hu baw_size: %hu" " baw-head: %i baw-tail: %i seqno: %i (BAW_CLOSED)\n", tid->seq_start, tid->baw_size, tid->baw_head, tid->baw_tail, fi->seqno); Printout of one of the cases where we hit this debug code: tid->seq_start: 4 baw_size: 64 baw-head: 3 baw-tail: 3 seqno: 0 (BAW_CLOSED) -- Ben Greear Candela Technologies Inc http://www.candelatech.com