aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorAmitkumar Karwar <akarwar@marvell.com>2011-09-26 23:37:25 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-09-30 15:57:00 -0400
commit4ec6f9c0c9602bf8e6972eca470fbd1e99c5b222 (patch)
tree3d4905c2419c17f917602c288a56cca21075a1a3 /drivers/net/wireless
parentcbaaf592b742ccecfd066e796cdb1eda461f4db2 (diff)
mwifiex: fix Tx data rate display issue
"iw dev mlan0 link" shows wrong data rate, because data rate is not sent properly to cfg80211 stack. Also stack is not updated with mcs and Tx data flags information. Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/mwifiex/cfg80211.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index a7c773ebfe2f..e61a6c0dd0ff 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -543,12 +543,28 @@ mwifiex_dump_station_info(struct mwifiex_private *priv,
543 ret = -EFAULT; 543 ret = -EFAULT;
544 } 544 }
545 545
546 /*
547 * Bit 0 in tx_htinfo indicates that current Tx rate is 11n rate. Valid
548 * MCS index values for us are 0 to 7.
549 */
550 if ((priv->tx_htinfo & BIT(0)) && (priv->tx_rate < 8)) {
551 sinfo->txrate.mcs = priv->tx_rate;
552 sinfo->txrate.flags |= RATE_INFO_FLAGS_MCS;
553 /* 40MHz rate */
554 if (priv->tx_htinfo & BIT(1))
555 sinfo->txrate.flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
556 /* SGI enabled */
557 if (priv->tx_htinfo & BIT(2))
558 sinfo->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI;
559 }
560
546 sinfo->rx_bytes = priv->stats.rx_bytes; 561 sinfo->rx_bytes = priv->stats.rx_bytes;
547 sinfo->tx_bytes = priv->stats.tx_bytes; 562 sinfo->tx_bytes = priv->stats.tx_bytes;
548 sinfo->rx_packets = priv->stats.rx_packets; 563 sinfo->rx_packets = priv->stats.rx_packets;
549 sinfo->tx_packets = priv->stats.tx_packets; 564 sinfo->tx_packets = priv->stats.tx_packets;
550 sinfo->signal = priv->qual_level; 565 sinfo->signal = priv->qual_level;
551 sinfo->txrate.legacy = rate.rate; 566 /* bit rate is in 500 kb/s units. Convert it to 100kb/s units */
567 sinfo->txrate.legacy = rate.rate * 5;
552 568
553 return ret; 569 return ret;
554} 570}