tid_agg_rx 275 net/mac80211/agg-rx.c struct tid_ampdu_rx *tid_agg_rx; tid_agg_rx 386 net/mac80211/agg-rx.c tid_agg_rx = kzalloc(sizeof(*tid_agg_rx), GFP_KERNEL); tid_agg_rx 387 net/mac80211/agg-rx.c if (!tid_agg_rx) tid_agg_rx 390 net/mac80211/agg-rx.c spin_lock_init(&tid_agg_rx->reorder_lock); tid_agg_rx 393 net/mac80211/agg-rx.c timer_setup(&tid_agg_rx->session_timer, tid_agg_rx 397 net/mac80211/agg-rx.c timer_setup(&tid_agg_rx->reorder_timer, tid_agg_rx 401 net/mac80211/agg-rx.c tid_agg_rx->reorder_buf = tid_agg_rx 403 net/mac80211/agg-rx.c tid_agg_rx->reorder_time = tid_agg_rx 405 net/mac80211/agg-rx.c if (!tid_agg_rx->reorder_buf || !tid_agg_rx->reorder_time) { tid_agg_rx 406 net/mac80211/agg-rx.c kfree(tid_agg_rx->reorder_buf); tid_agg_rx 407 net/mac80211/agg-rx.c kfree(tid_agg_rx->reorder_time); tid_agg_rx 408 net/mac80211/agg-rx.c kfree(tid_agg_rx); tid_agg_rx 413 net/mac80211/agg-rx.c __skb_queue_head_init(&tid_agg_rx->reorder_buf[i]); tid_agg_rx 419 net/mac80211/agg-rx.c kfree(tid_agg_rx->reorder_buf); tid_agg_rx 420 net/mac80211/agg-rx.c kfree(tid_agg_rx->reorder_time); tid_agg_rx 421 net/mac80211/agg-rx.c kfree(tid_agg_rx); tid_agg_rx 426 net/mac80211/agg-rx.c tid_agg_rx->ssn = start_seq_num; tid_agg_rx 427 net/mac80211/agg-rx.c tid_agg_rx->head_seq_num = start_seq_num; tid_agg_rx 428 net/mac80211/agg-rx.c tid_agg_rx->buf_size = buf_size; tid_agg_rx 429 net/mac80211/agg-rx.c tid_agg_rx->timeout = timeout; tid_agg_rx 430 net/mac80211/agg-rx.c tid_agg_rx->stored_mpdu_num = 0; tid_agg_rx 431 net/mac80211/agg-rx.c tid_agg_rx->auto_seq = auto_seq; tid_agg_rx 432 net/mac80211/agg-rx.c tid_agg_rx->started = false; tid_agg_rx 433 net/mac80211/agg-rx.c tid_agg_rx->reorder_buf_filtered = 0; tid_agg_rx 434 net/mac80211/agg-rx.c tid_agg_rx->tid = tid; tid_agg_rx 435 net/mac80211/agg-rx.c tid_agg_rx->sta = sta; tid_agg_rx 439 net/mac80211/agg-rx.c rcu_assign_pointer(sta->ampdu_mlme.tid_rx[tid], tid_agg_rx); tid_agg_rx 442 net/mac80211/agg-rx.c mod_timer(&tid_agg_rx->session_timer, TU_TO_EXP_TIME(timeout)); tid_agg_rx 443 net/mac80211/agg-rx.c tid_agg_rx->last_rx = jiffies; tid_agg_rx 1103 net/mac80211/rx.c static inline bool ieee80211_rx_reorder_ready(struct tid_ampdu_rx *tid_agg_rx, tid_agg_rx 1106 net/mac80211/rx.c struct sk_buff_head *frames = &tid_agg_rx->reorder_buf[index]; tid_agg_rx 1110 net/mac80211/rx.c if (tid_agg_rx->reorder_buf_filtered & BIT_ULL(index)) tid_agg_rx 1124 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx, tid_agg_rx 1128 net/mac80211/rx.c struct sk_buff_head *skb_list = &tid_agg_rx->reorder_buf[index]; tid_agg_rx 1132 net/mac80211/rx.c lockdep_assert_held(&tid_agg_rx->reorder_lock); tid_agg_rx 1137 net/mac80211/rx.c if (!ieee80211_rx_reorder_ready(tid_agg_rx, index)) { tid_agg_rx 1143 net/mac80211/rx.c tid_agg_rx->stored_mpdu_num--; tid_agg_rx 1151 net/mac80211/rx.c tid_agg_rx->reorder_buf_filtered &= ~BIT_ULL(index); tid_agg_rx 1152 net/mac80211/rx.c tid_agg_rx->head_seq_num = ieee80211_sn_inc(tid_agg_rx->head_seq_num); tid_agg_rx 1156 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx, tid_agg_rx 1162 net/mac80211/rx.c lockdep_assert_held(&tid_agg_rx->reorder_lock); tid_agg_rx 1164 net/mac80211/rx.c while (ieee80211_sn_less(tid_agg_rx->head_seq_num, head_seq_num)) { tid_agg_rx 1165 net/mac80211/rx.c index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; tid_agg_rx 1166 net/mac80211/rx.c ieee80211_release_reorder_frame(sdata, tid_agg_rx, index, tid_agg_rx 1183 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx, tid_agg_rx 1188 net/mac80211/rx.c lockdep_assert_held(&tid_agg_rx->reorder_lock); tid_agg_rx 1191 net/mac80211/rx.c index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; tid_agg_rx 1192 net/mac80211/rx.c if (!ieee80211_rx_reorder_ready(tid_agg_rx, index) && tid_agg_rx 1193 net/mac80211/rx.c tid_agg_rx->stored_mpdu_num) { tid_agg_rx 1199 net/mac80211/rx.c for (j = (index + 1) % tid_agg_rx->buf_size; j != index; tid_agg_rx 1200 net/mac80211/rx.c j = (j + 1) % tid_agg_rx->buf_size) { tid_agg_rx 1201 net/mac80211/rx.c if (!ieee80211_rx_reorder_ready(tid_agg_rx, j)) { tid_agg_rx 1206 net/mac80211/rx.c !time_after(jiffies, tid_agg_rx->reorder_time[j] + tid_agg_rx 1211 net/mac80211/rx.c for (i = (index + 1) % tid_agg_rx->buf_size; i != j; tid_agg_rx 1212 net/mac80211/rx.c i = (i + 1) % tid_agg_rx->buf_size) tid_agg_rx 1213 net/mac80211/rx.c __skb_queue_purge(&tid_agg_rx->reorder_buf[i]); tid_agg_rx 1217 net/mac80211/rx.c ieee80211_release_reorder_frame(sdata, tid_agg_rx, j, tid_agg_rx 1223 net/mac80211/rx.c tid_agg_rx->head_seq_num = tid_agg_rx 1224 net/mac80211/rx.c (tid_agg_rx->head_seq_num + tid_agg_rx 1228 net/mac80211/rx.c } else while (ieee80211_rx_reorder_ready(tid_agg_rx, index)) { tid_agg_rx 1229 net/mac80211/rx.c ieee80211_release_reorder_frame(sdata, tid_agg_rx, index, tid_agg_rx 1231 net/mac80211/rx.c index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; tid_agg_rx 1234 net/mac80211/rx.c if (tid_agg_rx->stored_mpdu_num) { tid_agg_rx 1235 net/mac80211/rx.c j = index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; tid_agg_rx 1237 net/mac80211/rx.c for (; j != (index - 1) % tid_agg_rx->buf_size; tid_agg_rx 1238 net/mac80211/rx.c j = (j + 1) % tid_agg_rx->buf_size) { tid_agg_rx 1239 net/mac80211/rx.c if (ieee80211_rx_reorder_ready(tid_agg_rx, j)) tid_agg_rx 1245 net/mac80211/rx.c if (!tid_agg_rx->removed) tid_agg_rx 1246 net/mac80211/rx.c mod_timer(&tid_agg_rx->reorder_timer, tid_agg_rx 1247 net/mac80211/rx.c tid_agg_rx->reorder_time[j] + 1 + tid_agg_rx 1250 net/mac80211/rx.c del_timer(&tid_agg_rx->reorder_timer); tid_agg_rx 1260 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx, tid_agg_rx 1272 net/mac80211/rx.c spin_lock(&tid_agg_rx->reorder_lock); tid_agg_rx 1278 net/mac80211/rx.c if (unlikely(tid_agg_rx->auto_seq)) { tid_agg_rx 1279 net/mac80211/rx.c tid_agg_rx->auto_seq = false; tid_agg_rx 1280 net/mac80211/rx.c tid_agg_rx->ssn = mpdu_seq_num; tid_agg_rx 1281 net/mac80211/rx.c tid_agg_rx->head_seq_num = mpdu_seq_num; tid_agg_rx 1284 net/mac80211/rx.c buf_size = tid_agg_rx->buf_size; tid_agg_rx 1285 net/mac80211/rx.c head_seq_num = tid_agg_rx->head_seq_num; tid_agg_rx 1291 net/mac80211/rx.c if (unlikely(!tid_agg_rx->started)) { tid_agg_rx 1296 net/mac80211/rx.c tid_agg_rx->started = true; tid_agg_rx 1313 net/mac80211/rx.c ieee80211_release_reorder_frames(sdata, tid_agg_rx, tid_agg_rx 1319 net/mac80211/rx.c index = mpdu_seq_num % tid_agg_rx->buf_size; tid_agg_rx 1322 net/mac80211/rx.c if (ieee80211_rx_reorder_ready(tid_agg_rx, index)) { tid_agg_rx 1333 net/mac80211/rx.c if (mpdu_seq_num == tid_agg_rx->head_seq_num && tid_agg_rx 1334 net/mac80211/rx.c tid_agg_rx->stored_mpdu_num == 0) { tid_agg_rx 1336 net/mac80211/rx.c tid_agg_rx->head_seq_num = tid_agg_rx 1337 net/mac80211/rx.c ieee80211_sn_inc(tid_agg_rx->head_seq_num); tid_agg_rx 1343 net/mac80211/rx.c __skb_queue_tail(&tid_agg_rx->reorder_buf[index], skb); tid_agg_rx 1345 net/mac80211/rx.c tid_agg_rx->reorder_time[index] = jiffies; tid_agg_rx 1346 net/mac80211/rx.c tid_agg_rx->stored_mpdu_num++; tid_agg_rx 1347 net/mac80211/rx.c ieee80211_sta_reorder_release(sdata, tid_agg_rx, frames); tid_agg_rx 1351 net/mac80211/rx.c spin_unlock(&tid_agg_rx->reorder_lock); tid_agg_rx 1366 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx; tid_agg_rx 1386 net/mac80211/rx.c tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); tid_agg_rx 1387 net/mac80211/rx.c if (!tid_agg_rx) { tid_agg_rx 1409 net/mac80211/rx.c if (tid_agg_rx->timeout) tid_agg_rx 1410 net/mac80211/rx.c tid_agg_rx->last_rx = jiffies; tid_agg_rx 1427 net/mac80211/rx.c if (ieee80211_sta_manage_reorder_buf(rx->sdata, tid_agg_rx, skb, tid_agg_rx 2894 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx; tid_agg_rx 2924 net/mac80211/rx.c tid_agg_rx = rcu_dereference(rx->sta->ampdu_mlme.tid_rx[tid]); tid_agg_rx 2925 net/mac80211/rx.c if (!tid_agg_rx) tid_agg_rx 2934 net/mac80211/rx.c if (tid_agg_rx->timeout) tid_agg_rx 2935 net/mac80211/rx.c mod_timer(&tid_agg_rx->session_timer, tid_agg_rx 2936 net/mac80211/rx.c TU_TO_EXP_TIME(tid_agg_rx->timeout)); tid_agg_rx 2938 net/mac80211/rx.c spin_lock(&tid_agg_rx->reorder_lock); tid_agg_rx 2940 net/mac80211/rx.c ieee80211_release_reorder_frames(rx->sdata, tid_agg_rx, tid_agg_rx 2942 net/mac80211/rx.c spin_unlock(&tid_agg_rx->reorder_lock); tid_agg_rx 3720 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx; tid_agg_rx 3722 net/mac80211/rx.c tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); tid_agg_rx 3723 net/mac80211/rx.c if (!tid_agg_rx) tid_agg_rx 3728 net/mac80211/rx.c spin_lock(&tid_agg_rx->reorder_lock); tid_agg_rx 3729 net/mac80211/rx.c ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames); tid_agg_rx 3730 net/mac80211/rx.c spin_unlock(&tid_agg_rx->reorder_lock); tid_agg_rx 3749 net/mac80211/rx.c struct tid_ampdu_rx *tid_agg_rx; tid_agg_rx 3770 net/mac80211/rx.c tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); tid_agg_rx 3771 net/mac80211/rx.c if (!tid_agg_rx) tid_agg_rx 3774 net/mac80211/rx.c spin_lock_bh(&tid_agg_rx->reorder_lock); tid_agg_rx 3780 net/mac80211/rx.c release = (tid_agg_rx->head_seq_num + tid_agg_rx->buf_size) % tid_agg_rx 3782 net/mac80211/rx.c ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx, tid_agg_rx 3785 net/mac80211/rx.c tid_agg_rx->head_seq_num = ssn; tid_agg_rx 3787 net/mac80211/rx.c ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx, ssn, tid_agg_rx 3793 net/mac80211/rx.c diff = (tid_agg_rx->head_seq_num - ssn) & IEEE80211_SN_MASK; tid_agg_rx 3794 net/mac80211/rx.c if (diff >= tid_agg_rx->buf_size) { tid_agg_rx 3795 net/mac80211/rx.c tid_agg_rx->reorder_buf_filtered = 0; tid_agg_rx 3802 net/mac80211/rx.c for (i = 0; i < tid_agg_rx->buf_size; i++) { tid_agg_rx 3803 net/mac80211/rx.c int index = (ssn + i) % tid_agg_rx->buf_size; tid_agg_rx 3805 net/mac80211/rx.c tid_agg_rx->reorder_buf_filtered &= ~BIT_ULL(index); tid_agg_rx 3807 net/mac80211/rx.c tid_agg_rx->reorder_buf_filtered |= BIT_ULL(index); tid_agg_rx 3811 net/mac80211/rx.c ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames); tid_agg_rx 3814 net/mac80211/rx.c spin_unlock_bh(&tid_agg_rx->reorder_lock);