Lines Matching refs:sta
47 struct sta_info *sta, in ieee80211_handle_filtered_frame() argument
65 info->control.vif = &sta->sdata->vif; in ieee80211_handle_filtered_frame()
70 sta->status_stats.filtered++; in ieee80211_handle_filtered_frame()
103 set_sta_flag(sta, WLAN_STA_CLEAR_PS_FILT); in ieee80211_handle_filtered_frame()
104 ieee80211_clear_fast_xmit(sta); in ieee80211_handle_filtered_frame()
140 if (test_sta_flag(sta, WLAN_STA_PS_STA) && in ieee80211_handle_filtered_frame()
141 skb_queue_len(&sta->tx_filtered[ac]) < STA_MAX_TX_BUFFER) { in ieee80211_handle_filtered_frame()
142 skb_queue_tail(&sta->tx_filtered[ac], skb); in ieee80211_handle_filtered_frame()
143 sta_info_recalc_tim(sta); in ieee80211_handle_filtered_frame()
152 if (!test_sta_flag(sta, WLAN_STA_PS_STA) && in ieee80211_handle_filtered_frame()
160 ps_dbg_ratelimited(sta->sdata, in ieee80211_handle_filtered_frame()
162 skb_queue_len(&sta->tx_filtered[ac]), in ieee80211_handle_filtered_frame()
163 !!test_sta_flag(sta, WLAN_STA_PS_STA), jiffies); in ieee80211_handle_filtered_frame()
167 static void ieee80211_check_pending_bar(struct sta_info *sta, u8 *addr, u8 tid) in ieee80211_check_pending_bar() argument
171 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_check_pending_bar()
176 ieee80211_send_bar(&sta->sdata->vif, addr, tid, tid_tx->failed_bar_ssn); in ieee80211_check_pending_bar()
179 static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb) in ieee80211_frame_acked() argument
182 struct ieee80211_local *local = sta->local; in ieee80211_frame_acked()
183 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_frame_acked()
186 sta->rx_stats.last_rx = jiffies; in ieee80211_frame_acked()
193 ieee80211_check_pending_bar(sta, hdr->addr1, tid); in ieee80211_frame_acked()
227 sta->known_smps_mode = smps_mode; in ieee80211_frame_acked()
232 static void ieee80211_set_bar_pending(struct sta_info *sta, u8 tid, u16 ssn) in ieee80211_set_bar_pending() argument
236 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_set_bar_pending()
552 static void ieee80211_lost_packet(struct sta_info *sta, in ieee80211_lost_packet() argument
560 sta->status_stats.lost_packets++; in ieee80211_lost_packet()
561 if (!sta->sta.tdls && in ieee80211_lost_packet()
562 sta->status_stats.lost_packets < STA_LOST_PKT_THRESHOLD) in ieee80211_lost_packet()
571 if (sta->sta.tdls && in ieee80211_lost_packet()
572 (sta->status_stats.lost_packets < STA_LOST_TDLS_PKT_THRESHOLD || in ieee80211_lost_packet()
574 sta->status_stats.last_tdls_pkt_time + in ieee80211_lost_packet()
578 cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr, in ieee80211_lost_packet()
579 sta->status_stats.lost_packets, GFP_ATOMIC); in ieee80211_lost_packet()
580 sta->status_stats.lost_packets = 0; in ieee80211_lost_packet()
636 struct sta_info *sta; in ieee80211_tx_status_noskb() local
638 sta = container_of(pubsta, struct sta_info, sta); in ieee80211_tx_status_noskb()
641 sta->status_stats.retry_failed++; in ieee80211_tx_status_noskb()
642 sta->status_stats.retry_count += retry_count; in ieee80211_tx_status_noskb()
645 sta->rx_stats.last_rx = jiffies; in ieee80211_tx_status_noskb()
647 if (sta->status_stats.lost_packets) in ieee80211_tx_status_noskb()
648 sta->status_stats.lost_packets = 0; in ieee80211_tx_status_noskb()
651 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH)) in ieee80211_tx_status_noskb()
652 sta->status_stats.last_tdls_pkt_time = jiffies; in ieee80211_tx_status_noskb()
654 ieee80211_lost_packet(sta, info); in ieee80211_tx_status_noskb()
657 rate_control_tx_status_noskb(local, sband, sta, info); in ieee80211_tx_status_noskb()
738 struct sta_info *sta; in ieee80211_tx_status() local
758 for_each_sta_info(local, tbl, hdr->addr1, sta, tmp) { in ieee80211_tx_status()
760 if (!ether_addr_equal(hdr->addr2, sta->sdata->vif.addr)) in ieee80211_tx_status()
763 shift = ieee80211_vif_get_shift(&sta->sdata->vif); in ieee80211_tx_status()
766 clear_sta_flag(sta, WLAN_STA_SP); in ieee80211_tx_status()
769 if (!acked && test_sta_flag(sta, WLAN_STA_PS_STA)) { in ieee80211_tx_status()
774 ieee80211_handle_filtered_frame(local, sta, skb); in ieee80211_tx_status()
780 if (ieee80211_vif_is_mesh(&sta->sdata->vif) && in ieee80211_tx_status()
784 sta, true, acked); in ieee80211_tx_status()
789 sta->tx_stats.last_rate = in ieee80211_tx_status()
801 ieee80211_send_bar(&sta->sdata->vif, hdr->addr1, in ieee80211_tx_status()
826 ieee80211_set_bar_pending(sta, tid, ssn); in ieee80211_tx_status()
831 ieee80211_handle_filtered_frame(local, sta, skb); in ieee80211_tx_status()
836 sta->status_stats.retry_failed++; in ieee80211_tx_status()
837 sta->status_stats.retry_count += retry_count; in ieee80211_tx_status()
841 sta->status_stats.msdu_failed[tid]++; in ieee80211_tx_status()
843 sta->status_stats.msdu_retries[tid] += in ieee80211_tx_status()
848 rate_control_tx_status(local, sband, sta, skb); in ieee80211_tx_status()
849 if (ieee80211_vif_is_mesh(&sta->sdata->vif)) in ieee80211_tx_status()
850 ieee80211s_update_metric(local, sta, skb); in ieee80211_tx_status()
853 ieee80211_frame_acked(sta, skb); in ieee80211_tx_status()
855 if ((sta->sdata->vif.type == NL80211_IFTYPE_STATION) && in ieee80211_tx_status()
857 ieee80211_sta_tx_notify(sta->sdata, (void *) skb->data, in ieee80211_tx_status()
862 if (sta->status_stats.lost_packets) in ieee80211_tx_status()
863 sta->status_stats.lost_packets = 0; in ieee80211_tx_status()
866 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH)) in ieee80211_tx_status()
867 sta->status_stats.last_tdls_pkt_time = in ieee80211_tx_status()
870 ieee80211_lost_packet(sta, info); in ieee80211_tx_status()
945 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); in ieee80211_report_low_ack() local
946 cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr, in ieee80211_report_low_ack()