Loading wifi/1.0/default/hidl_struct_util.cpp +11 −5 Original line number Diff line number Diff line Loading @@ -706,11 +706,17 @@ bool convertLegacyLinkLayerStatsToHidl( hidl_stats->iface.wmeVoPktStats.retries = legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].retries; // radio legacy_stats conversion. hidl_stats->radio.onTimeInMs = legacy_stats.radio.on_time; hidl_stats->radio.txTimeInMs = legacy_stats.radio.tx_time; hidl_stats->radio.rxTimeInMs = legacy_stats.radio.rx_time; hidl_stats->radio.onTimeInMsForScan = legacy_stats.radio.on_time_scan; hidl_stats->radio.txTimeInMsPerLevel = legacy_stats.radio_tx_time_per_levels; std::vector<StaLinkLayerRadioStats> hidl_radios_stats; for (const auto& legacy_radio_stats : legacy_stats.radios) { StaLinkLayerRadioStats hidl_radio_stats; hidl_radio_stats.onTimeInMs = legacy_radio_stats.stats.on_time; hidl_radio_stats.txTimeInMs = legacy_radio_stats.stats.tx_time; hidl_radio_stats.rxTimeInMs = legacy_radio_stats.stats.rx_time; hidl_radio_stats.onTimeInMsForScan = legacy_radio_stats.stats.on_time_scan; hidl_radio_stats.txTimeInMsPerLevel = legacy_radio_stats.tx_time_per_levels; hidl_radios_stats.push_back(hidl_radio_stats); } hidl_stats->radios = hidl_radios_stats; // Timestamp in the HAL wrapper here since it's not provided in the legacy // HAL API. hidl_stats->timeStampInMs = uptimeMillis(); Loading wifi/1.0/default/wifi_legacy_hal.cpp +31 −27 Original line number Diff line number Diff line Loading @@ -601,8 +601,8 @@ std::pair<wifi_error, LinkLayerStats> WifiLegacyHal::getLinkLayerStats() { LinkLayerStats link_stats{}; LinkLayerStats* link_stats_ptr = &link_stats; on_link_layer_stats_result_internal_callback = [&link_stats_ptr]( wifi_request_id /* id */, on_link_layer_stats_result_internal_callback = [&link_stats_ptr](wifi_request_id /* id */, wifi_iface_stat* iface_stats_ptr, int num_radios, wifi_radio_stat* radio_stats_ptr) { Loading @@ -612,20 +612,24 @@ std::pair<wifi_error, LinkLayerStats> WifiLegacyHal::getLinkLayerStats() { } else { LOG(ERROR) << "Invalid iface stats in link layer stats"; } if (num_radios == 1 && radio_stats_ptr != nullptr) { link_stats_ptr->radio = *radio_stats_ptr; // Copy over the tx level array to the separate vector. if (radio_stats_ptr->num_tx_levels > 0 && radio_stats_ptr->tx_time_per_levels != nullptr) { link_stats_ptr->radio_tx_time_per_levels.assign( radio_stats_ptr->tx_time_per_levels, radio_stats_ptr->tx_time_per_levels + radio_stats_ptr->num_tx_levels); } link_stats_ptr->radio.num_tx_levels = 0; link_stats_ptr->radio.tx_time_per_levels = nullptr; } else { if (num_radios <= 0 || radio_stats_ptr == nullptr) { LOG(ERROR) << "Invalid radio stats in link layer stats"; return; } for (int i = 0; i < num_radios; i++) { LinkLayerRadioStats radio; radio.stats = radio_stats_ptr[i]; // Copy over the tx level array to the separate vector. if (radio_stats_ptr[i].num_tx_levels > 0 && radio_stats_ptr[i].tx_time_per_levels != nullptr) { radio.tx_time_per_levels.assign( radio_stats_ptr[i].tx_time_per_levels, radio_stats_ptr[i].tx_time_per_levels + radio_stats_ptr[i].num_tx_levels); } radio.stats.num_tx_levels = 0; radio.stats.tx_time_per_levels = nullptr; link_stats_ptr->radios.push_back(radio); } }; Loading wifi/1.0/default/wifi_legacy_hal.h +6 −2 Original line number Diff line number Diff line Loading @@ -49,10 +49,14 @@ struct PacketFilterCapabilities { // The |wifi_radio_stat.tx_time_per_levels| stats is provided as a pointer in // |wifi_radio_stat| structure in the legacy HAL API. Separate that out // into a separate return element to avoid passing pointers around. struct LinkLayerRadioStats { wifi_radio_stat stats; std::vector<uint32_t> tx_time_per_levels; }; struct LinkLayerStats { wifi_iface_stat iface; wifi_radio_stat radio; std::vector<uint32_t> radio_tx_time_per_levels; std::vector<LinkLayerRadioStats> radios; }; #pragma GCC diagnostic pop Loading wifi/1.0/types.hal +2 −2 Original line number Diff line number Diff line Loading @@ -143,7 +143,7 @@ typedef MacAddress Bssid; /** * TimeStamp in milliseconds (ms). */ typedef uint32_t TimeStampInMs; typedef uint64_t TimeStampInMs; /** * TimeStamp in microseconds (us). Loading Loading @@ -478,7 +478,7 @@ struct StaLinkLayerRadioStats { */ struct StaLinkLayerStats { StaLinkLayerIfaceStats iface; StaLinkLayerRadioStats radio; vec<StaLinkLayerRadioStats> radios; /** * TimeStamp for each stats sample. * This is the absolute milliseconds from boot when these stats were Loading Loading
wifi/1.0/default/hidl_struct_util.cpp +11 −5 Original line number Diff line number Diff line Loading @@ -706,11 +706,17 @@ bool convertLegacyLinkLayerStatsToHidl( hidl_stats->iface.wmeVoPktStats.retries = legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].retries; // radio legacy_stats conversion. hidl_stats->radio.onTimeInMs = legacy_stats.radio.on_time; hidl_stats->radio.txTimeInMs = legacy_stats.radio.tx_time; hidl_stats->radio.rxTimeInMs = legacy_stats.radio.rx_time; hidl_stats->radio.onTimeInMsForScan = legacy_stats.radio.on_time_scan; hidl_stats->radio.txTimeInMsPerLevel = legacy_stats.radio_tx_time_per_levels; std::vector<StaLinkLayerRadioStats> hidl_radios_stats; for (const auto& legacy_radio_stats : legacy_stats.radios) { StaLinkLayerRadioStats hidl_radio_stats; hidl_radio_stats.onTimeInMs = legacy_radio_stats.stats.on_time; hidl_radio_stats.txTimeInMs = legacy_radio_stats.stats.tx_time; hidl_radio_stats.rxTimeInMs = legacy_radio_stats.stats.rx_time; hidl_radio_stats.onTimeInMsForScan = legacy_radio_stats.stats.on_time_scan; hidl_radio_stats.txTimeInMsPerLevel = legacy_radio_stats.tx_time_per_levels; hidl_radios_stats.push_back(hidl_radio_stats); } hidl_stats->radios = hidl_radios_stats; // Timestamp in the HAL wrapper here since it's not provided in the legacy // HAL API. hidl_stats->timeStampInMs = uptimeMillis(); Loading
wifi/1.0/default/wifi_legacy_hal.cpp +31 −27 Original line number Diff line number Diff line Loading @@ -601,8 +601,8 @@ std::pair<wifi_error, LinkLayerStats> WifiLegacyHal::getLinkLayerStats() { LinkLayerStats link_stats{}; LinkLayerStats* link_stats_ptr = &link_stats; on_link_layer_stats_result_internal_callback = [&link_stats_ptr]( wifi_request_id /* id */, on_link_layer_stats_result_internal_callback = [&link_stats_ptr](wifi_request_id /* id */, wifi_iface_stat* iface_stats_ptr, int num_radios, wifi_radio_stat* radio_stats_ptr) { Loading @@ -612,20 +612,24 @@ std::pair<wifi_error, LinkLayerStats> WifiLegacyHal::getLinkLayerStats() { } else { LOG(ERROR) << "Invalid iface stats in link layer stats"; } if (num_radios == 1 && radio_stats_ptr != nullptr) { link_stats_ptr->radio = *radio_stats_ptr; // Copy over the tx level array to the separate vector. if (radio_stats_ptr->num_tx_levels > 0 && radio_stats_ptr->tx_time_per_levels != nullptr) { link_stats_ptr->radio_tx_time_per_levels.assign( radio_stats_ptr->tx_time_per_levels, radio_stats_ptr->tx_time_per_levels + radio_stats_ptr->num_tx_levels); } link_stats_ptr->radio.num_tx_levels = 0; link_stats_ptr->radio.tx_time_per_levels = nullptr; } else { if (num_radios <= 0 || radio_stats_ptr == nullptr) { LOG(ERROR) << "Invalid radio stats in link layer stats"; return; } for (int i = 0; i < num_radios; i++) { LinkLayerRadioStats radio; radio.stats = radio_stats_ptr[i]; // Copy over the tx level array to the separate vector. if (radio_stats_ptr[i].num_tx_levels > 0 && radio_stats_ptr[i].tx_time_per_levels != nullptr) { radio.tx_time_per_levels.assign( radio_stats_ptr[i].tx_time_per_levels, radio_stats_ptr[i].tx_time_per_levels + radio_stats_ptr[i].num_tx_levels); } radio.stats.num_tx_levels = 0; radio.stats.tx_time_per_levels = nullptr; link_stats_ptr->radios.push_back(radio); } }; Loading
wifi/1.0/default/wifi_legacy_hal.h +6 −2 Original line number Diff line number Diff line Loading @@ -49,10 +49,14 @@ struct PacketFilterCapabilities { // The |wifi_radio_stat.tx_time_per_levels| stats is provided as a pointer in // |wifi_radio_stat| structure in the legacy HAL API. Separate that out // into a separate return element to avoid passing pointers around. struct LinkLayerRadioStats { wifi_radio_stat stats; std::vector<uint32_t> tx_time_per_levels; }; struct LinkLayerStats { wifi_iface_stat iface; wifi_radio_stat radio; std::vector<uint32_t> radio_tx_time_per_levels; std::vector<LinkLayerRadioStats> radios; }; #pragma GCC diagnostic pop Loading
wifi/1.0/types.hal +2 −2 Original line number Diff line number Diff line Loading @@ -143,7 +143,7 @@ typedef MacAddress Bssid; /** * TimeStamp in milliseconds (ms). */ typedef uint32_t TimeStampInMs; typedef uint64_t TimeStampInMs; /** * TimeStamp in microseconds (us). Loading Loading @@ -478,7 +478,7 @@ struct StaLinkLayerRadioStats { */ struct StaLinkLayerStats { StaLinkLayerIfaceStats iface; StaLinkLayerRadioStats radio; vec<StaLinkLayerRadioStats> radios; /** * TimeStamp for each stats sample. * This is the absolute milliseconds from boot when these stats were Loading