aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/wext.c
diff options
context:
space:
mode:
authorHolger Schurig <hs4233@mail.mn-solutions.de>2008-03-17 07:45:58 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-03-25 16:41:48 -0400
commitc49c3b77c8c611f562ca4e201d88d3e69465f928 (patch)
tree937308f8020b0e9437cdf8b9e8f6a43f10a26282 /drivers/net/wireless/libertas/wext.c
parentc97329e21fc487ebf251c920d46537ff5fb4d8a7 (diff)
libertas: convert GET_LOG to a direct command
Now uses __lbs_cmd() to get the "log" (it's actually more a snapshot of various counters, not a sequential log). Besides the "mechanical" convertion the patch add the following logical changes: * Removes the priv->logmsg variable, it was only used in one place anyway, also don't blindly get the counters when associating. Getting the counters then the user asks via WEXT for them is good enought. * don't set wstats.discard.fragment with log.rxfrag, because the latter is a counter for successfully received packets, not for fragmented packets. Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de> Acked-by: Dan Williams <dcbw@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
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 cded4bb6916..5ccb4e0c8d6 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;