Lines Matching refs:sta

47 					    struct sta_info *sta,  in ieee80211_handle_filtered_frame()  argument
71 info->control.vif = &sta->sdata->vif; in ieee80211_handle_filtered_frame()
76 sta->status_stats.filtered++; in ieee80211_handle_filtered_frame()
109 set_sta_flag(sta, WLAN_STA_CLEAR_PS_FILT); in ieee80211_handle_filtered_frame()
110 ieee80211_clear_fast_xmit(sta); in ieee80211_handle_filtered_frame()
146 if (test_sta_flag(sta, WLAN_STA_PS_STA) && in ieee80211_handle_filtered_frame()
147 skb_queue_len(&sta->tx_filtered[ac]) < STA_MAX_TX_BUFFER) { in ieee80211_handle_filtered_frame()
148 skb_queue_tail(&sta->tx_filtered[ac], skb); in ieee80211_handle_filtered_frame()
149 sta_info_recalc_tim(sta); in ieee80211_handle_filtered_frame()
158 if (!test_sta_flag(sta, WLAN_STA_PS_STA) && in ieee80211_handle_filtered_frame()
166 ps_dbg_ratelimited(sta->sdata, in ieee80211_handle_filtered_frame()
168 skb_queue_len(&sta->tx_filtered[ac]), in ieee80211_handle_filtered_frame()
169 !!test_sta_flag(sta, WLAN_STA_PS_STA), jiffies); in ieee80211_handle_filtered_frame()
173 static void ieee80211_check_pending_bar(struct sta_info *sta, u8 *addr, u8 tid) in ieee80211_check_pending_bar() argument
177 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_check_pending_bar()
182 ieee80211_send_bar(&sta->sdata->vif, addr, tid, tid_tx->failed_bar_ssn); in ieee80211_check_pending_bar()
185 static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb) in ieee80211_frame_acked() argument
188 struct ieee80211_local *local = sta->local; in ieee80211_frame_acked()
189 struct ieee80211_sub_if_data *sdata = sta->sdata; in ieee80211_frame_acked()
193 sta->status_stats.last_ack = jiffies; in ieee80211_frame_acked()
195 sta->status_stats.last_ack_signal = in ieee80211_frame_acked()
197 sta->status_stats.ack_signal_filled = true; in ieee80211_frame_acked()
198 ewma_avg_signal_add(&sta->status_stats.avg_ack_signal, in ieee80211_frame_acked()
208 ieee80211_check_pending_bar(sta, hdr->addr1, tid); in ieee80211_frame_acked()
243 sta->known_smps_mode = smps_mode; in ieee80211_frame_acked()
248 static void ieee80211_set_bar_pending(struct sta_info *sta, u8 tid, u16 ssn) in ieee80211_set_bar_pending() argument
252 tid_tx = rcu_dereference(sta->ampdu_mlme.tid_tx[tid]); in ieee80211_set_bar_pending()
572 static void ieee80211_lost_packet(struct sta_info *sta, in ieee80211_lost_packet() argument
578 if (ieee80211_hw_check(&sta->local->hw, REPORTS_LOW_ACK)) in ieee80211_lost_packet()
586 sta->status_stats.lost_packets++; in ieee80211_lost_packet()
587 if (!sta->sta.tdls && in ieee80211_lost_packet()
588 sta->status_stats.lost_packets < STA_LOST_PKT_THRESHOLD) in ieee80211_lost_packet()
597 if (sta->sta.tdls && in ieee80211_lost_packet()
598 (sta->status_stats.lost_packets < STA_LOST_TDLS_PKT_THRESHOLD || in ieee80211_lost_packet()
600 sta->status_stats.last_tdls_pkt_time + in ieee80211_lost_packet()
604 cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr, in ieee80211_lost_packet()
605 sta->status_stats.lost_packets, GFP_ATOMIC); in ieee80211_lost_packet()
606 sta->status_stats.lost_packets = 0; in ieee80211_lost_packet()
708 struct sta_info *sta; in __ieee80211_tx_status() local
724 if (status->sta) { in __ieee80211_tx_status()
725 sta = container_of(status->sta, struct sta_info, sta); in __ieee80211_tx_status()
726 shift = ieee80211_vif_get_shift(&sta->sdata->vif); in __ieee80211_tx_status()
729 clear_sta_flag(sta, WLAN_STA_SP); in __ieee80211_tx_status()
734 if (ieee80211_vif_is_mesh(&sta->sdata->vif) && in __ieee80211_tx_status()
737 ieee80211_get_qos_ctl(hdr), sta, true, acked); in __ieee80211_tx_status()
739 if (!acked && test_sta_flag(sta, WLAN_STA_PS_STA)) { in __ieee80211_tx_status()
744 ieee80211_handle_filtered_frame(local, sta, skb); in __ieee80211_tx_status()
751 sta->tx_stats.last_rate = in __ieee80211_tx_status()
763 ieee80211_send_bar(&sta->sdata->vif, hdr->addr1, in __ieee80211_tx_status()
788 ieee80211_set_bar_pending(sta, tid, ssn); in __ieee80211_tx_status()
793 ieee80211_handle_filtered_frame(local, sta, skb); in __ieee80211_tx_status()
797 sta->status_stats.retry_failed++; in __ieee80211_tx_status()
798 sta->status_stats.retry_count += retry_count; in __ieee80211_tx_status()
802 sta->status_stats.msdu_failed[tid]++; in __ieee80211_tx_status()
804 sta->status_stats.msdu_retries[tid] += in __ieee80211_tx_status()
810 if (ieee80211_vif_is_mesh(&sta->sdata->vif)) in __ieee80211_tx_status()
811 ieee80211s_update_metric(local, sta, status); in __ieee80211_tx_status()
814 ieee80211_frame_acked(sta, skb); in __ieee80211_tx_status()
816 if ((sta->sdata->vif.type == NL80211_IFTYPE_STATION) && in __ieee80211_tx_status()
818 ieee80211_sta_tx_notify(sta->sdata, (void *) skb->data, in __ieee80211_tx_status()
823 if (sta->status_stats.lost_packets) in __ieee80211_tx_status()
824 sta->status_stats.lost_packets = 0; in __ieee80211_tx_status()
827 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH)) in __ieee80211_tx_status()
828 sta->status_stats.last_tdls_pkt_time = in __ieee80211_tx_status()
831 ieee80211_lost_packet(sta, info); in __ieee80211_tx_status()
908 struct sta_info *sta; in ieee80211_tx_status() local
912 for_each_sta_info(local, hdr->addr1, sta, tmp) { in ieee80211_tx_status()
914 if (!ether_addr_equal(hdr->addr2, sta->sdata->vif.addr)) in ieee80211_tx_status()
917 status.sta = &sta->sta; in ieee80211_tx_status()
931 struct ieee80211_sta *pubsta = status->sta; in ieee80211_tx_status_ext()
939 if (!status->sta) in ieee80211_tx_status_ext()
950 struct sta_info *sta; in ieee80211_tx_status_ext() local
952 sta = container_of(pubsta, struct sta_info, sta); in ieee80211_tx_status_ext()
955 sta->status_stats.retry_failed++; in ieee80211_tx_status_ext()
956 sta->status_stats.retry_count += retry_count; in ieee80211_tx_status_ext()
959 sta->status_stats.last_ack = jiffies; in ieee80211_tx_status_ext()
961 if (sta->status_stats.lost_packets) in ieee80211_tx_status_ext()
962 sta->status_stats.lost_packets = 0; in ieee80211_tx_status_ext()
965 if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH)) in ieee80211_tx_status_ext()
966 sta->status_stats.last_tdls_pkt_time = jiffies; in ieee80211_tx_status_ext()
968 ieee80211_lost_packet(sta, info); in ieee80211_tx_status_ext()
972 if (ieee80211_vif_is_mesh(&sta->sdata->vif)) in ieee80211_tx_status_ext()
973 ieee80211s_update_metric(local, sta, status); in ieee80211_tx_status_ext()
992 struct sta_info *sta = container_of(pubsta, struct sta_info, sta); in ieee80211_report_low_ack() local
993 cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr, in ieee80211_report_low_ack()