brcmfmac: Fix station info rate information.
authorHante Meuleman <meuleman@broadcom.com>
Thu, 8 Oct 2015 18:33:16 +0000 (20:33 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 21 Oct 2015 07:56:46 +0000 (10:56 +0300)
Txrate and rxrate in get_station got assigned first with value
in kbps and then divided by 100 to get it in 100kbps unit. The
problem with that is that type of rate is u16 which resulted
in incorrect values for high data rate values.

Reviewed-by: Arend Van Spriel <arend@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c

index 2ee57c0415e3b5952c5747863cd7cc74eae2dfd9..73eddaddc6602e2c2d9cf11608683b862e469e93 100644 (file)
@@ -2478,13 +2478,13 @@ brcmf_cfg80211_get_station(struct wiphy *wiphy, struct net_device *ndev,
                sinfo->rx_packets += le32_to_cpu(sta_info_le.rx_mcast_pkts);
                if (sinfo->tx_packets) {
                        sinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
-                       sinfo->txrate.legacy = le32_to_cpu(sta_info_le.tx_rate);
-                       sinfo->txrate.legacy /= 100;
+                       sinfo->txrate.legacy =
+                               le32_to_cpu(sta_info_le.tx_rate) / 100;
                }
                if (sinfo->rx_packets) {
                        sinfo->filled |= BIT(NL80211_STA_INFO_RX_BITRATE);
-                       sinfo->rxrate.legacy = le32_to_cpu(sta_info_le.rx_rate);
-                       sinfo->rxrate.legacy /= 100;
+                       sinfo->rxrate.legacy =
+                               le32_to_cpu(sta_info_le.rx_rate) / 100;
                }
                if (le16_to_cpu(sta_info_le.ver) >= 4) {
                        sinfo->filled |= BIT(NL80211_STA_INFO_TX_BYTES);