diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/ieee80211/ieee80211_rx.c | 2 | ||||
-rw-r--r-- | net/mac80211/debugfs_sta.c | 2 | ||||
-rw-r--r-- | net/mac80211/ieee80211_i.h | 2 | ||||
-rw-r--r-- | net/mac80211/main.c | 10 | ||||
-rw-r--r-- | net/mac80211/mlme.c | 12 | ||||
-rw-r--r-- | net/mac80211/rx.c | 4 | ||||
-rw-r--r-- | net/mac80211/sta_info.h | 2 | ||||
-rw-r--r-- | net/mac80211/wext.c | 28 |
8 files changed, 37 insertions, 25 deletions
diff --git a/net/ieee80211/ieee80211_rx.c b/net/ieee80211/ieee80211_rx.c index 200ee1e63728..69dbc342a464 100644 --- a/net/ieee80211/ieee80211_rx.c +++ b/net/ieee80211/ieee80211_rx.c | |||
@@ -391,7 +391,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | |||
391 | 391 | ||
392 | wstats.updated = 0; | 392 | wstats.updated = 0; |
393 | if (rx_stats->mask & IEEE80211_STATMASK_RSSI) { | 393 | if (rx_stats->mask & IEEE80211_STATMASK_RSSI) { |
394 | wstats.level = rx_stats->rssi; | 394 | wstats.level = rx_stats->signal; |
395 | wstats.updated |= IW_QUAL_LEVEL_UPDATED; | 395 | wstats.updated |= IW_QUAL_LEVEL_UPDATED; |
396 | } else | 396 | } else |
397 | wstats.updated |= IW_QUAL_LEVEL_INVALID; | 397 | wstats.updated |= IW_QUAL_LEVEL_INVALID; |
diff --git a/net/mac80211/debugfs_sta.c b/net/mac80211/debugfs_sta.c index 1f00273d99c2..a2cc0284c9d0 100644 --- a/net/mac80211/debugfs_sta.c +++ b/net/mac80211/debugfs_sta.c | |||
@@ -63,8 +63,8 @@ STA_FILE(tx_fragments, tx_fragments, LU); | |||
63 | STA_FILE(tx_filtered, tx_filtered_count, LU); | 63 | STA_FILE(tx_filtered, tx_filtered_count, LU); |
64 | STA_FILE(tx_retry_failed, tx_retry_failed, LU); | 64 | STA_FILE(tx_retry_failed, tx_retry_failed, LU); |
65 | STA_FILE(tx_retry_count, tx_retry_count, LU); | 65 | STA_FILE(tx_retry_count, tx_retry_count, LU); |
66 | STA_FILE(last_rssi, last_rssi, D); | ||
67 | STA_FILE(last_signal, last_signal, D); | 66 | STA_FILE(last_signal, last_signal, D); |
67 | STA_FILE(last_qual, last_qual, D); | ||
68 | STA_FILE(last_noise, last_noise, D); | 68 | STA_FILE(last_noise, last_noise, D); |
69 | STA_FILE(channel_use, channel_use, D); | 69 | STA_FILE(channel_use, channel_use, D); |
70 | STA_FILE(wep_weak_iv_count, wep_weak_iv_count, LU); | 70 | STA_FILE(wep_weak_iv_count, wep_weak_iv_count, LU); |
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 173b7fcb3029..ed0d9b35ae6f 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -82,7 +82,7 @@ struct ieee80211_sta_bss { | |||
82 | u16 capability; /* host byte order */ | 82 | u16 capability; /* host byte order */ |
83 | enum ieee80211_band band; | 83 | enum ieee80211_band band; |
84 | int freq; | 84 | int freq; |
85 | int rssi, signal, noise; | 85 | int signal, noise, qual; |
86 | u8 *wpa_ie; | 86 | u8 *wpa_ie; |
87 | size_t wpa_ie_len; | 87 | size_t wpa_ie_len; |
88 | u8 *rsn_ie; | 88 | u8 *rsn_ie; |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index f277407f0f5a..390df48dfd40 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -1702,13 +1702,13 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) | |||
1702 | 1702 | ||
1703 | local->hw.conf.beacon_int = 1000; | 1703 | local->hw.conf.beacon_int = 1000; |
1704 | 1704 | ||
1705 | local->wstats_flags |= local->hw.max_rssi ? | 1705 | local->wstats_flags |= local->hw.flags & (IEEE80211_HW_SIGNAL_UNSPEC | |
1706 | IW_QUAL_LEVEL_UPDATED : IW_QUAL_LEVEL_INVALID; | 1706 | IEEE80211_HW_SIGNAL_DB | |
1707 | local->wstats_flags |= local->hw.max_signal ? | 1707 | IEEE80211_HW_SIGNAL_DBM) ? |
1708 | IW_QUAL_QUAL_UPDATED : IW_QUAL_QUAL_INVALID; | 1708 | IW_QUAL_QUAL_UPDATED : IW_QUAL_QUAL_INVALID; |
1709 | local->wstats_flags |= local->hw.max_noise ? | 1709 | local->wstats_flags |= local->hw.flags & IEEE80211_HW_NOISE_DBM ? |
1710 | IW_QUAL_NOISE_UPDATED : IW_QUAL_NOISE_INVALID; | 1710 | IW_QUAL_NOISE_UPDATED : IW_QUAL_NOISE_INVALID; |
1711 | if (local->hw.max_rssi < 0 || local->hw.max_noise < 0) | 1711 | if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM) |
1712 | local->wstats_flags |= IW_QUAL_DBM; | 1712 | local->wstats_flags |= IW_QUAL_DBM; |
1713 | 1713 | ||
1714 | result = sta_info_start(local); | 1714 | result = sta_info_start(local); |
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 6c4b27be35da..dda30e98aa1e 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -1959,8 +1959,8 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata, | |||
1959 | local->hw.conf.channel->center_freq, | 1959 | local->hw.conf.channel->center_freq, |
1960 | ifsta->ssid, ifsta->ssid_len); | 1960 | ifsta->ssid, ifsta->ssid_len); |
1961 | if (bss) { | 1961 | if (bss) { |
1962 | sta->last_rssi = bss->rssi; | ||
1963 | sta->last_signal = bss->signal; | 1962 | sta->last_signal = bss->signal; |
1963 | sta->last_qual = bss->qual; | ||
1964 | sta->last_noise = bss->noise; | 1964 | sta->last_noise = bss->noise; |
1965 | ieee80211_rx_bss_put(dev, bss); | 1965 | ieee80211_rx_bss_put(dev, bss); |
1966 | } | 1966 | } |
@@ -2629,9 +2629,9 @@ static void ieee80211_rx_bss_info(struct net_device *dev, | |||
2629 | 2629 | ||
2630 | bss->timestamp = beacon_timestamp; | 2630 | bss->timestamp = beacon_timestamp; |
2631 | bss->last_update = jiffies; | 2631 | bss->last_update = jiffies; |
2632 | bss->rssi = rx_status->ssi; | ||
2633 | bss->signal = rx_status->signal; | 2632 | bss->signal = rx_status->signal; |
2634 | bss->noise = rx_status->noise; | 2633 | bss->noise = rx_status->noise; |
2634 | bss->qual = rx_status->qual; | ||
2635 | if (!beacon && !bss->probe_resp) | 2635 | if (!beacon && !bss->probe_resp) |
2636 | bss->probe_resp = true; | 2636 | bss->probe_resp = true; |
2637 | 2637 | ||
@@ -3427,9 +3427,9 @@ static int ieee80211_sta_config_auth(struct net_device *dev, | |||
3427 | !ieee80211_sta_match_ssid(ifsta, bss->ssid, bss->ssid_len)) | 3427 | !ieee80211_sta_match_ssid(ifsta, bss->ssid, bss->ssid_len)) |
3428 | continue; | 3428 | continue; |
3429 | 3429 | ||
3430 | if (!selected || top_rssi < bss->rssi) { | 3430 | if (!selected || top_rssi < bss->signal) { |
3431 | selected = bss; | 3431 | selected = bss; |
3432 | top_rssi = bss->rssi; | 3432 | top_rssi = bss->signal; |
3433 | } | 3433 | } |
3434 | } | 3434 | } |
3435 | if (selected) | 3435 | if (selected) |
@@ -4060,8 +4060,8 @@ ieee80211_sta_scan_result(struct net_device *dev, | |||
4060 | 4060 | ||
4061 | memset(&iwe, 0, sizeof(iwe)); | 4061 | memset(&iwe, 0, sizeof(iwe)); |
4062 | iwe.cmd = IWEVQUAL; | 4062 | iwe.cmd = IWEVQUAL; |
4063 | iwe.u.qual.qual = bss->signal; | 4063 | iwe.u.qual.qual = bss->qual; |
4064 | iwe.u.qual.level = bss->rssi; | 4064 | iwe.u.qual.level = bss->signal; |
4065 | iwe.u.qual.noise = bss->noise; | 4065 | iwe.u.qual.noise = bss->noise; |
4066 | iwe.u.qual.updated = local->wstats_flags; | 4066 | iwe.u.qual.updated = local->wstats_flags; |
4067 | current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, | 4067 | current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index b399e09ec7aa..474f13662c84 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -209,7 +209,7 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb, | |||
209 | cpu_to_le16(IEEE80211_CHAN_DYN | | 209 | cpu_to_le16(IEEE80211_CHAN_DYN | |
210 | IEEE80211_CHAN_2GHZ); | 210 | IEEE80211_CHAN_2GHZ); |
211 | 211 | ||
212 | rtfixed->antsignal = status->ssi; | 212 | rtfixed->antsignal = status->signal; |
213 | rthdr->it_len = cpu_to_le16(rtap_len); | 213 | rthdr->it_len = cpu_to_le16(rtap_len); |
214 | } | 214 | } |
215 | 215 | ||
@@ -719,8 +719,8 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx) | |||
719 | 719 | ||
720 | sta->rx_fragments++; | 720 | sta->rx_fragments++; |
721 | sta->rx_bytes += rx->skb->len; | 721 | sta->rx_bytes += rx->skb->len; |
722 | sta->last_rssi = rx->status->ssi; | ||
723 | sta->last_signal = rx->status->signal; | 722 | sta->last_signal = rx->status->signal; |
723 | sta->last_qual = rx->status->qual; | ||
724 | sta->last_noise = rx->status->noise; | 724 | sta->last_noise = rx->status->noise; |
725 | 725 | ||
726 | if (!(rx->fc & IEEE80211_FCTL_MOREFRAGS)) { | 726 | if (!(rx->fc & IEEE80211_FCTL_MOREFRAGS)) { |
diff --git a/net/mac80211/sta_info.h b/net/mac80211/sta_info.h index 97a61c39ad90..e89cc1655547 100644 --- a/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h | |||
@@ -216,8 +216,8 @@ struct sta_info { | |||
216 | * from this STA */ | 216 | * from this STA */ |
217 | unsigned long rx_fragments; /* number of received MPDUs */ | 217 | unsigned long rx_fragments; /* number of received MPDUs */ |
218 | unsigned long rx_dropped; /* number of dropped MPDUs from this STA */ | 218 | unsigned long rx_dropped; /* number of dropped MPDUs from this STA */ |
219 | int last_rssi; /* RSSI of last received frame from this STA */ | ||
220 | int last_signal; /* signal of last received frame from this STA */ | 219 | int last_signal; /* signal of last received frame from this STA */ |
220 | int last_qual; /* qual of last received frame from this STA */ | ||
221 | int last_noise; /* noise of last received frame from this STA */ | 221 | int last_noise; /* noise of last received frame from this STA */ |
222 | /* last received seq/frag number from this STA (per RX queue) */ | 222 | /* last received seq/frag number from this STA (per RX queue) */ |
223 | __le16 last_seq_ctrl[NUM_RX_DATA_QUEUES]; | 223 | __le16 last_seq_ctrl[NUM_RX_DATA_QUEUES]; |
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c index 76e1de1dc735..6a342a9a40cd 100644 --- a/net/mac80211/wext.c +++ b/net/mac80211/wext.c | |||
@@ -169,14 +169,26 @@ static int ieee80211_ioctl_giwrange(struct net_device *dev, | |||
169 | range->num_encoding_sizes = 2; | 169 | range->num_encoding_sizes = 2; |
170 | range->max_encoding_tokens = NUM_DEFAULT_KEYS; | 170 | range->max_encoding_tokens = NUM_DEFAULT_KEYS; |
171 | 171 | ||
172 | range->max_qual.qual = local->hw.max_signal; | 172 | if (local->hw.flags & IEEE80211_HW_SIGNAL_UNSPEC || |
173 | range->max_qual.level = local->hw.max_rssi; | 173 | local->hw.flags & IEEE80211_HW_SIGNAL_DB) |
174 | range->max_qual.noise = local->hw.max_noise; | 174 | range->max_qual.level = local->hw.max_signal; |
175 | else if (local->hw.flags & IEEE80211_HW_SIGNAL_DBM) | ||
176 | range->max_qual.level = -110; | ||
177 | else | ||
178 | range->max_qual.level = 0; | ||
179 | |||
180 | if (local->hw.flags & IEEE80211_HW_NOISE_DBM) | ||
181 | range->max_qual.noise = -110; | ||
182 | else | ||
183 | range->max_qual.noise = 0; | ||
184 | |||
185 | range->max_qual.qual = 100; | ||
175 | range->max_qual.updated = local->wstats_flags; | 186 | range->max_qual.updated = local->wstats_flags; |
176 | 187 | ||
177 | range->avg_qual.qual = local->hw.max_signal/2; | 188 | range->avg_qual.qual = 50; |
178 | range->avg_qual.level = 0; | 189 | /* not always true but better than nothing */ |
179 | range->avg_qual.noise = 0; | 190 | range->avg_qual.level = range->max_qual.level / 2; |
191 | range->avg_qual.noise = range->max_qual.noise / 2; | ||
180 | range->avg_qual.updated = local->wstats_flags; | 192 | range->avg_qual.updated = local->wstats_flags; |
181 | 193 | ||
182 | range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 | | 194 | range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 | |
@@ -996,8 +1008,8 @@ static struct iw_statistics *ieee80211_get_wireless_stats(struct net_device *dev | |||
996 | wstats->qual.noise = 0; | 1008 | wstats->qual.noise = 0; |
997 | wstats->qual.updated = IW_QUAL_ALL_INVALID; | 1009 | wstats->qual.updated = IW_QUAL_ALL_INVALID; |
998 | } else { | 1010 | } else { |
999 | wstats->qual.level = sta->last_rssi; | 1011 | wstats->qual.level = sta->last_signal; |
1000 | wstats->qual.qual = sta->last_signal; | 1012 | wstats->qual.qual = sta->last_qual; |
1001 | wstats->qual.noise = sta->last_noise; | 1013 | wstats->qual.noise = sta->last_noise; |
1002 | wstats->qual.updated = local->wstats_flags; | 1014 | wstats->qual.updated = local->wstats_flags; |
1003 | } | 1015 | } |