Lines Matching refs:r

39 static inline int reorder_index(struct wil_tid_ampdu_rx *r, u16 seq)  in reorder_index()  argument
41 return seq_sub(seq, r->ssn) % r->buf_size; in reorder_index()
45 struct wil_tid_ampdu_rx *r, in wil_release_reorder_frame() argument
48 struct sk_buff *skb = r->reorder_buf[index]; in wil_release_reorder_frame()
54 r->stored_mpdu_num--; in wil_release_reorder_frame()
55 r->reorder_buf[index] = NULL; in wil_release_reorder_frame()
59 r->head_seq_num = seq_inc(r->head_seq_num); in wil_release_reorder_frame()
63 struct wil_tid_ampdu_rx *r, in wil_release_reorder_frames() argument
74 while (seq_less(r->head_seq_num, hseq) && r->stored_mpdu_num) { in wil_release_reorder_frames()
75 index = reorder_index(r, r->head_seq_num); in wil_release_reorder_frames()
76 wil_release_reorder_frame(ndev, r, index); in wil_release_reorder_frames()
78 r->head_seq_num = hseq; in wil_release_reorder_frames()
82 struct wil_tid_ampdu_rx *r) in wil_reorder_release() argument
84 int index = reorder_index(r, r->head_seq_num); in wil_reorder_release()
86 while (r->reorder_buf[index]) { in wil_reorder_release()
87 wil_release_reorder_frame(ndev, r, index); in wil_reorder_release()
88 index = reorder_index(r, r->head_seq_num); in wil_reorder_release()
101 struct wil_tid_ampdu_rx *r; in wil_rx_reorder() local
122 r = sta->tid_rx[tid]; in wil_rx_reorder()
123 if (!r) { in wil_rx_reorder()
129 if (retry && seq == r->mcast_last_seq) { in wil_rx_reorder()
130 r->drop_dup_mcast++; in wil_rx_reorder()
136 r->mcast_last_seq = seq; in wil_rx_reorder()
141 r->total++; in wil_rx_reorder()
142 hseq = r->head_seq_num; in wil_rx_reorder()
152 if (r->first_time) { in wil_rx_reorder()
153 r->first_time = false; in wil_rx_reorder()
154 if (seq != r->head_seq_num) { in wil_rx_reorder()
155 if (seq_less(seq, r->head_seq_num)) { in wil_rx_reorder()
158 seq, r->head_seq_num); in wil_rx_reorder()
159 r->first_time = true; in wil_rx_reorder()
165 seq, r->head_seq_num); in wil_rx_reorder()
166 r->head_seq_num = seq; in wil_rx_reorder()
167 r->ssn = seq; in wil_rx_reorder()
172 if (seq_less(seq, r->head_seq_num)) { in wil_rx_reorder()
173 r->ssn_last_drop = seq; in wil_rx_reorder()
174 r->drop_old++; in wil_rx_reorder()
176 seq, r->head_seq_num); in wil_rx_reorder()
185 if (!seq_less(seq, r->head_seq_num + r->buf_size)) { in wil_rx_reorder()
186 hseq = seq_inc(seq_sub(seq, r->buf_size)); in wil_rx_reorder()
188 wil_release_reorder_frames(ndev, r, hseq); in wil_rx_reorder()
193 index = reorder_index(r, seq); in wil_rx_reorder()
196 if (r->reorder_buf[index]) { in wil_rx_reorder()
197 r->drop_dup++; in wil_rx_reorder()
209 if (seq == r->head_seq_num && r->stored_mpdu_num == 0) { in wil_rx_reorder()
210 r->head_seq_num = seq_inc(r->head_seq_num); in wil_rx_reorder()
216 r->reorder_buf[index] = skb; in wil_rx_reorder()
217 r->stored_mpdu_num++; in wil_rx_reorder()
218 wil_reorder_release(ndev, r); in wil_rx_reorder()
230 struct wil_tid_ampdu_rx *r; in wil_rx_bar() local
234 r = sta->tid_rx[tid]; in wil_rx_bar()
235 if (!r) { in wil_rx_bar()
239 if (seq_less(seq, r->head_seq_num)) { in wil_rx_bar()
241 seq, r->head_seq_num); in wil_rx_bar()
245 cid, vif->mid, tid, seq, r->head_seq_num); in wil_rx_bar()
246 wil_release_reorder_frames(ndev, r, seq); in wil_rx_bar()
255 struct wil_tid_ampdu_rx *r = kzalloc(sizeof(*r), GFP_KERNEL); in wil_tid_ampdu_rx_alloc() local
257 if (!r) in wil_tid_ampdu_rx_alloc()
260 r->reorder_buf = in wil_tid_ampdu_rx_alloc()
262 if (!r->reorder_buf) { in wil_tid_ampdu_rx_alloc()
263 kfree(r->reorder_buf); in wil_tid_ampdu_rx_alloc()
264 kfree(r); in wil_tid_ampdu_rx_alloc()
268 r->ssn = ssn; in wil_tid_ampdu_rx_alloc()
269 r->head_seq_num = ssn; in wil_tid_ampdu_rx_alloc()
270 r->buf_size = size; in wil_tid_ampdu_rx_alloc()
271 r->stored_mpdu_num = 0; in wil_tid_ampdu_rx_alloc()
272 r->first_time = true; in wil_tid_ampdu_rx_alloc()
273 r->mcast_last_seq = U16_MAX; in wil_tid_ampdu_rx_alloc()
274 return r; in wil_tid_ampdu_rx_alloc()
278 struct wil_tid_ampdu_rx *r) in wil_tid_ampdu_rx_free() argument
282 if (!r) in wil_tid_ampdu_rx_free()
290 for (i = 0; i < r->buf_size; i++) in wil_tid_ampdu_rx_free()
291 kfree_skb(r->reorder_buf[i]); in wil_tid_ampdu_rx_free()
293 kfree(r->reorder_buf); in wil_tid_ampdu_rx_free()
294 kfree(r); in wil_tid_ampdu_rx_free()
334 struct wil_tid_ampdu_rx *r; in wil_addba_rx_request() local
385 r = wil_tid_ampdu_rx_alloc(wil, agg_wsize, ssn); in wil_addba_rx_request()
388 sta->tid_rx[tid] = r; in wil_addba_rx_request()