rtlwifi: Add TX/RX throughput statistics in period
authorPing-Ke Shih <pkshih@realtek.com>
Fri, 29 Sep 2017 19:47:56 +0000 (14:47 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 13 Oct 2017 09:43:40 +0000 (12:43 +0300)
The statistic variables use u64 to get higher precision.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
Cc: Birming Chiu <birming@realtek.com>
Cc: Shaofu <shaofu@realtek.com>
Cc: Steven Ting <steventing@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtlwifi/base.c
drivers/net/wireless/realtek/rtlwifi/wifi.h

index 081b950..e28261b 100644 (file)
@@ -1998,6 +1998,22 @@ label_lps_done:
        rtlpriv->link_info.tx_busy_traffic = tx_busy_traffic;
        rtlpriv->link_info.higher_busyrxtraffic = higher_busyrxtraffic;
 
+       rtlpriv->stats.txbytesunicast_inperiod =
+               rtlpriv->stats.txbytesunicast -
+               rtlpriv->stats.txbytesunicast_last;
+       rtlpriv->stats.rxbytesunicast_inperiod =
+               rtlpriv->stats.rxbytesunicast -
+               rtlpriv->stats.rxbytesunicast_last;
+       rtlpriv->stats.txbytesunicast_last = rtlpriv->stats.txbytesunicast;
+       rtlpriv->stats.rxbytesunicast_last = rtlpriv->stats.rxbytesunicast;
+
+       rtlpriv->stats.txbytesunicast_inperiod_tp =
+               (u32)(rtlpriv->stats.txbytesunicast_inperiod * 8 / 2 /
+               1024 / 1024);
+       rtlpriv->stats.rxbytesunicast_inperiod_tp =
+               (u32)(rtlpriv->stats.rxbytesunicast_inperiod * 8 / 2 /
+               1024 / 1024);
+
        /* <3> DM */
        if (!rtlpriv->cfg->mod_params->disable_watchdog)
                rtlpriv->cfg->ops->dm_watchdog(hw);
index 809648d..ceeca79 100644 (file)
@@ -1013,10 +1013,17 @@ struct init_gain {
 };
 
 struct wireless_stats {
-       unsigned long txbytesunicast;
-       unsigned long txbytesmulticast;
-       unsigned long txbytesbroadcast;
-       unsigned long rxbytesunicast;
+       u64 txbytesunicast;
+       u64 txbytesmulticast;
+       u64 txbytesbroadcast;
+       u64 rxbytesunicast;
+
+       u64 txbytesunicast_inperiod;
+       u64 rxbytesunicast_inperiod;
+       u32 txbytesunicast_inperiod_tp;
+       u32 rxbytesunicast_inperiod_tp;
+       u64 txbytesunicast_last;
+       u64 rxbytesunicast_last;
 
        long rx_snr_db[4];
        /*Correct smoothed ss in Dbm, only used