MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ampdu_rx_dispatch

Function ampdu_rx_dispatch

freebsd/net80211/ieee80211_ht.c:876–907  ·  view source on GitHub ↗

* Dispatch as many frames as possible from the re-order queue. * Frames will always be "at the front"; we process all frames * up to the first empty slot in the window. On completion we * cleanup state if there are still pending frames in the current * BA window. We assume the frame at slot 0 is already handled * by the caller; we always start at slot 1. */

Source from the content-addressed store, hash-verified

874 * by the caller; we always start at slot 1.
875 */
876static void
877ampdu_rx_dispatch(struct ieee80211_rx_ampdu *rap, struct ieee80211_node *ni)
878{
879 struct ieee80211vap *vap = ni->ni_vap;
880 int i, r, r2;
881
882 /* flush run of frames */
883 r2 = 0;
884 for (i = 1; i < rap->rxa_wnd; i++) {
885 r = ampdu_dispatch_slot(rap, ni, i);
886 if (r == 0)
887 break;
888 r2 += r;
889 }
890
891 /* move up frames */
892 ampdu_rx_moveup(rap, ni, i, -1);
893
894 /*
895 * Adjust the start of the BA window to
896 * reflect the frames just dispatched.
897 */
898 rap->rxa_start = IEEE80211_SEQ_ADD(rap->rxa_start, i);
899 vap->iv_stats.is_ampdu_rx_oor += r2;
900
901 IEEE80211_NOTE(ni->ni_vap, IEEE80211_MSG_11N, ni,
902 "%s: moved slot up %d slots to start at %d (%d frames)",
903 __func__,
904 i,
905 rap->rxa_start,
906 r2);
907}
908
909/*
910 * Dispatch all frames in the A-MPDU re-order queue.

Callers 1

ieee80211_ampdu_reorderFunction · 0.85

Calls 2

ampdu_dispatch_slotFunction · 0.85
ampdu_rx_moveupFunction · 0.85

Tested by

no test coverage detected