Lines Matching refs:tid_info
347 struct carl9170_sta_tid *tid_info, u16 seq) in carl9170_tx_shift_bm() argument
351 off = SEQ_DIFF(seq, tid_info->bsn); in carl9170_tx_shift_bm()
362 WARN_ON_ONCE(!test_and_clear_bit(off, tid_info->bitmap)); in carl9170_tx_shift_bm()
364 off = SEQ_DIFF(tid_info->snx, tid_info->bsn); in carl9170_tx_shift_bm()
368 if (!bitmap_empty(tid_info->bitmap, off)) in carl9170_tx_shift_bm()
369 off = find_first_bit(tid_info->bitmap, off); in carl9170_tx_shift_bm()
371 tid_info->bsn += off; in carl9170_tx_shift_bm()
372 tid_info->bsn &= 0x0fff; in carl9170_tx_shift_bm()
374 bitmap_shift_right(tid_info->bitmap, tid_info->bitmap, in carl9170_tx_shift_bm()
385 struct carl9170_sta_tid *tid_info; in carl9170_tx_status_process_ampdu() local
400 tid_info = rcu_dereference(sta_info->agg[tid]); in carl9170_tx_status_process_ampdu()
401 if (!tid_info) in carl9170_tx_status_process_ampdu()
404 spin_lock_bh(&tid_info->lock); in carl9170_tx_status_process_ampdu()
405 if (likely(tid_info->state >= CARL9170_TID_STATE_IDLE)) in carl9170_tx_status_process_ampdu()
406 carl9170_tx_shift_bm(ar, tid_info, get_seq_h(hdr)); in carl9170_tx_status_process_ampdu()
431 spin_unlock_bh(&tid_info->lock); in carl9170_tx_status_process_ampdu()
1131 struct carl9170_sta_tid *tid_info; in carl9170_tx_ampdu() local
1149 tid_info = rcu_dereference(ar->tx_ampdu_iter); in carl9170_tx_ampdu()
1150 if (WARN_ON_ONCE(!tid_info)) { in carl9170_tx_ampdu()
1156 list_for_each_entry_continue_rcu(tid_info, &ar->tx_ampdu_list, list) { in carl9170_tx_ampdu()
1159 if (tid_info->state < CARL9170_TID_STATE_PROGRESS) in carl9170_tx_ampdu()
1162 queue = TID_TO_WME_AC(tid_info->tid); in carl9170_tx_ampdu()
1164 spin_lock_bh(&tid_info->lock); in carl9170_tx_ampdu()
1165 if (tid_info->state != CARL9170_TID_STATE_XMIT) in carl9170_tx_ampdu()
1168 tid_info->counter++; in carl9170_tx_ampdu()
1169 first = skb_peek(&tid_info->queue); in carl9170_tx_ampdu()
1171 seq = tid_info->snx; in carl9170_tx_ampdu()
1174 tid_info->state = CARL9170_TID_STATE_IDLE; in carl9170_tx_ampdu()
1180 while ((skb = skb_peek(&tid_info->queue))) { in carl9170_tx_ampdu()
1186 if (unlikely(SEQ_DIFF(tid_info->snx, tid_info->bsn) >= in carl9170_tx_ampdu()
1187 (tid_info->max - 1))) in carl9170_tx_ampdu()
1191 carl9170_tx_get_rates(ar, tid_info->vif, in carl9170_tx_ampdu()
1192 tid_info->sta, first); in carl9170_tx_ampdu()
1199 tid_info->snx = seq = SEQ_NEXT(seq); in carl9170_tx_ampdu()
1200 __skb_unlink(skb, &tid_info->queue); in carl9170_tx_ampdu()
1208 if (skb_queue_empty(&tid_info->queue) || in carl9170_tx_ampdu()
1209 carl9170_get_seq(skb_peek(&tid_info->queue)) != in carl9170_tx_ampdu()
1210 tid_info->snx) { in carl9170_tx_ampdu()
1215 tid_info->state = CARL9170_TID_STATE_IDLE; in carl9170_tx_ampdu()
1220 spin_unlock_bh(&tid_info->lock); in carl9170_tx_ampdu()
1239 rcu_assign_pointer(ar->tx_ampdu_iter, tid_info); in carl9170_tx_ampdu()