* [PATCH] mac80211: calculate wstats_flags on the fly
@ 2009-02-08 13:32 Johannes Berg
0 siblings, 0 replies; only message in thread
From: Johannes Berg @ 2009-02-08 13:32 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
Just to make wext.c more self-contained.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
net/mac80211/ieee80211_i.h | 1 -
net/mac80211/main.c | 8 --------
net/mac80211/wext.c | 21 ++++++++++++++++++---
3 files changed, 18 insertions(+), 12 deletions(-)
--- wireless-testing.orig/net/mac80211/ieee80211_i.h 2009-02-08 13:21:16.000000000 +0100
+++ wireless-testing/net/mac80211/ieee80211_i.h 2009-02-08 13:21:18.000000000 +0100
@@ -596,7 +596,6 @@ struct ieee80211_local {
int fif_fcsfail, fif_plcpfail, fif_control, fif_other_bss;
unsigned int filter_flags; /* FIF_* */
struct iw_statistics wstats;
- u8 wstats_flags;
bool tim_in_locked_section; /* see ieee80211_beacon_get() */
int tx_headroom; /* required headroom for hardware/radiotap */
--- wireless-testing.orig/net/mac80211/main.c 2009-02-08 13:21:16.000000000 +0100
+++ wireless-testing/net/mac80211/main.c 2009-02-08 13:23:46.000000000 +0100
@@ -910,14 +910,6 @@ int ieee80211_register_hw(struct ieee802
local->hw.conf.listen_interval = local->hw.max_listen_interval;
- local->wstats_flags |= local->hw.flags & (IEEE80211_HW_SIGNAL_UNSPEC |
- IEEE80211_HW_SIGNAL_DBM) ?
- IW_QUAL_QUAL_UPDATED : IW_QUAL_QUAL_INVALID;
- local->wstats_flags |= local->hw.flags & IEEE80211_HW_NOISE_DBM ?
- IW_QUAL_NOISE_UPDATED : IW_QUAL_NOISE_INVALID;
- if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM)
- local->wstats_flags |= IW_QUAL_DBM;
-
result = sta_info_start(local);
if (result < 0)
goto fail_sta_info;
--- wireless-testing.orig/net/mac80211/wext.c 2009-02-08 13:21:16.000000000 +0100
+++ wireless-testing/net/mac80211/wext.c 2009-02-08 13:23:43.000000000 +0100
@@ -145,6 +145,21 @@ static int ieee80211_ioctl_siwgenie(stru
return -EOPNOTSUPP;
}
+static u8 ieee80211_get_wstats_flags(struct ieee80211_local *local)
+{
+ u8 wstats_flags = 0;
+
+ wstats_flags |= local->hw.flags & (IEEE80211_HW_SIGNAL_UNSPEC |
+ IEEE80211_HW_SIGNAL_DBM) ?
+ IW_QUAL_QUAL_UPDATED : IW_QUAL_QUAL_INVALID;
+ wstats_flags |= local->hw.flags & IEEE80211_HW_NOISE_DBM ?
+ IW_QUAL_NOISE_UPDATED : IW_QUAL_NOISE_INVALID;
+ if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM)
+ wstats_flags |= IW_QUAL_DBM;
+
+ return wstats_flags;
+}
+
static int ieee80211_ioctl_giwrange(struct net_device *dev,
struct iw_request_info *info,
struct iw_point *data, char *extra)
@@ -187,13 +202,13 @@ static int ieee80211_ioctl_giwrange(stru
range->max_qual.noise = 0;
range->max_qual.qual = 100;
- range->max_qual.updated = local->wstats_flags;
+ range->max_qual.updated = ieee80211_get_wstats_flags(local);
range->avg_qual.qual = 50;
/* not always true but better than nothing */
range->avg_qual.level = range->max_qual.level / 2;
range->avg_qual.noise = range->max_qual.noise / 2;
- range->avg_qual.updated = local->wstats_flags;
+ range->avg_qual.updated = ieee80211_get_wstats_flags(local);
range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 |
IW_ENC_CAPA_CIPHER_TKIP | IW_ENC_CAPA_CIPHER_CCMP;
@@ -967,7 +982,7 @@ static struct iw_statistics *ieee80211_g
wstats->qual.level = sta->last_signal;
wstats->qual.qual = sta->last_qual;
wstats->qual.noise = sta->last_noise;
- wstats->qual.updated = local->wstats_flags;
+ wstats->qual.updated = ieee80211_get_wstats_flags(local);
}
rcu_read_unlock();
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-02-08 13:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-02-08 13:32 [PATCH] mac80211: calculate wstats_flags on the fly Johannes Berg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox