Lines Matching refs:tid_tx

143 			     struct tid_ampdu_tx *tid_tx)  in ieee80211_assign_tid_tx()  argument
147 rcu_assign_pointer(sta->ampdu_mlme.tid_tx[tid], tid_tx); in ieee80211_assign_tid_tx()
242 struct tid_ampdu_tx *tid_tx, u16 tid) in __acquires()
250 if (WARN(!tid_tx, in __acquires()
255 if (!skb_queue_empty(&tid_tx->pending)) { in __acquires()
258 skb_queue_splice_tail_init(&tid_tx->pending, in __acquires()
272 struct tid_ampdu_tx *tid_tx; in ieee80211_remove_tid_tx() local
277 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_remove_tid_tx()
289 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_remove_tid_tx()
296 kfree_rcu(tid_tx, rcu_head); in ieee80211_remove_tid_tx()
303 struct tid_ampdu_tx *tid_tx; in ___ieee80211_stop_tx_ba_session() local
333 tid_tx = sta->ampdu_mlme.tid_start_tx[tid]; in ___ieee80211_stop_tx_ba_session()
334 kfree(tid_tx); in ___ieee80211_stop_tx_ba_session()
337 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ___ieee80211_stop_tx_ba_session()
338 if (!tid_tx) { in ___ieee80211_stop_tx_ba_session()
347 if (test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ___ieee80211_stop_tx_ba_session()
357 if (test_bit(HT_AGG_STATE_WANT_START, &tid_tx->state)) { in ___ieee80211_stop_tx_ba_session()
361 kfree_rcu(tid_tx, rcu_head); in ___ieee80211_stop_tx_ba_session()
365 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()
453 struct tid_ampdu_tx *tid_tx) in ieee80211_send_addba_with_timeout() argument
457 u8 tid = tid_tx->tid; in ieee80211_send_addba_with_timeout()
461 mod_timer(&tid_tx->addba_resp_timer, jiffies + ADDBA_RESP_INTERVAL); in ieee80211_send_addba_with_timeout()
484 tid_tx->dialog_token, tid_tx->ssn, in ieee80211_send_addba_with_timeout()
485 buf_size, tid_tx->timeout); in ieee80211_send_addba_with_timeout()
487 WARN_ON(test_and_set_bit(HT_AGG_STATE_SENT_ADDBA, &tid_tx->state)); in ieee80211_send_addba_with_timeout()
492 struct tid_ampdu_tx *tid_tx; in ieee80211_tx_ba_session_handle_start() local
505 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_tx_ba_session_handle_start()
512 clear_bit(HT_AGG_STATE_WANT_START, &tid_tx->state); in ieee80211_tx_ba_session_handle_start()
525 tid_tx->ssn = params.ssn; in ieee80211_tx_ba_session_handle_start()
534 set_bit(HT_AGG_STATE_DRV_READY, &tid_tx->state); in ieee80211_tx_ba_session_handle_start()
543 ieee80211_agg_splice_packets(sdata, tid_tx, tid); in ieee80211_tx_ba_session_handle_start()
550 kfree_rcu(tid_tx, rcu_head); in ieee80211_tx_ba_session_handle_start()
554 ieee80211_send_addba_with_timeout(sta, tid_tx); in ieee80211_tx_ba_session_handle_start()
563 struct tid_ampdu_tx *tid_tx = from_timer(tid_tx, t, session_timer); in sta_tx_agg_session_timer_expired() local
564 struct sta_info *sta = tid_tx->sta; in sta_tx_agg_session_timer_expired()
565 u8 tid = tid_tx->tid; in sta_tx_agg_session_timer_expired()
568 if (test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in sta_tx_agg_session_timer_expired()
572 timeout = tid_tx->last_tx + TU_TO_JIFFIES(tid_tx->timeout); in sta_tx_agg_session_timer_expired()
574 mod_timer(&tid_tx->session_timer, timeout); in sta_tx_agg_session_timer_expired()
590 struct tid_ampdu_tx *tid_tx; in ieee80211_start_tx_ba_session() local
682 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_start_tx_ba_session()
684 if (tid_tx || sta->ampdu_mlme.tid_start_tx[tid]) { in ieee80211_start_tx_ba_session()
693 tid_tx = kzalloc(sizeof(struct tid_ampdu_tx), GFP_ATOMIC); in ieee80211_start_tx_ba_session()
694 if (!tid_tx) { in ieee80211_start_tx_ba_session()
699 skb_queue_head_init(&tid_tx->pending); in ieee80211_start_tx_ba_session()
700 __set_bit(HT_AGG_STATE_WANT_START, &tid_tx->state); in ieee80211_start_tx_ba_session()
702 tid_tx->timeout = timeout; in ieee80211_start_tx_ba_session()
703 tid_tx->sta = sta; in ieee80211_start_tx_ba_session()
704 tid_tx->tid = tid; in ieee80211_start_tx_ba_session()
707 timer_setup(&tid_tx->addba_resp_timer, sta_addba_resp_timer_expired, 0); in ieee80211_start_tx_ba_session()
710 timer_setup(&tid_tx->session_timer, in ieee80211_start_tx_ba_session()
715 tid_tx->dialog_token = sta->ampdu_mlme.dialog_token_allocator; in ieee80211_start_tx_ba_session()
721 sta->ampdu_mlme.tid_start_tx[tid] = tid_tx; in ieee80211_start_tx_ba_session()
735 struct tid_ampdu_tx *tid_tx; in ieee80211_agg_tx_operational() local
746 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_agg_tx_operational()
747 params.buf_size = tid_tx->buf_size; in ieee80211_agg_tx_operational()
748 params.amsdu = tid_tx->amsdu; in ieee80211_agg_tx_operational()
761 ieee80211_agg_splice_packets(sta->sdata, tid_tx, tid); in ieee80211_agg_tx_operational()
767 set_bit(HT_AGG_STATE_OPERATIONAL, &tid_tx->state); in ieee80211_agg_tx_operational()
776 struct tid_ampdu_tx *tid_tx) in ieee80211_start_tx_ba_cb() argument
781 if (WARN_ON(test_and_set_bit(HT_AGG_STATE_DRV_READY, &tid_tx->state))) in ieee80211_start_tx_ba_cb()
784 if (!test_bit(HT_AGG_STATE_SENT_ADDBA, &tid_tx->state)) { in ieee80211_start_tx_ba_cb()
785 ieee80211_send_addba_with_timeout(sta, tid_tx); in ieee80211_start_tx_ba_cb()
790 if (test_bit(HT_AGG_STATE_RESPONSE_RECEIVED, &tid_tx->state)) in ieee80211_start_tx_ba_cb()
798 struct tid_ampdu_tx *tid_tx; in ieee80211_lookup_tid_tx() local
812 tid_tx = rcu_dereference((*sta)->ampdu_mlme.tid_tx[tid]); in ieee80211_lookup_tid_tx()
814 if (WARN_ON(!tid_tx)) in ieee80211_lookup_tid_tx()
817 return tid_tx; in ieee80211_lookup_tid_tx()
826 struct tid_ampdu_tx *tid_tx; in ieee80211_start_tx_ba_cb_irqsafe() local
831 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_start_tx_ba_cb_irqsafe()
832 if (!tid_tx) in ieee80211_start_tx_ba_cb_irqsafe()
835 set_bit(HT_AGG_STATE_START_CB, &tid_tx->state); in ieee80211_start_tx_ba_cb_irqsafe()
861 struct tid_ampdu_tx *tid_tx; in ieee80211_stop_tx_ba_session() local
873 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_stop_tx_ba_session()
875 if (!tid_tx) { in ieee80211_stop_tx_ba_session()
883 if (test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ieee80211_stop_tx_ba_session()
889 set_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state); in ieee80211_stop_tx_ba_session()
899 struct tid_ampdu_tx *tid_tx) in ieee80211_stop_tx_ba_cb() argument
910 if (!test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ieee80211_stop_tx_ba_cb()
917 if (tid_tx->stop_initiator == WLAN_BACK_INITIATOR && tid_tx->tx_stop) in ieee80211_stop_tx_ba_cb()
940 struct tid_ampdu_tx *tid_tx; in ieee80211_stop_tx_ba_cb_irqsafe() local
945 tid_tx = ieee80211_lookup_tid_tx(sdata, ra, tid, &sta); in ieee80211_stop_tx_ba_cb_irqsafe()
946 if (!tid_tx) in ieee80211_stop_tx_ba_cb_irqsafe()
949 set_bit(HT_AGG_STATE_STOP_CB, &tid_tx->state); in ieee80211_stop_tx_ba_cb_irqsafe()
962 struct tid_ampdu_tx *tid_tx; in ieee80211_process_addba_resp() local
979 tid_tx = rcu_dereference_protected_tid_tx(sta, tid); in ieee80211_process_addba_resp()
980 if (!tid_tx) in ieee80211_process_addba_resp()
983 if (mgmt->u.action.u.addba_resp.dialog_token != tid_tx->dialog_token) { in ieee80211_process_addba_resp()
989 del_timer_sync(&tid_tx->addba_resp_timer); in ieee80211_process_addba_resp()
999 if (test_bit(HT_AGG_STATE_WANT_STOP, &tid_tx->state) || in ieee80211_process_addba_resp()
1000 test_bit(HT_AGG_STATE_STOPPING, &tid_tx->state)) { in ieee80211_process_addba_resp()
1016 &tid_tx->state)) { in ieee80211_process_addba_resp()
1021 tid_tx->buf_size = buf_size; in ieee80211_process_addba_resp()
1022 tid_tx->amsdu = amsdu; in ieee80211_process_addba_resp()
1024 if (test_bit(HT_AGG_STATE_DRV_READY, &tid_tx->state)) in ieee80211_process_addba_resp()
1029 tid_tx->timeout = in ieee80211_process_addba_resp()
1032 if (tid_tx->timeout) { in ieee80211_process_addba_resp()
1033 mod_timer(&tid_tx->session_timer, in ieee80211_process_addba_resp()
1034 TU_TO_EXP_TIME(tid_tx->timeout)); in ieee80211_process_addba_resp()
1035 tid_tx->last_tx = jiffies; in ieee80211_process_addba_resp()