aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/wext.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/libertas/wext.c')
-rw-r--r--drivers/net/wireless/libertas/wext.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
index cded4bb69164..5ccb4e0c8d64 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -820,6 +820,7 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
820 int stats_valid = 0; 820 int stats_valid = 0;
821 u8 rssi; 821 u8 rssi;
822 u32 tx_retries; 822 u32 tx_retries;
823 struct cmd_ds_802_11_get_log log;
823 824
824 lbs_deb_enter(LBS_DEB_WEXT); 825 lbs_deb_enter(LBS_DEB_WEXT);
825 826
@@ -863,7 +864,11 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
863 /* Quality by TX errors */ 864 /* Quality by TX errors */
864 priv->wstats.discard.retries = priv->stats.tx_errors; 865 priv->wstats.discard.retries = priv->stats.tx_errors;
865 866
866 tx_retries = le32_to_cpu(priv->logmsg.retry); 867 memset(&log, 0, sizeof(log));
868 log.hdr.size = cpu_to_le16(sizeof(log));
869 lbs_cmd_with_response(priv, CMD_802_11_GET_LOG, &log);
870
871 tx_retries = le32_to_cpu(log.retry);
867 872
868 if (tx_retries > 75) 873 if (tx_retries > 75)
869 tx_qual = (90 - tx_retries) * POOR / 15; 874 tx_qual = (90 - tx_retries) * POOR / 15;
@@ -879,10 +884,9 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
879 (PERFECT - VERY_GOOD) / 50 + VERY_GOOD; 884 (PERFECT - VERY_GOOD) / 50 + VERY_GOOD;
880 quality = min(quality, tx_qual); 885 quality = min(quality, tx_qual);
881 886
882 priv->wstats.discard.code = le32_to_cpu(priv->logmsg.wepundecryptable); 887 priv->wstats.discard.code = le32_to_cpu(log.wepundecryptable);
883 priv->wstats.discard.fragment = le32_to_cpu(priv->logmsg.rxfrag);
884 priv->wstats.discard.retries = tx_retries; 888 priv->wstats.discard.retries = tx_retries;
885 priv->wstats.discard.misc = le32_to_cpu(priv->logmsg.ackfailure); 889 priv->wstats.discard.misc = le32_to_cpu(log.ackfailure);
886 890
887 /* Calculate quality */ 891 /* Calculate quality */
888 priv->wstats.qual.qual = min_t(u8, quality, 100); 892 priv->wstats.qual.qual = min_t(u8, quality, 100);
@@ -892,8 +896,6 @@ static struct iw_statistics *lbs_get_wireless_stats(struct net_device *dev)
892 /* update stats asynchronously for future calls */ 896 /* update stats asynchronously for future calls */
893 lbs_prepare_and_send_command(priv, CMD_802_11_RSSI, 0, 897 lbs_prepare_and_send_command(priv, CMD_802_11_RSSI, 0,
894 0, 0, NULL); 898 0, 0, NULL);
895 lbs_prepare_and_send_command(priv, CMD_802_11_GET_LOG, 0,
896 0, 0, NULL);
897out: 899out:
898 if (!stats_valid) { 900 if (!stats_valid) {
899 priv->wstats.miss.beacon = 0; 901 priv->wstats.miss.beacon = 0;