Lines Matching refs:sinfo

819 	struct station_info *sinfo = NULL;  in sta_info_insert_finish()  local
830 sinfo = kzalloc(sizeof(struct station_info), GFP_KERNEL); in sta_info_insert_finish()
831 if (!sinfo) { in sta_info_insert_finish()
900 sinfo->generation = local->sta_generation; in sta_info_insert_finish()
901 cfg80211_new_sta(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); in sta_info_insert_finish()
902 kfree(sinfo); in sta_info_insert_finish()
925 kfree(sinfo); in sta_info_insert_finish()
1280 struct station_info *sinfo; in __sta_info_destroy_part2() local
1323 sinfo = kzalloc(sizeof(*sinfo), GFP_KERNEL); in __sta_info_destroy_part2()
1324 if (sinfo) in __sta_info_destroy_part2()
1325 sta_set_sinfo(sta, sinfo, true); in __sta_info_destroy_part2()
1326 cfg80211_del_sta_sinfo(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); in __sta_info_destroy_part2()
1327 kfree(sinfo); in __sta_info_destroy_part2()
2515 void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo, in sta_set_sinfo() argument
2526 sinfo->generation = sdata->local->sta_generation; in sta_set_sinfo()
2533 sinfo->rx_beacon = sdata->deflink.u.mgd.count_beacon_signal; in sta_set_sinfo()
2535 drv_sta_statistics(local, sdata, &sta->sta, sinfo); in sta_set_sinfo()
2536 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_INACTIVE_TIME) | in sta_set_sinfo()
2544 sinfo->beacon_loss_count = in sta_set_sinfo()
2546 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_LOSS); in sta_set_sinfo()
2549 sinfo->connected_time = ktime_get_seconds() - sta->last_connected; in sta_set_sinfo()
2550 sinfo->assoc_at = sta->assoc_at; in sta_set_sinfo()
2551 sinfo->inactive_time = in sta_set_sinfo()
2554 if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_TX_BYTES64) | in sta_set_sinfo()
2556 sinfo->tx_bytes = 0; in sta_set_sinfo()
2558 sinfo->tx_bytes += sta->deflink.tx_stats.bytes[ac]; in sta_set_sinfo()
2559 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BYTES64); in sta_set_sinfo()
2562 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_PACKETS))) { in sta_set_sinfo()
2563 sinfo->tx_packets = 0; in sta_set_sinfo()
2565 sinfo->tx_packets += sta->deflink.tx_stats.packets[ac]; in sta_set_sinfo()
2566 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS); in sta_set_sinfo()
2569 if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_RX_BYTES64) | in sta_set_sinfo()
2571 sinfo->rx_bytes += sta_get_stats_bytes(&sta->deflink.rx_stats); in sta_set_sinfo()
2579 sinfo->rx_bytes += sta_get_stats_bytes(cpurxs); in sta_set_sinfo()
2583 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BYTES64); in sta_set_sinfo()
2586 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_PACKETS))) { in sta_set_sinfo()
2587 sinfo->rx_packets = sta->deflink.rx_stats.packets; in sta_set_sinfo()
2594 sinfo->rx_packets += cpurxs->packets; in sta_set_sinfo()
2597 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS); in sta_set_sinfo()
2600 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_RETRIES))) { in sta_set_sinfo()
2601 sinfo->tx_retries = sta->deflink.status_stats.retry_count; in sta_set_sinfo()
2602 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_RETRIES); in sta_set_sinfo()
2605 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_FAILED))) { in sta_set_sinfo()
2606 sinfo->tx_failed = sta->deflink.status_stats.retry_failed; in sta_set_sinfo()
2607 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED); in sta_set_sinfo()
2610 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_DURATION))) { in sta_set_sinfo()
2612 sinfo->rx_duration += sta->airtime[ac].rx_airtime; in sta_set_sinfo()
2613 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_DURATION); in sta_set_sinfo()
2616 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_DURATION))) { in sta_set_sinfo()
2618 sinfo->tx_duration += sta->airtime[ac].tx_airtime; in sta_set_sinfo()
2619 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_DURATION); in sta_set_sinfo()
2622 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT))) { in sta_set_sinfo()
2623 sinfo->airtime_weight = sta->airtime_weight; in sta_set_sinfo()
2624 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT); in sta_set_sinfo()
2627 sinfo->rx_dropped_misc = sta->deflink.rx_stats.dropped; in sta_set_sinfo()
2633 sinfo->rx_dropped_misc += cpurxs->dropped; in sta_set_sinfo()
2639 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_RX) | in sta_set_sinfo()
2641 sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif); in sta_set_sinfo()
2646 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL))) { in sta_set_sinfo()
2647 sinfo->signal = (s8)last_rxstats->last_signal; in sta_set_sinfo()
2648 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); in sta_set_sinfo()
2652 !(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG))) { in sta_set_sinfo()
2653 sinfo->signal_avg = in sta_set_sinfo()
2655 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG); in sta_set_sinfo()
2664 !(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL) | in sta_set_sinfo()
2666 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL); in sta_set_sinfo()
2668 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG); in sta_set_sinfo()
2670 sinfo->chains = last_rxstats->chains; in sta_set_sinfo()
2672 for (i = 0; i < ARRAY_SIZE(sinfo->chain_signal); i++) { in sta_set_sinfo()
2673 sinfo->chain_signal[i] = in sta_set_sinfo()
2675 sinfo->chain_signal_avg[i] = in sta_set_sinfo()
2680 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_BITRATE)) && in sta_set_sinfo()
2683 &sinfo->txrate); in sta_set_sinfo()
2684 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE); in sta_set_sinfo()
2687 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_BITRATE)) && in sta_set_sinfo()
2689 if (sta_set_rate_info_rx(sta, &sinfo->rxrate) == 0) in sta_set_sinfo()
2690 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BITRATE); in sta_set_sinfo()
2693 if (tidstats && !cfg80211_sinfo_alloc_tid_stats(sinfo, GFP_KERNEL)) { in sta_set_sinfo()
2695 sta_set_tidstats(sta, &sinfo->pertid[i], i); in sta_set_sinfo()
2700 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_LLID) | in sta_set_sinfo()
2709 sinfo->llid = sta->mesh->llid; in sta_set_sinfo()
2710 sinfo->plid = sta->mesh->plid; in sta_set_sinfo()
2711 sinfo->plink_state = sta->mesh->plink_state; in sta_set_sinfo()
2713 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_T_OFFSET); in sta_set_sinfo()
2714 sinfo->t_offset = sta->mesh->t_offset; in sta_set_sinfo()
2716 sinfo->local_pm = sta->mesh->local_pm; in sta_set_sinfo()
2717 sinfo->peer_pm = sta->mesh->peer_pm; in sta_set_sinfo()
2718 sinfo->nonpeer_pm = sta->mesh->nonpeer_pm; in sta_set_sinfo()
2719 sinfo->connected_to_gate = sta->mesh->connected_to_gate; in sta_set_sinfo()
2720 sinfo->connected_to_as = sta->mesh->connected_to_as; in sta_set_sinfo()
2724 sinfo->bss_param.flags = 0; in sta_set_sinfo()
2726 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_CTS_PROT; in sta_set_sinfo()
2728 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE; in sta_set_sinfo()
2730 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME; in sta_set_sinfo()
2731 sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period; in sta_set_sinfo()
2732 sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int; in sta_set_sinfo()
2734 sinfo->sta_flags.set = 0; in sta_set_sinfo()
2735 sinfo->sta_flags.mask = BIT(NL80211_STA_FLAG_AUTHORIZED) | in sta_set_sinfo()
2743 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHORIZED); in sta_set_sinfo()
2745 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_SHORT_PREAMBLE); in sta_set_sinfo()
2747 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_WME); in sta_set_sinfo()
2749 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_MFP); in sta_set_sinfo()
2751 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHENTICATED); in sta_set_sinfo()
2753 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_ASSOCIATED); in sta_set_sinfo()
2755 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_TDLS_PEER); in sta_set_sinfo()
2760 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_EXPECTED_THROUGHPUT); in sta_set_sinfo()
2761 sinfo->expected_throughput = thr; in sta_set_sinfo()
2764 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL)) && in sta_set_sinfo()
2766 sinfo->ack_signal = sta->deflink.status_stats.last_ack_signal; in sta_set_sinfo()
2767 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL); in sta_set_sinfo()
2770 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL_AVG)) && in sta_set_sinfo()
2772 sinfo->avg_ack_signal = in sta_set_sinfo()
2775 sinfo->filled |= in sta_set_sinfo()
2780 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_AIRTIME_LINK_METRIC); in sta_set_sinfo()
2781 sinfo->airtime_link_metric = in sta_set_sinfo()