Lines Matching refs:tid_tx

146 			     struct tid_ampdu_tx *tid_tx)  in ieee80211_assign_tid_tx()  argument
150 rcu_assign_pointer(sta->ampdu_mlme.tid_tx[tid], tid_tx); in ieee80211_assign_tid_tx()
243 struct tid_ampdu_tx *tid_tx, u16 tid) in __acquires()
251 if (WARN(!tid_tx, in __acquires()
256 if (!skb_queue_empty(&tid_tx->pending)) { in __acquires()
259 skb_queue_splice_tail_init(&tid_tx->pending, in __acquires()
273 struct tid_ampdu_tx *tid_tx; in ieee80211_remove_tid_tx() local
278 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_remove_tid_tx()
290 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_remove_tid_tx()
298 kfree_rcu(tid_tx, rcu_head); in ieee80211_remove_tid_tx()
305 struct tid_ampdu_tx *tid_tx; in ___ieee80211_stop_tx_ba_session() local
335 tid_tx = sta->ampdu_mlme.tid_start_tx[tid]; in ___ieee80211_stop_tx_ba_session()
336 kfree(tid_tx); in ___ieee80211_stop_tx_ba_session()
339 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ___ieee80211_stop_tx_ba_session()
340 if (!tid_tx) { in ___ieee80211_stop_tx_ba_session()
349 if (test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ___ieee80211_stop_tx_ba_session()
359 if (test_bit(HT_AGG_STATE_WANT_START, &tid_tx->state)) { in ___ieee80211_stop_tx_ba_session()
363 kfree_rcu(tid_tx, rcu_head); in ___ieee80211_stop_tx_ba_session()
367 set_bit(HT_AGG_STATE_STOPPING, &tid_tx->state); in ___ieee80211_stop_tx_ba_session()
374 del_timer_sync(&tid_tx->addba_resp_timer); in ___ieee80211_stop_tx_ba_session()
375 del_timer_sync(&tid_tx->session_timer); in ___ieee80211_stop_tx_ba_session()
382 clear_bit(HT_AGG_STATE_OPERATIONAL, &tid_tx->state); in ___ieee80211_stop_tx_ba_session()
399 tid_tx->stop_initiator = reason == AGG_STOP_PEER_REQUEST ? in ___ieee80211_stop_tx_ba_session()
402 tid_tx->tx_stop = reason == AGG_STOP_LOCAL_REQUEST; in ___ieee80211_stop_tx_ba_session()
434 struct tid_ampdu_tx *tid_tx = from_timer(tid_tx, t, addba_resp_timer); in sta_addba_resp_timer_expired() local
435 struct sta_info *sta = tid_tx->sta; in sta_addba_resp_timer_expired()
436 u8 tid = tid_tx->tid; in sta_addba_resp_timer_expired()
439 if (test_bit(HT_AGG_STATE_RESPONSE_RECEIVED, &tid_tx->state)) { in sta_addba_resp_timer_expired()
454 struct tid_ampdu_tx *tid_tx; in ieee80211_tx_ba_session_handle_start() local
468 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_tx_ba_session_handle_start()
475 clear_bit(HT_AGG_STATE_WANT_START, &tid_tx->state); in ieee80211_tx_ba_session_handle_start()
494 ieee80211_agg_splice_packets(sdata, tid_tx, tid); in ieee80211_tx_ba_session_handle_start()
501 kfree_rcu(tid_tx, rcu_head); in ieee80211_tx_ba_session_handle_start()
506 mod_timer(&tid_tx->addba_resp_timer, jiffies + ADDBA_RESP_INTERVAL); in ieee80211_tx_ba_session_handle_start()
529 tid_tx->dialog_token, params.ssn, in ieee80211_tx_ba_session_handle_start()
530 buf_size, tid_tx->timeout); in ieee80211_tx_ba_session_handle_start()
539 struct tid_ampdu_tx *tid_tx = from_timer(tid_tx, t, session_timer); in sta_tx_agg_session_timer_expired() local
540 struct sta_info *sta = tid_tx->sta; in sta_tx_agg_session_timer_expired()
541 u8 tid = tid_tx->tid; in sta_tx_agg_session_timer_expired()
544 if (test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in sta_tx_agg_session_timer_expired()
548 timeout = tid_tx->last_tx + TU_TO_JIFFIES(tid_tx->timeout); in sta_tx_agg_session_timer_expired()
550 mod_timer(&tid_tx->session_timer, timeout); in sta_tx_agg_session_timer_expired()
566 struct tid_ampdu_tx *tid_tx; in ieee80211_start_tx_ba_session() local
649 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_start_tx_ba_session()
651 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { in ieee80211_start_tx_ba_session()
660 tid_tx = kzalloc(sizeof(struct tid_ampdu_tx), GFP_ATOMIC); in ieee80211_start_tx_ba_session()
661 if (!tid_tx) { in ieee80211_start_tx_ba_session()
666 skb_queue_head_init(&tid_tx->pending); in ieee80211_start_tx_ba_session()
667 __set_bit(HT_AGG_STATE_WANT_START, &tid_tx->state); in ieee80211_start_tx_ba_session()
669 tid_tx->timeout = timeout; in ieee80211_start_tx_ba_session()
670 tid_tx->sta = sta; in ieee80211_start_tx_ba_session()
671 tid_tx->tid = tid; in ieee80211_start_tx_ba_session()
674 timer_setup(&tid_tx->addba_resp_timer, sta_addba_resp_timer_expired, 0); in ieee80211_start_tx_ba_session()
677 timer_setup(&tid_tx->session_timer, in ieee80211_start_tx_ba_session()
682 tid_tx->dialog_token = sta->ampdu_mlme.dialog_token_allocator; in ieee80211_start_tx_ba_session()
688 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx; in ieee80211_start_tx_ba_session()
702 struct tid_ampdu_tx *tid_tx; in ieee80211_agg_tx_operational() local
713 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_agg_tx_operational()
714 params.buf_size = tid_tx->buf_size; in ieee80211_agg_tx_operational()
715 params.amsdu = tid_tx->amsdu; in ieee80211_agg_tx_operational()
728 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_agg_tx_operational()
734 set_bit(HT_AGG_STATE_OPERATIONAL, &tid_tx->state); in ieee80211_agg_tx_operational()
743 struct tid_ampdu_tx *tid_tx) in ieee80211_start_tx_ba_cb() argument
748 if (WARN_ON(test_and_set_bit(HT_AGG_STATE_DRV_READY, &tid_tx->state))) in ieee80211_start_tx_ba_cb()
751 if (test_bit(HT_AGG_STATE_RESPONSE_RECEIVED, &tid_tx->state)) in ieee80211_start_tx_ba_cb()
759 struct tid_ampdu_tx *tid_tx; in ieee80211_lookup_tid_tx() local
773 tid_tx = rcu_dereference((*sta)->ampdu_mlme.tid_tx[tid]); in ieee80211_lookup_tid_tx()
775 if (WARN_ON(!tid_tx)) in ieee80211_lookup_tid_tx()
778 return tid_tx; in ieee80211_lookup_tid_tx()
787 struct tid_ampdu_tx *tid_tx; in ieee80211_start_tx_ba_cb_irqsafe() local
792 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_start_tx_ba_cb_irqsafe()
793 if (!tid_tx) in ieee80211_start_tx_ba_cb_irqsafe()
796 set_bit(HT_AGG_STATE_START_CB, &tid_tx->state); in ieee80211_start_tx_ba_cb_irqsafe()
822 struct tid_ampdu_tx *tid_tx; in ieee80211_stop_tx_ba_session() local
834 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_stop_tx_ba_session()
836 if (!tid_tx) { in ieee80211_stop_tx_ba_session()
844 if (test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ieee80211_stop_tx_ba_session()
850 set_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state); in ieee80211_stop_tx_ba_session()
860 struct tid_ampdu_tx *tid_tx) in ieee80211_stop_tx_ba_cb() argument
870 if (!test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ieee80211_stop_tx_ba_cb()
877 if (tid_tx->stop_initiator == WLAN_BACK_INITIATOR && tid_tx->tx_stop) in ieee80211_stop_tx_ba_cb()
896 struct tid_ampdu_tx *tid_tx; in ieee80211_stop_tx_ba_cb_irqsafe() local
901 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_stop_tx_ba_cb_irqsafe()
902 if (!tid_tx) in ieee80211_stop_tx_ba_cb_irqsafe()
905 set_bit(HT_AGG_STATE_STOP_CB, &tid_tx->state); in ieee80211_stop_tx_ba_cb_irqsafe()
918 struct tid_ampdu_tx *tid_tx; in ieee80211_process_addba_resp() local
935 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_process_addba_resp()
936 if (!tid_tx) in ieee80211_process_addba_resp()
939 if (mgmt->u.action.u.addba_resp.dialog_token != tid_tx->dialog_token) { in ieee80211_process_addba_resp()
945 del_timer_sync(&tid_tx->addba_resp_timer); in ieee80211_process_addba_resp()
955 if (test_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state) || in ieee80211_process_addba_resp()
956 test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ieee80211_process_addba_resp()
972 &tid_tx->state)) { in ieee80211_process_addba_resp()
977 tid_tx->buf_size = buf_size; in ieee80211_process_addba_resp()
978 tid_tx->amsdu = amsdu; in ieee80211_process_addba_resp()
980 if (test_bit(HT_AGG_STATE_DRV_READY, &tid_tx->state)) in ieee80211_process_addba_resp()
985 tid_tx->timeout = in ieee80211_process_addba_resp()
988 if (tid_tx->timeout) { in ieee80211_process_addba_resp()
989 mod_timer(&tid_tx->session_timer, in ieee80211_process_addba_resp()
990 TU_TO_EXP_TIME(tid_tx->timeout)); in ieee80211_process_addba_resp()
991 tid_tx->last_tx = jiffies; in ieee80211_process_addba_resp()