On state changes from RUN to anything else the AGGR sessions are
cleared/dropped leading to qid2tap[n] being NULL as there no longer is a tap. Now, if there have been lots of frames queued the firmware processes and returns those after the tap is gone. Tested by: osa MFC after: 1 week
This commit is contained in:
parent
10fa36f0bc
commit
0f7a9c77e3
@ -2813,11 +2813,13 @@ iwn_ampdu_tx_done(struct iwn_softc *sc, int qid, int idx, int nframes,
|
||||
bitmap |= 1ULL << bit;
|
||||
}
|
||||
tap = sc->qid2tap[qid];
|
||||
tid = WME_AC_TO_TID(tap->txa_ac);
|
||||
wn = (void *)tap->txa_ni;
|
||||
wn->agg[tid].bitmap = bitmap;
|
||||
wn->agg[tid].startidx = start;
|
||||
wn->agg[tid].nframes = nframes;
|
||||
if (tap != NULL) {
|
||||
tid = WME_AC_TO_TID(tap->txa_ac);
|
||||
wn = (void *)tap->txa_ni;
|
||||
wn->agg[tid].bitmap = bitmap;
|
||||
wn->agg[tid].startidx = start;
|
||||
wn->agg[tid].nframes = nframes;
|
||||
}
|
||||
|
||||
seqno = le32toh(*(status + nframes)) & 0xfff;
|
||||
for (lastidx = (seqno & 0xff); ring->read != lastidx;) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user