• Home
  • Raw
  • Download

Lines Matching refs:tid_agg_rx

1104 static inline bool ieee80211_rx_reorder_ready(struct tid_ampdu_rx *tid_agg_rx,  in ieee80211_rx_reorder_ready()  argument
1107 struct sk_buff_head *frames = &tid_agg_rx->reorder_buf[index]; in ieee80211_rx_reorder_ready()
1111 if (tid_agg_rx->reorder_buf_filtered & BIT_ULL(index)) in ieee80211_rx_reorder_ready()
1125 struct tid_ampdu_rx *tid_agg_rx, in ieee80211_release_reorder_frame() argument
1129 struct sk_buff_head *skb_list = &tid_agg_rx->reorder_buf[index]; in ieee80211_release_reorder_frame()
1133 lockdep_assert_held(&tid_agg_rx->reorder_lock); in ieee80211_release_reorder_frame()
1138 if (!ieee80211_rx_reorder_ready(tid_agg_rx, index)) { in ieee80211_release_reorder_frame()
1144 tid_agg_rx->stored_mpdu_num--; in ieee80211_release_reorder_frame()
1152 tid_agg_rx->reorder_buf_filtered &= ~BIT_ULL(index); in ieee80211_release_reorder_frame()
1153 tid_agg_rx->head_seq_num = ieee80211_sn_inc(tid_agg_rx->head_seq_num); in ieee80211_release_reorder_frame()
1157 struct tid_ampdu_rx *tid_agg_rx, in ieee80211_release_reorder_frames() argument
1163 lockdep_assert_held(&tid_agg_rx->reorder_lock); in ieee80211_release_reorder_frames()
1165 while (ieee80211_sn_less(tid_agg_rx->head_seq_num, head_seq_num)) { in ieee80211_release_reorder_frames()
1166 index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; in ieee80211_release_reorder_frames()
1167 ieee80211_release_reorder_frame(sdata, tid_agg_rx, index, in ieee80211_release_reorder_frames()
1184 struct tid_ampdu_rx *tid_agg_rx, in ieee80211_sta_reorder_release() argument
1189 lockdep_assert_held(&tid_agg_rx->reorder_lock); in ieee80211_sta_reorder_release()
1192 index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; in ieee80211_sta_reorder_release()
1193 if (!ieee80211_rx_reorder_ready(tid_agg_rx, index) && in ieee80211_sta_reorder_release()
1194 tid_agg_rx->stored_mpdu_num) { in ieee80211_sta_reorder_release()
1200 for (j = (index + 1) % tid_agg_rx->buf_size; j != index; in ieee80211_sta_reorder_release()
1201 j = (j + 1) % tid_agg_rx->buf_size) { in ieee80211_sta_reorder_release()
1202 if (!ieee80211_rx_reorder_ready(tid_agg_rx, j)) { in ieee80211_sta_reorder_release()
1207 !time_after(jiffies, tid_agg_rx->reorder_time[j] + in ieee80211_sta_reorder_release()
1212 for (i = (index + 1) % tid_agg_rx->buf_size; i != j; in ieee80211_sta_reorder_release()
1213 i = (i + 1) % tid_agg_rx->buf_size) in ieee80211_sta_reorder_release()
1214 __skb_queue_purge(&tid_agg_rx->reorder_buf[i]); in ieee80211_sta_reorder_release()
1218 ieee80211_release_reorder_frame(sdata, tid_agg_rx, j, in ieee80211_sta_reorder_release()
1224 tid_agg_rx->head_seq_num = in ieee80211_sta_reorder_release()
1225 (tid_agg_rx->head_seq_num + in ieee80211_sta_reorder_release()
1229 } else while (ieee80211_rx_reorder_ready(tid_agg_rx, index)) { in ieee80211_sta_reorder_release()
1230 ieee80211_release_reorder_frame(sdata, tid_agg_rx, index, in ieee80211_sta_reorder_release()
1232 index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; in ieee80211_sta_reorder_release()
1235 if (tid_agg_rx->stored_mpdu_num) { in ieee80211_sta_reorder_release()
1236 j = index = tid_agg_rx->head_seq_num % tid_agg_rx->buf_size; in ieee80211_sta_reorder_release()
1238 for (; j != (index - 1) % tid_agg_rx->buf_size; in ieee80211_sta_reorder_release()
1239 j = (j + 1) % tid_agg_rx->buf_size) { in ieee80211_sta_reorder_release()
1240 if (ieee80211_rx_reorder_ready(tid_agg_rx, j)) in ieee80211_sta_reorder_release()
1246 if (!tid_agg_rx->removed) in ieee80211_sta_reorder_release()
1247 mod_timer(&tid_agg_rx->reorder_timer, in ieee80211_sta_reorder_release()
1248 tid_agg_rx->reorder_time[j] + 1 + in ieee80211_sta_reorder_release()
1251 del_timer(&tid_agg_rx->reorder_timer); in ieee80211_sta_reorder_release()
1261 struct tid_ampdu_rx *tid_agg_rx, in ieee80211_sta_manage_reorder_buf() argument
1273 spin_lock(&tid_agg_rx->reorder_lock); in ieee80211_sta_manage_reorder_buf()
1279 if (unlikely(tid_agg_rx->auto_seq)) { in ieee80211_sta_manage_reorder_buf()
1280 tid_agg_rx->auto_seq = false; in ieee80211_sta_manage_reorder_buf()
1281 tid_agg_rx->ssn = mpdu_seq_num; in ieee80211_sta_manage_reorder_buf()
1282 tid_agg_rx->head_seq_num = mpdu_seq_num; in ieee80211_sta_manage_reorder_buf()
1285 buf_size = tid_agg_rx->buf_size; in ieee80211_sta_manage_reorder_buf()
1286 head_seq_num = tid_agg_rx->head_seq_num; in ieee80211_sta_manage_reorder_buf()
1292 if (unlikely(!tid_agg_rx->started)) { in ieee80211_sta_manage_reorder_buf()
1297 tid_agg_rx->started = true; in ieee80211_sta_manage_reorder_buf()
1314 ieee80211_release_reorder_frames(sdata, tid_agg_rx, in ieee80211_sta_manage_reorder_buf()
1320 index = mpdu_seq_num % tid_agg_rx->buf_size; in ieee80211_sta_manage_reorder_buf()
1323 if (ieee80211_rx_reorder_ready(tid_agg_rx, index)) { in ieee80211_sta_manage_reorder_buf()
1334 if (mpdu_seq_num == tid_agg_rx->head_seq_num && in ieee80211_sta_manage_reorder_buf()
1335 tid_agg_rx->stored_mpdu_num == 0) { in ieee80211_sta_manage_reorder_buf()
1337 tid_agg_rx->head_seq_num = in ieee80211_sta_manage_reorder_buf()
1338 ieee80211_sn_inc(tid_agg_rx->head_seq_num); in ieee80211_sta_manage_reorder_buf()
1344 __skb_queue_tail(&tid_agg_rx->reorder_buf[index], skb); in ieee80211_sta_manage_reorder_buf()
1346 tid_agg_rx->reorder_time[index] = jiffies; in ieee80211_sta_manage_reorder_buf()
1347 tid_agg_rx->stored_mpdu_num++; in ieee80211_sta_manage_reorder_buf()
1348 ieee80211_sta_reorder_release(sdata, tid_agg_rx, frames); in ieee80211_sta_manage_reorder_buf()
1352 spin_unlock(&tid_agg_rx->reorder_lock); in ieee80211_sta_manage_reorder_buf()
1367 struct tid_ampdu_rx *tid_agg_rx; in ieee80211_rx_reorder_ampdu() local
1387 tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); in ieee80211_rx_reorder_ampdu()
1388 if (!tid_agg_rx) { in ieee80211_rx_reorder_ampdu()
1409 if (tid_agg_rx->timeout) in ieee80211_rx_reorder_ampdu()
1410 tid_agg_rx->last_rx = jiffies; in ieee80211_rx_reorder_ampdu()
1427 if (ieee80211_sta_manage_reorder_buf(rx->sdata, tid_agg_rx, skb, in ieee80211_rx_reorder_ampdu()
3002 struct tid_ampdu_rx *tid_agg_rx; in ieee80211_rx_h_ctrl() local
3032 tid_agg_rx = rcu_dereference(rx->sta->ampdu_mlme.tid_rx[tid]); in ieee80211_rx_h_ctrl()
3033 if (!tid_agg_rx) in ieee80211_rx_h_ctrl()
3042 if (tid_agg_rx->timeout) in ieee80211_rx_h_ctrl()
3043 mod_timer(&tid_agg_rx->session_timer, in ieee80211_rx_h_ctrl()
3044 TU_TO_EXP_TIME(tid_agg_rx->timeout)); in ieee80211_rx_h_ctrl()
3046 spin_lock(&tid_agg_rx->reorder_lock); in ieee80211_rx_h_ctrl()
3048 ieee80211_release_reorder_frames(rx->sdata, tid_agg_rx, in ieee80211_rx_h_ctrl()
3050 spin_unlock(&tid_agg_rx->reorder_lock); in ieee80211_rx_h_ctrl()
3828 struct tid_ampdu_rx *tid_agg_rx; in ieee80211_release_reorder_timeout() local
3830 tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); in ieee80211_release_reorder_timeout()
3831 if (!tid_agg_rx) in ieee80211_release_reorder_timeout()
3836 spin_lock(&tid_agg_rx->reorder_lock); in ieee80211_release_reorder_timeout()
3837 ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames); in ieee80211_release_reorder_timeout()
3838 spin_unlock(&tid_agg_rx->reorder_lock); in ieee80211_release_reorder_timeout()
3857 struct tid_ampdu_rx *tid_agg_rx; in ieee80211_mark_rx_ba_filtered_frames() local
3878 tid_agg_rx = rcu_dereference(sta->ampdu_mlme.tid_rx[tid]); in ieee80211_mark_rx_ba_filtered_frames()
3879 if (!tid_agg_rx) in ieee80211_mark_rx_ba_filtered_frames()
3882 spin_lock_bh(&tid_agg_rx->reorder_lock); in ieee80211_mark_rx_ba_filtered_frames()
3888 release = (tid_agg_rx->head_seq_num + tid_agg_rx->buf_size) % in ieee80211_mark_rx_ba_filtered_frames()
3890 ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx, in ieee80211_mark_rx_ba_filtered_frames()
3893 tid_agg_rx->head_seq_num = ssn; in ieee80211_mark_rx_ba_filtered_frames()
3895 ieee80211_release_reorder_frames(sta->sdata, tid_agg_rx, ssn, in ieee80211_mark_rx_ba_filtered_frames()
3901 diff = (tid_agg_rx->head_seq_num - ssn) & IEEE80211_SN_MASK; in ieee80211_mark_rx_ba_filtered_frames()
3902 if (diff >= tid_agg_rx->buf_size) { in ieee80211_mark_rx_ba_filtered_frames()
3903 tid_agg_rx->reorder_buf_filtered = 0; in ieee80211_mark_rx_ba_filtered_frames()
3910 for (i = 0; i < tid_agg_rx->buf_size; i++) { in ieee80211_mark_rx_ba_filtered_frames()
3911 int index = (ssn + i) % tid_agg_rx->buf_size; in ieee80211_mark_rx_ba_filtered_frames()
3913 tid_agg_rx->reorder_buf_filtered &= ~BIT_ULL(index); in ieee80211_mark_rx_ba_filtered_frames()
3915 tid_agg_rx->reorder_buf_filtered |= BIT_ULL(index); in ieee80211_mark_rx_ba_filtered_frames()
3919 ieee80211_sta_reorder_release(sta->sdata, tid_agg_rx, &frames); in ieee80211_mark_rx_ba_filtered_frames()
3922 spin_unlock_bh(&tid_agg_rx->reorder_lock); in ieee80211_mark_rx_ba_filtered_frames()