• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-13-stable/sys/net80211/

Lines Matching refs:rap

520 ampdu_rx_purge_slot(struct ieee80211_rx_ampdu *rap, int i)
525 while (mbufq_len(&rap->rxa_mq[i]) != 0) {
526 m = mbufq_dequeue(&rap->rxa_mq[i]);
529 rap->rxa_qbytes -= m->m_pkthdr.len;
530 rap->rxa_qframes--;
543 ampdu_rx_add_slot(struct ieee80211_rx_ampdu *rap, int off, int tid,
575 if (mbufq_len(&rap->rxa_mq[off]) != 0) {
576 rxs_final = ieee80211_get_rx_params_ptr(mbufq_last(&rap->rxa_mq[off]));
605 if ((mbufq_len(&rap->rxa_mq[off]) == 0) || (toss_dup == 0)) {
606 if (mbufq_enqueue(&rap->rxa_mq[off], m) != 0) {
611 rxseq, tid, rap->rxa_start,
612 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1),
614 mbufq_len(&rap->rxa_mq[off]),
615 rap->rxa_mq[off].mq_maxlen);
620 rap->rxa_qframes++;
621 rap->rxa_qbytes += m->m_pkthdr.len;
639 rxseq, tid, rap->rxa_start,
640 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1));
668 ampdu_rx_purge(struct ieee80211_rx_ampdu *rap)
672 for (i = 0; i < rap->rxa_wnd; i++) {
673 ampdu_rx_purge_slot(rap, i);
674 if (rap->rxa_qframes == 0)
677 KASSERT(rap->rxa_qbytes == 0 && rap->rxa_qframes == 0,
679 rap->rxa_qbytes, rap->rxa_qframes));
684 struct ieee80211_rx_ampdu *rap)
689 memset(rap, 0, sizeof(*rap));
691 mbufq_init(&rap->rxa_mq[i], 256);
698 ampdu_rx_start(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap,
704 if (rap->rxa_flags & IEEE80211_AGGR_RUNNING) {
709 ampdu_rx_purge(rap);
711 ieee80211_ampdu_rx_init_rap(ni, rap);
712 rap->rxa_wnd = (bufsiz == 0) ?
714 rap->rxa_start = _IEEE80211_MASKSHIFT(baseqctl, IEEE80211_BASEQ_START);
715 rap->rxa_flags |= IEEE80211_AGGR_RUNNING | IEEE80211_AGGR_XCHGPEND;
720 rap->rxa_flags |= IEEE80211_AGGR_AMSDU;
722 rap->rxa_flags &= ~IEEE80211_AGGR_AMSDU;
733 struct ieee80211_rx_ampdu *rap;
737 rap = &ni->ni_rx_ampdu[tid];
739 if (rap->rxa_flags & IEEE80211_AGGR_RUNNING) {
744 ampdu_rx_purge(rap);
747 ieee80211_ampdu_rx_init_rap(ni, rap);
749 rap->rxa_wnd = (baw== 0) ?
753 rap->rxa_start = 0;
754 rap->rxa_flags |= IEEE80211_AGGR_WAITRX;
756 rap->rxa_start = seq;
758 rap->rxa_flags |= IEEE80211_AGGR_RUNNING | IEEE80211_AGGR_XCHGPEND;
767 rap->rxa_wnd,
768 rap->rxa_flags);
779 struct ieee80211_rx_ampdu *rap;
782 rap = &ni->ni_rx_ampdu[tid];
783 ampdu_rx_stop(ni, rap);
790 ampdu_rx_stop(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap)
793 ampdu_rx_purge(rap);
794 rap->rxa_flags &= ~(IEEE80211_AGGR_RUNNING
814 ampdu_dispatch_slot(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni,
820 while (mbufq_len(&rap->rxa_mq[i]) != 0) {
821 m = mbufq_dequeue(&rap->rxa_mq[i]);
826 rap->rxa_qbytes -= m->m_pkthdr.len;
827 rap->rxa_qframes--;
835 ampdu_rx_moveup(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni,
844 if (rap->rxa_qframes != 0) {
845 int n = rap->rxa_qframes, j;
846 for (j = i+1; j < rap->rxa_wnd; j++) {
851 if (mbufq_len(&rap->rxa_mq[j]) != 0) {
852 n = n - mbufq_len(&rap->rxa_mq[j]);
853 mbufq_concat(&rap->rxa_mq[j-i], &rap->rxa_mq[j]);
861 __func__, n, rap->rxa_qframes, i, rap->rxa_start,
862 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1),
864 vap->iv_stats.is_ampdu_rx_copy += rap->rxa_qframes;
877 ampdu_rx_dispatch(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni)
884 for (i = 1; i < rap->rxa_wnd; i++) {
885 r = ampdu_dispatch_slot(rap, ni, i);
892 ampdu_rx_moveup(rap, ni, i, -1);
898 rap->rxa_start = IEEE80211_SEQ_ADD(rap->rxa_start, i);
905 rap->rxa_start,
913 ampdu_rx_flush(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap)
917 for (i = 0; i < rap->rxa_wnd; i++) {
918 r = ampdu_dispatch_slot(rap, ni, i);
927 rap->rxa_start,
930 if (rap->rxa_qframes == 0)
942 struct ieee80211_rx_ampdu *rap, ieee80211_seq winstart)
955 seqno = rap->rxa_start;
956 for (i = 0; i < rap->rxa_wnd; i++) {
957 if ((r = mbufq_len(&rap->rxa_mq[i])) != 0) {
958 (void) ampdu_dispatch_slot(rap, ni, i);
978 ampdu_rx_moveup(rap, ni, i, winstart);
986 rap->rxa_start = seqno;
1009 struct ieee80211_rx_ampdu *rap;
1041 rap = &ni->ni_rx_ampdu[tid];
1042 if ((rap->rxa_flags & IEEE80211_AGGR_XCHGPEND) == 0) {
1063 rap->rxa_nframes++;
1070 if (rap->rxa_flags & IEEE80211_AGGR_WAITRX) {
1071 rap->rxa_flags &= ~IEEE80211_AGGR_WAITRX;
1072 rap->rxa_start = rxseq;
1075 if (rxseq == rap->rxa_start) {
1079 if (rap->rxa_qframes != 0) {
1083 KASSERT((mbufq_len(&rap->rxa_mq[0]) == 0), ("unexpected dup"));
1085 ampdu_rx_dispatch(rap, ni);
1094 rap->rxa_start = IEEE80211_SEQ_INC(rxseq);
1100 rap->rxa_start = IEEE80211_SEQ_INC(rxseq);
1109 off = IEEE80211_SEQ_SUB(rxseq, rap->rxa_start);
1110 if (off < rap->rxa_wnd) {
1133 if (rap->rxa_qframes != 0) {
1135 if (ticks - rap->rxa_age > ieee80211_ampdu_age) {
1140 if (rap->rxa_qframes != 0) {
1142 rap->rxa_qframes;
1143 ampdu_rx_flush(ni, rap);
1151 rap->rxa_start =
1160 rap->rxa_start =
1169 rap->rxa_age = ticks;
1173 ampdu_rx_add_slot(rap, off, tid, rxseq, ni, m, rxs);
1184 rap->rxa_start,
1185 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1),
1186 rap->rxa_qframes, rxseq, tid);
1191 * WinStart_B = rxseq - rap->rxa_wnd + 1
1198 ampdu_rx_flush_upto(ni, rap,
1199 IEEE80211_SEQ_SUB(rxseq, rap->rxa_wnd-1));
1209 rap->rxa_start,
1210 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1),
1211 rap->rxa_qframes, rxseq, tid,
1232 struct ieee80211_rx_ampdu *rap;
1247 rap = &ni->ni_rx_ampdu[tid];
1248 if ((rap->rxa_flags & IEEE80211_AGGR_XCHGPEND) == 0) {
1260 if (rxseq == rap->rxa_start)
1263 off = IEEE80211_SEQ_SUB(rxseq, rap->rxa_start);
1271 rap->rxa_start,
1272 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1),
1273 rap->rxa_qframes, rxseq, tid);
1276 ampdu_rx_flush_upto(ni, rap, rxseq);
1277 if (off >= rap->rxa_wnd) {
1283 rap->rxa_start = rxseq;
1293 rap->rxa_start,
1294 IEEE80211_SEQ_ADD(rap->rxa_start, rap->rxa_wnd-1),
1295 rap->rxa_qframes, rxseq, tid,
1385 struct ieee80211_rx_ampdu *rap;
1387 rap = &ni->ni_rx_ampdu[tid];
1388 if ((rap->rxa_flags & IEEE80211_AGGR_XCHGPEND) == 0)
1390 if (rap->rxa_qframes == 0)
1397 if (ticks - rap->rxa_age > ieee80211_ampdu_age) {
1402 vap->iv_stats.is_ampdu_rx_age += rap->rxa_qframes;
1403 ampdu_rx_flush(ni, rap);
2409 struct ieee80211_rx_ampdu *rap;
2432 rap = &ni->ni_rx_ampdu[tid];
2444 ic->ic_ampdu_rx_start(ni, rap,
2457 /* XXX honor rap flags? */
2460 | _IEEE80211_SHIFTMASK(rap->rxa_wnd, IEEE80211_BAPS_BUFSIZ)
2564 struct ieee80211_rx_ampdu *rap;
2583 rap = &ni->ni_rx_ampdu[tid];
2584 ic->ic_ampdu_rx_stop(ni, rap);