rxtid
struct rxtid rx_tid[NUM_OF_TIDS];
skb_queue_tail(&rxtid->q, new_skb);
struct rxtid *rxtid;
rxtid = &agg_conn->rx_tid[tid];
spin_lock_bh(&rxtid->lock);
idx = AGGR_WIN_IDX(rxtid->seq_next, rxtid->hold_q_sz);
seq_end = seq_no ? seq_no : rxtid->seq_next;
idx_end = AGGR_WIN_IDX(seq_end, rxtid->hold_q_sz);
node = &rxtid->hold_q[idx];
aggr_slice_amsdu(agg_conn->aggr_info, rxtid,
skb_queue_tail(&rxtid->q, node->skb);
rxtid->seq_next = ATH6KL_NEXT_SEQ_NO(rxtid->seq_next);
idx = AGGR_WIN_IDX(rxtid->seq_next, rxtid->hold_q_sz);
spin_unlock_bh(&rxtid->lock);
stats->num_delivered += skb_queue_len(&rxtid->q);
while ((skb = skb_dequeue(&rxtid->q)))
struct rxtid *rxtid;
rxtid = &agg_conn->rx_tid[tid];
if (!rxtid->aggr) {
aggr_slice_amsdu(agg_conn->aggr_info, rxtid, frame);
while ((skb = skb_dequeue(&rxtid->q)))
st = rxtid->seq_next;
end = (st + rxtid->hold_q_sz-1) & ATH6KL_MAX_SEQ_NO;
extended_end = (end + rxtid->hold_q_sz - 1) &
spin_lock_bh(&rxtid->lock);
if (cur >= rxtid->hold_q_sz - 1)
rxtid->seq_next = cur - (rxtid->hold_q_sz - 1);
rxtid->seq_next = ATH6KL_MAX_SEQ_NO -
(rxtid->hold_q_sz - 2 - cur);
spin_unlock_bh(&rxtid->lock);
if (cur >= rxtid->hold_q_sz - 1)
st = cur - (rxtid->hold_q_sz - 1);
(rxtid->hold_q_sz - 2 - cur);
idx = AGGR_WIN_IDX(seq_no, rxtid->hold_q_sz);
node = &rxtid->hold_q[idx];
spin_lock_bh(&rxtid->lock);
spin_unlock_bh(&rxtid->lock);
spin_lock_bh(&rxtid->lock);
for (idx = 0; idx < rxtid->hold_q_sz; idx++) {
if (rxtid->hold_q[idx].skb) {
rxtid->timer_mon = true;
spin_unlock_bh(&rxtid->lock);
struct rxtid *rxtid;
rxtid = &aggr_conn->rx_tid[i];
if (!rxtid->aggr || !rxtid->timer_mon)
rxtid->seq_next,
((rxtid->seq_next + rxtid->hold_q_sz-1) &
rxtid = &aggr_conn->rx_tid[i];
if (rxtid->aggr && rxtid->hold_q) {
spin_lock_bh(&rxtid->lock);
for (j = 0; j < rxtid->hold_q_sz; j++) {
if (rxtid->hold_q[j].skb) {
rxtid->timer_mon = true;
spin_unlock_bh(&rxtid->lock);
if (j >= rxtid->hold_q_sz)
rxtid->timer_mon = false;
struct rxtid *rxtid;
rxtid = &aggr_conn->rx_tid[tid];
if (rxtid->aggr)
rxtid->aggr = false;
rxtid->timer_mon = false;
rxtid->win_sz = 0;
rxtid->seq_next = 0;
rxtid->hold_q_sz = 0;
kfree(rxtid->hold_q);
rxtid->hold_q = NULL;
struct rxtid *rxtid;
rxtid = &aggr_conn->rx_tid[tid];
if (rxtid->aggr)
rxtid->seq_next = seq_no;
rxtid->hold_q = kzalloc(hold_q_size, GFP_KERNEL);
if (!rxtid->hold_q)
rxtid->win_sz = win_sz;
rxtid->hold_q_sz = TID_WINDOW_SZ(win_sz);
if (!skb_queue_empty(&rxtid->q))
rxtid->aggr = true;
struct rxtid *rxtid;
rxtid = &aggr_conn->rx_tid[i];
rxtid->aggr = false;
rxtid->timer_mon = false;
skb_queue_head_init(&rxtid->q);
spin_lock_init(&rxtid->lock);
struct rxtid *rxtid;
rxtid = &aggr_conn->rx_tid[tid];
if (rxtid->aggr)
struct rxtid *rxtid, struct sk_buff *skb)