Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56ce3287 authored by Mingguang Xu's avatar Mingguang Xu Committed by Android (Google) Code Review
Browse files

Merge "WiFi: Get contention time stats from wifi_wmm_ac_stat in link_layer_stats" into sc-dev

parents 0fb5e3fc a6d0b847
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -1019,6 +1019,14 @@ bool convertLegacyLinkLayerStatsToHidl(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].mpdu_lost;
    hidl_stats->iface.V1_0.wmeBePktStats.retries =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].retries;
    hidl_stats->iface.wmeBeContentionTimeStats.contentionTimeMinInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_min;
    hidl_stats->iface.wmeBeContentionTimeStats.contentionTimeMaxInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_max;
    hidl_stats->iface.wmeBeContentionTimeStats.contentionTimeAvgInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_avg;
    hidl_stats->iface.wmeBeContentionTimeStats.contentionNumSamples =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples;
    hidl_stats->iface.V1_0.wmeBkPktStats.rxMpdu =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].rx_mpdu;
    hidl_stats->iface.V1_0.wmeBkPktStats.txMpdu =
@@ -1027,6 +1035,14 @@ bool convertLegacyLinkLayerStatsToHidl(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].mpdu_lost;
    hidl_stats->iface.V1_0.wmeBkPktStats.retries =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].retries;
    hidl_stats->iface.wmeBkContentionTimeStats.contentionTimeMinInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_min;
    hidl_stats->iface.wmeBkContentionTimeStats.contentionTimeMaxInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_max;
    hidl_stats->iface.wmeBkContentionTimeStats.contentionTimeAvgInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_avg;
    hidl_stats->iface.wmeBkContentionTimeStats.contentionNumSamples =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples;
    hidl_stats->iface.V1_0.wmeViPktStats.rxMpdu =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].rx_mpdu;
    hidl_stats->iface.V1_0.wmeViPktStats.txMpdu =
@@ -1035,6 +1051,14 @@ bool convertLegacyLinkLayerStatsToHidl(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].mpdu_lost;
    hidl_stats->iface.V1_0.wmeViPktStats.retries =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].retries;
    hidl_stats->iface.wmeViContentionTimeStats.contentionTimeMinInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_min;
    hidl_stats->iface.wmeViContentionTimeStats.contentionTimeMaxInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_max;
    hidl_stats->iface.wmeViContentionTimeStats.contentionTimeAvgInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_avg;
    hidl_stats->iface.wmeViContentionTimeStats.contentionNumSamples =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples;
    hidl_stats->iface.V1_0.wmeVoPktStats.rxMpdu =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].rx_mpdu;
    hidl_stats->iface.V1_0.wmeVoPktStats.txMpdu =
@@ -1043,6 +1067,14 @@ bool convertLegacyLinkLayerStatsToHidl(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].mpdu_lost;
    hidl_stats->iface.V1_0.wmeVoPktStats.retries =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].retries;
    hidl_stats->iface.wmeVoContentionTimeStats.contentionTimeMinInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_min;
    hidl_stats->iface.wmeVoContentionTimeStats.contentionTimeMaxInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_max;
    hidl_stats->iface.wmeVoContentionTimeStats.contentionTimeAvgInUsec =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_avg;
    hidl_stats->iface.wmeVoContentionTimeStats.contentionNumSamples =
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples;
    hidl_stats->iface.timeSliceDutyCycleInPercent =
        legacy_stats.iface.info.time_slicing_duty_cycle_percent;
    // radio legacy_stats conversion.
+56 −0
Original line number Diff line number Diff line
@@ -138,21 +138,41 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) {
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].tx_mpdu = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].mpdu_lost = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].retries = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_min = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_max = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_avg = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples =
        rand();

    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].rx_mpdu = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].tx_mpdu = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].mpdu_lost = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].retries = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_min = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_max = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_avg = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples =
        rand();

    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].rx_mpdu = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].tx_mpdu = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].mpdu_lost = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].retries = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_min = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_max = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_avg = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples =
        rand();

    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].rx_mpdu = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].tx_mpdu = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].mpdu_lost = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].retries = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_min = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_max = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_avg = rand();
    legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples =
        rand();

    legacy_stats.iface.info.time_slicing_duty_cycle_percent = rand();

@@ -197,6 +217,15 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) {
              converted.iface.V1_0.wmeBePktStats.lostMpdu);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].retries,
              converted.iface.V1_0.wmeBePktStats.retries);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_min,
              converted.iface.wmeBeContentionTimeStats.contentionTimeMinInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_max,
              converted.iface.wmeBeContentionTimeStats.contentionTimeMaxInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_time_avg,
              converted.iface.wmeBeContentionTimeStats.contentionTimeAvgInUsec);
    EXPECT_EQ(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BE].contention_num_samples,
        converted.iface.wmeBeContentionTimeStats.contentionNumSamples);

    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].rx_mpdu,
              converted.iface.V1_0.wmeBkPktStats.rxMpdu);
@@ -206,6 +235,15 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) {
              converted.iface.V1_0.wmeBkPktStats.lostMpdu);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].retries,
              converted.iface.V1_0.wmeBkPktStats.retries);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_min,
              converted.iface.wmeBkContentionTimeStats.contentionTimeMinInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_max,
              converted.iface.wmeBkContentionTimeStats.contentionTimeMaxInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_time_avg,
              converted.iface.wmeBkContentionTimeStats.contentionTimeAvgInUsec);
    EXPECT_EQ(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_BK].contention_num_samples,
        converted.iface.wmeBkContentionTimeStats.contentionNumSamples);

    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].rx_mpdu,
              converted.iface.V1_0.wmeViPktStats.rxMpdu);
@@ -215,6 +253,15 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) {
              converted.iface.V1_0.wmeViPktStats.lostMpdu);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].retries,
              converted.iface.V1_0.wmeViPktStats.retries);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_min,
              converted.iface.wmeViContentionTimeStats.contentionTimeMinInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_max,
              converted.iface.wmeViContentionTimeStats.contentionTimeMaxInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_time_avg,
              converted.iface.wmeViContentionTimeStats.contentionTimeAvgInUsec);
    EXPECT_EQ(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VI].contention_num_samples,
        converted.iface.wmeViContentionTimeStats.contentionNumSamples);

    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].rx_mpdu,
              converted.iface.V1_0.wmeVoPktStats.rxMpdu);
@@ -224,6 +271,15 @@ TEST_F(HidlStructUtilTest, canConvertLegacyLinkLayerStatsToHidl) {
              converted.iface.V1_0.wmeVoPktStats.lostMpdu);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].retries,
              converted.iface.V1_0.wmeVoPktStats.retries);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_min,
              converted.iface.wmeVoContentionTimeStats.contentionTimeMinInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_max,
              converted.iface.wmeVoContentionTimeStats.contentionTimeMaxInUsec);
    EXPECT_EQ(legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_time_avg,
              converted.iface.wmeVoContentionTimeStats.contentionTimeAvgInUsec);
    EXPECT_EQ(
        legacy_stats.iface.ac[legacy_hal::WIFI_AC_VO].contention_num_samples,
        converted.iface.wmeVoContentionTimeStats.contentionNumSamples);

    EXPECT_EQ(legacy_stats.iface.info.time_slicing_duty_cycle_percent,
              converted.iface.timeSliceDutyCycleInPercent);
+47 −0
Original line number Diff line number Diff line
@@ -134,6 +134,33 @@ struct NanCapabilities {
    bool instantCommunicationModeSupportFlag;
};

/**
 * Contention time statistics for different traffic categories.
 */
struct StaLinkLayerIfaceContentionTimeStats {
    /**
     * Data packet min contention time (usec).  It includes both the internal contention time
     * among different access categories within the chipset and the contention time for the medium.
     */
    uint64_t contentionTimeMinInUsec;

    /**
     * Data packet max contention time (usec).  It includes both the internal contention time
     * among different access categories within the chipset and the contention time for the medium.
     */
    uint64_t contentionTimeMaxInUsec;
    /**
     * Data packet average contention time (usec).  It includes both the internal contention time
     * among different access categories within the chipset and the contention time for the medium.
     */
    uint64_t contentionTimeAvgInUsec;

    /**
     * Number of data packets used for contention statistics.
     */
    uint64_t contentionNumSamples;
};

/**
 * Iface statistics for the current connection.
 */
@@ -150,6 +177,26 @@ struct StaLinkLayerIfaceStats {
     * If not using time slicing (i.e SCC or DBS), set to 100.
     */
    uint8_t timeSliceDutyCycleInPercent;

    /**
     * WME Best Effort (BE) Access Category (AC) contention time statistics.
     */
    StaLinkLayerIfaceContentionTimeStats wmeBeContentionTimeStats;

    /**
     * WME Background (BK) Access Category (AC) contention time statistics.
     */
    StaLinkLayerIfaceContentionTimeStats wmeBkContentionTimeStats;

    /**
     * WME Video (VI) Access Category (AC) contention time statistics.
     */
    StaLinkLayerIfaceContentionTimeStats wmeViContentionTimeStats;

    /**
     * WME Voice (VO) Access Category (AC) contention time statistics.
     */
    StaLinkLayerIfaceContentionTimeStats wmeVoContentionTimeStats;
};

/**