Lines Matching refs:sinfo
638 struct station_info *sinfo = NULL; in sta_info_insert_finish() local
649 sinfo = kzalloc(sizeof(struct station_info), GFP_KERNEL); in sta_info_insert_finish()
650 if (!sinfo) { in sta_info_insert_finish()
688 sinfo->generation = local->sta_generation; in sta_info_insert_finish()
689 cfg80211_new_sta(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); in sta_info_insert_finish()
690 kfree(sinfo); in sta_info_insert_finish()
711 kfree(sinfo); in sta_info_insert_finish()
1054 struct station_info *sinfo; in __sta_info_destroy_part2() local
1097 sinfo = kzalloc(sizeof(*sinfo), GFP_KERNEL); in __sta_info_destroy_part2()
1098 if (sinfo) in __sta_info_destroy_part2()
1099 sta_set_sinfo(sta, sinfo, true); in __sta_info_destroy_part2()
1100 cfg80211_del_sta_sinfo(sdata->dev, sta->sta.addr, sinfo, GFP_KERNEL); in __sta_info_destroy_part2()
1101 kfree(sinfo); in __sta_info_destroy_part2()
2255 void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo, in sta_set_sinfo() argument
2266 sinfo->generation = sdata->local->sta_generation; in sta_set_sinfo()
2273 sinfo->rx_beacon = sdata->u.mgd.count_beacon_signal; in sta_set_sinfo()
2275 drv_sta_statistics(local, sdata, &sta->sta, sinfo); in sta_set_sinfo()
2277 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_INACTIVE_TIME) | in sta_set_sinfo()
2285 sinfo->beacon_loss_count = sdata->u.mgd.beacon_loss_count; in sta_set_sinfo()
2286 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_LOSS); in sta_set_sinfo()
2289 sinfo->connected_time = ktime_get_seconds() - sta->last_connected; in sta_set_sinfo()
2290 sinfo->assoc_at = sta->assoc_at; in sta_set_sinfo()
2291 sinfo->inactive_time = in sta_set_sinfo()
2294 if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_TX_BYTES64) | in sta_set_sinfo()
2296 sinfo->tx_bytes = 0; in sta_set_sinfo()
2298 sinfo->tx_bytes += sta->tx_stats.bytes[ac]; in sta_set_sinfo()
2299 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BYTES64); in sta_set_sinfo()
2302 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_PACKETS))) { in sta_set_sinfo()
2303 sinfo->tx_packets = 0; in sta_set_sinfo()
2305 sinfo->tx_packets += sta->tx_stats.packets[ac]; in sta_set_sinfo()
2306 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_PACKETS); in sta_set_sinfo()
2309 if (!(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_RX_BYTES64) | in sta_set_sinfo()
2312 sinfo->rx_bytes += sta_get_stats_bytes(&sta->rx_stats); in sta_set_sinfo()
2319 sinfo->rx_bytes += sta_get_stats_bytes(cpurxs); in sta_set_sinfo()
2323 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BYTES64); in sta_set_sinfo()
2326 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_PACKETS))) { in sta_set_sinfo()
2327 sinfo->rx_packets = sta->rx_stats.packets; in sta_set_sinfo()
2333 sinfo->rx_packets += cpurxs->packets; in sta_set_sinfo()
2336 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_PACKETS); in sta_set_sinfo()
2339 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_RETRIES))) { in sta_set_sinfo()
2340 sinfo->tx_retries = sta->status_stats.retry_count; in sta_set_sinfo()
2341 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_RETRIES); in sta_set_sinfo()
2344 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_FAILED))) { in sta_set_sinfo()
2345 sinfo->tx_failed = sta->status_stats.retry_failed; in sta_set_sinfo()
2346 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_FAILED); in sta_set_sinfo()
2349 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_DURATION))) { in sta_set_sinfo()
2351 sinfo->rx_duration += sta->airtime[ac].rx_airtime; in sta_set_sinfo()
2352 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_DURATION); in sta_set_sinfo()
2355 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_DURATION))) { in sta_set_sinfo()
2357 sinfo->tx_duration += sta->airtime[ac].tx_airtime; in sta_set_sinfo()
2358 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_DURATION); in sta_set_sinfo()
2361 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT))) { in sta_set_sinfo()
2362 sinfo->airtime_weight = sta->airtime_weight; in sta_set_sinfo()
2363 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_AIRTIME_WEIGHT); in sta_set_sinfo()
2366 sinfo->rx_dropped_misc = sta->rx_stats.dropped; in sta_set_sinfo()
2372 sinfo->rx_dropped_misc += cpurxs->dropped; in sta_set_sinfo()
2378 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_BEACON_RX) | in sta_set_sinfo()
2380 sinfo->rx_beacon_signal_avg = ieee80211_ave_rssi(&sdata->vif); in sta_set_sinfo()
2385 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL))) { in sta_set_sinfo()
2386 sinfo->signal = (s8)last_rxstats->last_signal; in sta_set_sinfo()
2387 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL); in sta_set_sinfo()
2391 !(sinfo->filled & BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG))) { in sta_set_sinfo()
2392 sinfo->signal_avg = in sta_set_sinfo()
2394 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_SIGNAL_AVG); in sta_set_sinfo()
2403 !(sinfo->filled & (BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL) | in sta_set_sinfo()
2405 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL); in sta_set_sinfo()
2407 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_CHAIN_SIGNAL_AVG); in sta_set_sinfo()
2409 sinfo->chains = last_rxstats->chains; in sta_set_sinfo()
2411 for (i = 0; i < ARRAY_SIZE(sinfo->chain_signal); i++) { in sta_set_sinfo()
2412 sinfo->chain_signal[i] = in sta_set_sinfo()
2414 sinfo->chain_signal_avg[i] = in sta_set_sinfo()
2419 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_TX_BITRATE))) { in sta_set_sinfo()
2421 &sinfo->txrate); in sta_set_sinfo()
2422 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_TX_BITRATE); in sta_set_sinfo()
2425 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_RX_BITRATE))) { in sta_set_sinfo()
2426 if (sta_set_rate_info_rx(sta, &sinfo->rxrate) == 0) in sta_set_sinfo()
2427 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_RX_BITRATE); in sta_set_sinfo()
2430 if (tidstats && !cfg80211_sinfo_alloc_tid_stats(sinfo, GFP_KERNEL)) { in sta_set_sinfo()
2432 sta_set_tidstats(sta, &sinfo->pertid[i], i); in sta_set_sinfo()
2437 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_LLID) | in sta_set_sinfo()
2446 sinfo->llid = sta->mesh->llid; in sta_set_sinfo()
2447 sinfo->plid = sta->mesh->plid; in sta_set_sinfo()
2448 sinfo->plink_state = sta->mesh->plink_state; in sta_set_sinfo()
2450 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_T_OFFSET); in sta_set_sinfo()
2451 sinfo->t_offset = sta->mesh->t_offset; in sta_set_sinfo()
2453 sinfo->local_pm = sta->mesh->local_pm; in sta_set_sinfo()
2454 sinfo->peer_pm = sta->mesh->peer_pm; in sta_set_sinfo()
2455 sinfo->nonpeer_pm = sta->mesh->nonpeer_pm; in sta_set_sinfo()
2456 sinfo->connected_to_gate = sta->mesh->connected_to_gate; in sta_set_sinfo()
2457 sinfo->connected_to_as = sta->mesh->connected_to_as; in sta_set_sinfo()
2461 sinfo->bss_param.flags = 0; in sta_set_sinfo()
2463 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_CTS_PROT; in sta_set_sinfo()
2465 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_PREAMBLE; in sta_set_sinfo()
2467 sinfo->bss_param.flags |= BSS_PARAM_FLAGS_SHORT_SLOT_TIME; in sta_set_sinfo()
2468 sinfo->bss_param.dtim_period = sdata->vif.bss_conf.dtim_period; in sta_set_sinfo()
2469 sinfo->bss_param.beacon_interval = sdata->vif.bss_conf.beacon_int; in sta_set_sinfo()
2471 sinfo->sta_flags.set = 0; in sta_set_sinfo()
2472 sinfo->sta_flags.mask = BIT(NL80211_STA_FLAG_AUTHORIZED) | in sta_set_sinfo()
2480 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHORIZED); in sta_set_sinfo()
2482 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_SHORT_PREAMBLE); in sta_set_sinfo()
2484 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_WME); in sta_set_sinfo()
2486 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_MFP); in sta_set_sinfo()
2488 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_AUTHENTICATED); in sta_set_sinfo()
2490 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_ASSOCIATED); in sta_set_sinfo()
2492 sinfo->sta_flags.set |= BIT(NL80211_STA_FLAG_TDLS_PEER); in sta_set_sinfo()
2497 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_EXPECTED_THROUGHPUT); in sta_set_sinfo()
2498 sinfo->expected_throughput = thr; in sta_set_sinfo()
2501 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL)) && in sta_set_sinfo()
2503 sinfo->ack_signal = sta->status_stats.last_ack_signal; in sta_set_sinfo()
2504 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL); in sta_set_sinfo()
2507 if (!(sinfo->filled & BIT_ULL(NL80211_STA_INFO_ACK_SIGNAL_AVG)) && in sta_set_sinfo()
2509 sinfo->avg_ack_signal = in sta_set_sinfo()
2512 sinfo->filled |= in sta_set_sinfo()
2517 sinfo->filled |= BIT_ULL(NL80211_STA_INFO_AIRTIME_LINK_METRIC); in sta_set_sinfo()
2518 sinfo->airtime_link_metric = in sta_set_sinfo()