Lines Matching refs:rap
160 ampdu_rx_start(struct ieee80211_rx_ampdu *rap, int bufsiz, int start) in ampdu_rx_start() argument
162 (void) memset(rap, 0, sizeof (*rap)); in ampdu_rx_start()
163 rap->rxa_wnd = (bufsiz == 0) ? IEEE80211_AGGR_BAWMAX in ampdu_rx_start()
165 rap->rxa_start = (uint16_t)start; in ampdu_rx_start()
166 rap->rxa_flags |= IEEE80211_AGGR_XCHGPEND; in ampdu_rx_start()
173 ampdu_rx_purge(struct ieee80211_rx_ampdu *rap) in ampdu_rx_purge() argument
178 for (i = 0; i < rap->rxa_wnd; i++) { in ampdu_rx_purge()
179 m = rap->rxa_m[i]; in ampdu_rx_purge()
181 rap->rxa_m[i] = NULL; in ampdu_rx_purge()
182 rap->rxa_qbytes -= MBLKL(m); in ampdu_rx_purge()
184 if (--rap->rxa_qframes == 0) in ampdu_rx_purge()
188 ASSERT(rap->rxa_qbytes == 0 && rap->rxa_qframes == 0); in ampdu_rx_purge()
195 ampdu_rx_stop(struct ieee80211_rx_ampdu *rap) in ampdu_rx_stop() argument
197 rap->rxa_flags &= ~IEEE80211_AGGR_XCHGPEND; in ampdu_rx_stop()
198 ampdu_rx_purge(rap); in ampdu_rx_stop()
224 ampdu_rx_dispatch(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *in) in ampdu_rx_dispatch() argument
230 for (i = 1; i < rap->rxa_wnd; i++) { in ampdu_rx_dispatch()
231 m = rap->rxa_m[i]; in ampdu_rx_dispatch()
234 rap->rxa_m[i] = NULL; in ampdu_rx_dispatch()
235 rap->rxa_qbytes -= MBLKL(m); in ampdu_rx_dispatch()
236 rap->rxa_qframes--; in ampdu_rx_dispatch()
244 if (rap->rxa_qframes != 0) { in ampdu_rx_dispatch()
245 int n = rap->rxa_qframes, j; in ampdu_rx_dispatch()
246 for (j = i+1; j < rap->rxa_wnd; j++) { in ampdu_rx_dispatch()
247 if (rap->rxa_m[j] != NULL) { in ampdu_rx_dispatch()
248 rap->rxa_m[j-i] = rap->rxa_m[j]; in ampdu_rx_dispatch()
249 rap->rxa_m[j] = NULL; in ampdu_rx_dispatch()
260 rap->rxa_start = IEEE80211_SEQ_ADD(rap->rxa_start, i); in ampdu_rx_dispatch()
268 ampdu_rx_flush(struct ieee80211_node *in, struct ieee80211_rx_ampdu *rap) in ampdu_rx_flush() argument
275 rap->rxa_wnd); in ampdu_rx_flush()
277 for (i = 0; i < rap->rxa_wnd; i++) { in ampdu_rx_flush()
278 m = rap->rxa_m[i]; in ampdu_rx_flush()
281 rap->rxa_m[i] = NULL; in ampdu_rx_flush()
282 rap->rxa_qbytes -= MBLKL(m); in ampdu_rx_flush()
283 rap->rxa_qframes--; in ampdu_rx_flush()
286 if (rap->rxa_qframes == 0) in ampdu_rx_flush()
299 struct ieee80211_rx_ampdu *rap, ieee80211_seq winstart) in ampdu_rx_flush_upto() argument
312 seqno = rap->rxa_start; in ampdu_rx_flush_upto()
313 for (i = 0; i < rap->rxa_wnd; i++) { in ampdu_rx_flush_upto()
314 m = rap->rxa_m[i]; in ampdu_rx_flush_upto()
316 rap->rxa_m[i] = NULL; in ampdu_rx_flush_upto()
317 rap->rxa_qbytes -= MBLKL(m); in ampdu_rx_flush_upto()
318 rap->rxa_qframes--; in ampdu_rx_flush_upto()
331 if (rap->rxa_qframes != 0) { in ampdu_rx_flush_upto()
332 int n = rap->rxa_qframes, j; in ampdu_rx_flush_upto()
333 for (j = i+1; j < rap->rxa_wnd; j++) { in ampdu_rx_flush_upto()
334 if (rap->rxa_m[j] != NULL) { in ampdu_rx_flush_upto()
335 rap->rxa_m[j-i] = rap->rxa_m[j]; in ampdu_rx_flush_upto()
336 rap->rxa_m[j] = NULL; in ampdu_rx_flush_upto()
346 n, rap->rxa_qframes, i, rap->rxa_start, in ampdu_rx_flush_upto()
347 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1), in ampdu_rx_flush_upto()
357 rap->rxa_start = seqno; in ampdu_rx_flush_upto()
379 struct ieee80211_rx_ampdu *rap; in ieee80211_ampdu_reorder() local
395 rap = &in->in_rx_ampdu[tid]; in ieee80211_ampdu_reorder()
396 if ((rap->rxa_flags & IEEE80211_AGGR_XCHGPEND) == 0) { in ieee80211_ampdu_reorder()
403 rap->rxa_nframes++; in ieee80211_ampdu_reorder()
405 if (rxseq == rap->rxa_start) { in ieee80211_ampdu_reorder()
409 if (rap->rxa_qframes != 0) { in ieee80211_ampdu_reorder()
413 ASSERT(rap->rxa_m[0] == NULL); /* [0] is m */ in ieee80211_ampdu_reorder()
415 ampdu_rx_dispatch(rap, in); in ieee80211_ampdu_reorder()
418 rap->rxa_qframes); in ieee80211_ampdu_reorder()
425 rap->rxa_start = IEEE80211_SEQ_INC(rxseq); in ieee80211_ampdu_reorder()
428 rap->rxa_start); in ieee80211_ampdu_reorder()
434 rxseq, rap->rxa_start); in ieee80211_ampdu_reorder()
439 off = IEEE80211_SEQ_SUB(rxseq, rap->rxa_start); in ieee80211_ampdu_reorder()
440 if (off < rap->rxa_wnd) { in ieee80211_ampdu_reorder()
465 if (rap->rxa_qframes != 0) { in ieee80211_ampdu_reorder()
467 if (ticks - rap->rxa_age > drv_usectohz(500*1000)) { in ieee80211_ampdu_reorder()
472 if (rap->rxa_qframes != 0) { in ieee80211_ampdu_reorder()
473 ampdu_rx_flush(in, rap); in ieee80211_ampdu_reorder()
475 rap->rxa_start = IEEE80211_SEQ_INC(rxseq); in ieee80211_ampdu_reorder()
482 rap->rxa_age = ticks; in ieee80211_ampdu_reorder()
486 if (rap->rxa_m[off] == NULL) { in ieee80211_ampdu_reorder()
487 rap->rxa_m[off] = m; in ieee80211_ampdu_reorder()
488 rap->rxa_qframes++; in ieee80211_ampdu_reorder()
489 rap->rxa_qbytes += MBLKL(m); in ieee80211_ampdu_reorder()
494 rxseq, tid, rap->rxa_start, in ieee80211_ampdu_reorder()
495 IEEE80211_SEQ_ADD(rap->rxa_start, in ieee80211_ampdu_reorder()
496 rap->rxa_wnd - 1)); in ieee80211_ampdu_reorder()
509 rap->rxa_start, in ieee80211_ampdu_reorder()
510 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd - 1), in ieee80211_ampdu_reorder()
511 rap->rxa_qframes, rxseq, tid); in ieee80211_ampdu_reorder()
522 ampdu_rx_flush_upto(in, rap, in ieee80211_ampdu_reorder()
523 IEEE80211_SEQ_SUB(rxseq, rap->rxa_wnd-1)); in ieee80211_ampdu_reorder()
532 rap->rxa_start, in ieee80211_ampdu_reorder()
533 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1), in ieee80211_ampdu_reorder()
534 rap->rxa_qframes, rxseq, tid, in ieee80211_ampdu_reorder()
554 struct ieee80211_rx_ampdu *rap; in ieee80211_recv_bar() local
561 rap = &in->in_rx_ampdu[tid]; in ieee80211_recv_bar()
562 if ((rap->rxa_flags & IEEE80211_AGGR_XCHGPEND) == 0) { in ieee80211_recv_bar()
571 if (rxseq == rap->rxa_start) in ieee80211_recv_bar()
574 off = IEEE80211_SEQ_SUB(rxseq, rap->rxa_start); in ieee80211_recv_bar()
582 rap->rxa_start, in ieee80211_recv_bar()
583 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1), in ieee80211_recv_bar()
584 rap->rxa_qframes, rxseq, tid); in ieee80211_recv_bar()
586 ampdu_rx_flush_upto(in, rap, rxseq); in ieee80211_recv_bar()
587 if (off >= rap->rxa_wnd) { in ieee80211_recv_bar()
593 rap->rxa_start = rxseq; in ieee80211_recv_bar()
602 rap->rxa_start, in ieee80211_recv_bar()
603 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1), in ieee80211_recv_bar()
604 rap->rxa_qframes, rxseq, tid, in ieee80211_recv_bar()
1136 struct ieee80211_rx_ampdu *rap; in ieee80211_aggr_recv_action() local
1164 rap = &in->in_rx_ampdu[tid]; in ieee80211_aggr_recv_action()
1175 ampdu_rx_start(rap, bufsiz, in ieee80211_aggr_recv_action()
1191 | SM(rap->rxa_wnd, IEEE80211_BAPS_BUFSIZ); in ieee80211_aggr_recv_action()
1246 rap = &in->in_rx_ampdu[tid]; in ieee80211_aggr_recv_action()
1247 ampdu_rx_stop(rap); in ieee80211_aggr_recv_action()