2010-02-17 20:05:20

by Johannes Berg

[permalink] [raw]
Subject: [PATCH] mac80211: deprecate RX status noise

The noise value as is won't be used, isn't
filled by most drivers and doesn't really
make a whole lot of sense on a per packet
basis -- proper cfg80211 survey support in
mac80211 will need to be different.

Mark the struct member as deprecated so it
will be removed from drivers.

Signed-off-by: Johannes Berg <[email protected]>
---
Currently creates the following warnings:

drivers/net/wireless/mwl8k.c:756: warning: ‘noise’ is deprecated
drivers/net/wireless/mwl8k.c:858: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ar9170/main.c:928: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath9k/common.c:215: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath5k/base.c:1941: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath5k/base.c:1942: warning: ‘noise’ is deprecated
drivers/net/wireless/b43/xmit.c:613: warning: ‘noise’ is deprecated
drivers/net/wireless/b43legacy/xmit.c:551: warning: ‘noise’ is deprecated
drivers/net/wireless/libertas_tf/main.c:497: warning: ‘noise’ is deprecated
drivers/net/wireless/rt2x00/rt2x00dev.c:437: warning: ‘noise’ is deprecated
drivers/net/wireless/p54/txrx.c:353: warning: ‘noise’ is deprecated
drivers/net/wireless/wl12xx/wl1251_rx.c:80: warning: ‘noise’ is deprecated
drivers/net/wireless/wl12xx/wl1271_rx.c:139: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:682: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:685: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:689: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:697: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:711: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1191: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1193: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1206: warning: ‘noise’ is deprecated

I'll make patches for drivers when it becomes
clear that it won't clash with any work others
have pending.

include/net/mac80211.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--- wireless-testing.orig/include/net/mac80211.h 2010-02-17 20:57:33.000000000 +0100
+++ wireless-testing/include/net/mac80211.h 2010-02-17 20:57:43.000000000 +0100
@@ -543,7 +543,7 @@ enum mac80211_rx_flags {
* @signal: signal strength when receiving this frame, either in dBm, in dB or
* unspecified depending on the hardware capabilities flags
* @IEEE80211_HW_SIGNAL_*
- * @noise: noise when receiving this frame, in dBm.
+ * @noise: noise when receiving this frame, in dBm (DEPRECATED).
* @antenna: antenna used
* @rate_idx: index of data rate into band's supported rates or MCS index if
* HT rates are use (RX_FLAG_HT)
@@ -554,7 +554,7 @@ struct ieee80211_rx_status {
enum ieee80211_band band;
int freq;
int signal;
- int noise;
+ int noise __deprecated;
int antenna;
int rate_idx;
int flag;




2010-02-18 14:48:50

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

On Thu, 2010-02-18 at 15:41 +0100, Holger Schurig wrote:
> > Various hardware reports various bogus values, like iwlwifi for
> > example reporting the same noise value that it collected after
> > a beacon over and over again, or just reporting 127 when it had
> > no value.
>
> I'm not saying that I understand this completely, but for me it
> would make sense to disable iwlwifi's broken noise reporting
> only. No reason to disable it for everyone if some of them are
> broken.

Well it's kinda bound to be broken elsewhere too because we don't even
know how various devices gather the values. With iwlwifi at least we
know how it gets the value.

johannes


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part

2010-02-17 22:52:13

by Pavel Roskin

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

On Wed, 2010-02-17 at 14:29 -0800, Luis R. Rodriguez wrote:

> > Being per packet or global, I'm not an RF engineer to say what's best, but
> > even if it is global, "last_noise" would still be useful as "global noise
> > when the last packets was received from this node".
>
> If anything it should be per center freq.

The noise value will be missed. It's useful to see the signal to noise
ratio. I have little trust to the absolute noise values, but I know
that the connection is bad if signal is just 3 dBm above the noise
measured by the same card with the same antenna on the same channel.

Maybe it would be better to remove per-packet noise only when the "next
generation noise" is implemented? It could be a batch of patches.

--
Regards,
Pavel Roskin

2010-02-17 22:30:06

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

On Wed, Feb 17, 2010 at 12:48 PM, Benoit PAPILLAULT
<[email protected]> wrote:
> Johannes Berg a écrit :
>>
>> The noise value as is won't be used, isn't
>> filled by most drivers and doesn't really
>> make a whole lot of sense on a per packet
>> basis -- proper cfg80211 survey support in
>> mac80211 will need to be different.
>>
>> Mark the struct member as deprecated so it
>> will be removed from drivers.
>>
>> Signed-off-by: Johannes Berg <[email protected]>
>> ---
>> I shouldn't be trying this at 9:30pm...
>>
>>
>> Currently creates the following warnings:
>>
>> drivers/net/wireless/mwl8k.c:756: warning: ‘noise’ is deprecated
>> drivers/net/wireless/mwl8k.c:858: warning: ‘noise’ is deprecated
>> drivers/net/wireless/ath/ar9170/main.c:928: warning: ‘noise’ is deprecated
>> drivers/net/wireless/ath/ath9k/common.c:215: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/ath/ath5k/base.c:1941: warning: ‘noise’ is deprecated
>> drivers/net/wireless/ath/ath5k/base.c:1942: warning: ‘noise’ is deprecated
>> drivers/net/wireless/b43/xmit.c:613: warning: ‘noise’ is deprecated
>> drivers/net/wireless/b43legacy/xmit.c:551: warning: ‘noise’ is deprecated
>> drivers/net/wireless/libertas_tf/main.c:497: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/rt2x00/rt2x00dev.c:437: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/p54/txrx.c:353: warning: ‘noise’ is deprecated
>> drivers/net/wireless/wl12xx/wl1251_rx.c:80: warning: ‘noise’ is deprecated
>> drivers/net/wireless/wl12xx/wl1271_rx.c:139: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/iwlwifi/iwl-3945.c:682: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/iwlwifi/iwl-3945.c:685: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/iwlwifi/iwl-3945.c:689: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/iwlwifi/iwl-3945.c:697: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/iwlwifi/iwl-3945.c:711: warning: ‘noise’ is
>> deprecated
>> drivers/net/wireless/iwlwifi/iwl-rx.c:1191: warning: ‘noise’ is deprecated
>> drivers/net/wireless/iwlwifi/iwl-rx.c:1193: warning: ‘noise’ is deprecated
>> drivers/net/wireless/iwlwifi/iwl-rx.c:1206: warning: ‘noise’ is deprecated
>>
>> I'll make patches for drivers when it becomes
>> clear that it won't clash with any work others
>> have pending.
>>
>>  include/net/mac80211.h     |    4 ++--
>>  net/mac80211/debugfs_sta.c |    2 --
>>  net/mac80211/rx.c          |    9 ---------
>>  net/mac80211/sta_info.h    |    2 --
>>  4 files changed, 2 insertions(+), 15 deletions(-)
>>
>> --- wireless-testing.orig/include/net/mac80211.h        2010-02-17
>> 20:57:33.000000000 +0100
>> +++ wireless-testing/include/net/mac80211.h     2010-02-17
>> 21:25:46.000000000 +0100
>> @@ -543,7 +543,7 @@ enum mac80211_rx_flags {
>>  * @signal: signal strength when receiving this frame, either in dBm, in
>> dB or
>>  *     unspecified depending on the hardware capabilities flags
>>  *     @IEEE80211_HW_SIGNAL_*
>> - * @noise: noise when receiving this frame, in dBm.
>> + * @noise: noise when receiving this frame, in dBm (DEPRECATED).
>>  * @antenna: antenna used
>>  * @rate_idx: index of data rate into band's supported rates or MCS index
>> if
>>  *     HT rates are use (RX_FLAG_HT)
>> @@ -554,7 +554,7 @@ struct ieee80211_rx_status {
>>        enum ieee80211_band band;
>>        int freq;
>>        int signal;
>> -       int noise;
>> +       int noise __deprecated;
>>        int antenna;
>>        int rate_idx;
>>        int flag;
>> --- wireless-testing.orig/net/mac80211/debugfs_sta.c    2010-02-17
>> 21:20:49.000000000 +0100
>> +++ wireless-testing/net/mac80211/debugfs_sta.c 2010-02-17
>> 21:20:53.000000000 +0100
>> @@ -57,7 +57,6 @@ STA_FILE(tx_filtered, tx_filtered_count,
>>  STA_FILE(tx_retry_failed, tx_retry_failed, LU);
>>  STA_FILE(tx_retry_count, tx_retry_count, LU);
>>  STA_FILE(last_signal, last_signal, D);
>> -STA_FILE(last_noise, last_noise, D);
>>  STA_FILE(wep_weak_iv_count, wep_weak_iv_count, LU);
>>   static ssize_t sta_flags_read(struct file *file, char __user *userbuf,
>> @@ -289,7 +288,6 @@ void ieee80211_sta_debugfs_add(struct st
>>        DEBUGFS_ADD(tx_retry_failed);
>>        DEBUGFS_ADD(tx_retry_count);
>>        DEBUGFS_ADD(last_signal);
>> -       DEBUGFS_ADD(last_noise);
>>        DEBUGFS_ADD(wep_weak_iv_count);
>>        DEBUGFS_ADD(ht_capa);
>>  }
>> --- wireless-testing.orig/net/mac80211/rx.c     2010-02-17
>> 21:20:32.000000000 +0100
>> +++ wireless-testing/net/mac80211/rx.c  2010-02-17 21:26:31.000000000
>> +0100
>> @@ -179,14 +179,6 @@ ieee80211_add_rx_radiotap_header(struct
>>                pos++;
>>        }
>>  -       /* IEEE80211_RADIOTAP_DBM_ANTNOISE */
>> -       if (local->hw.flags & IEEE80211_HW_NOISE_DBM) {
>> -               *pos = status->noise;
>> -               rthdr->it_present |=
>> -                       cpu_to_le32(1 << IEEE80211_RADIOTAP_DBM_ANTNOISE);
>> -               pos++;
>> -       }
>> -
>>        /* IEEE80211_RADIOTAP_LOCK_QUALITY is missing */
>>          /* IEEE80211_RADIOTAP_ANTENNA */
>> @@ -1078,7 +1070,6 @@ ieee80211_rx_h_sta_process(struct ieee80
>>        sta->rx_fragments++;
>>        sta->rx_bytes += rx->skb->len;
>>        sta->last_signal = status->signal;
>> -       sta->last_noise = status->noise;
>>          /*
>>         * Change STA power saving mode only at the end of a frame
>> --- wireless-testing.orig/net/mac80211/sta_info.h       2010-02-17
>> 21:20:39.000000000 +0100
>> +++ wireless-testing/net/mac80211/sta_info.h    2010-02-17
>> 21:20:44.000000000 +0100
>> @@ -200,7 +200,6 @@ struct sta_ampdu_mlme {
>>  * @rx_fragments: number of received MPDUs
>>  * @rx_dropped: number of dropped MPDUs from this STA
>>  * @last_signal: signal of last received frame from this STA
>> - * @last_noise: noise of last received frame from this STA
>>  * @last_seq_ctrl: last received seq/frag number from this STA (per RX
>> queue)
>>  * @tx_filtered_count: number of frames the hardware filtered for this STA
>>  * @tx_retry_failed: number of frames that failed retry
>> @@ -271,7 +270,6 @@ struct sta_info {
>>        unsigned long rx_fragments;
>>        unsigned long rx_dropped;
>>        int last_signal;
>> -       int last_noise;
>>        __le16 last_seq_ctrl[NUM_RX_DATA_QUEUES];
>>          /* Updated from TX status path only, no locking requirements */
>>
>>
>
> I just wrote an application that read "last_signal" and "last_noise" in
> order to compute the SNR value of all neighboring nodes in
> /sys/kernel/debug/ieee80211/phy0/stations. So, it is used and needed.
>
> Being per packet or global, I'm not an RF engineer to say what's best, but
> even if it is global, "last_noise" would still be useful as "global noise
> when the last packets was received from this node".

If anything it should be per center freq.

Luis

2010-02-17 20:48:35

by Benoit Papillault

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

Johannes Berg a écrit :
> The noise value as is won't be used, isn't
> filled by most drivers and doesn't really
> make a whole lot of sense on a per packet
> basis -- proper cfg80211 survey support in
> mac80211 will need to be different.
>
> Mark the struct member as deprecated so it
> will be removed from drivers.
>
> Signed-off-by: Johannes Berg <[email protected]>
> ---
> I shouldn't be trying this at 9:30pm...
>
>
> Currently creates the following warnings:
>
> drivers/net/wireless/mwl8k.c:756: warning: ‘noise’ is deprecated
> drivers/net/wireless/mwl8k.c:858: warning: ‘noise’ is deprecated
> drivers/net/wireless/ath/ar9170/main.c:928: warning: ‘noise’ is deprecated
> drivers/net/wireless/ath/ath9k/common.c:215: warning: ‘noise’ is deprecated
> drivers/net/wireless/ath/ath5k/base.c:1941: warning: ‘noise’ is deprecated
> drivers/net/wireless/ath/ath5k/base.c:1942: warning: ‘noise’ is deprecated
> drivers/net/wireless/b43/xmit.c:613: warning: ‘noise’ is deprecated
> drivers/net/wireless/b43legacy/xmit.c:551: warning: ‘noise’ is deprecated
> drivers/net/wireless/libertas_tf/main.c:497: warning: ‘noise’ is deprecated
> drivers/net/wireless/rt2x00/rt2x00dev.c:437: warning: ‘noise’ is deprecated
> drivers/net/wireless/p54/txrx.c:353: warning: ‘noise’ is deprecated
> drivers/net/wireless/wl12xx/wl1251_rx.c:80: warning: ‘noise’ is deprecated
> drivers/net/wireless/wl12xx/wl1271_rx.c:139: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-3945.c:682: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-3945.c:685: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-3945.c:689: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-3945.c:697: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-3945.c:711: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-rx.c:1191: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-rx.c:1193: warning: ‘noise’ is deprecated
> drivers/net/wireless/iwlwifi/iwl-rx.c:1206: warning: ‘noise’ is deprecated
>
> I'll make patches for drivers when it becomes
> clear that it won't clash with any work others
> have pending.
>
> include/net/mac80211.h | 4 ++--
> net/mac80211/debugfs_sta.c | 2 --
> net/mac80211/rx.c | 9 ---------
> net/mac80211/sta_info.h | 2 --
> 4 files changed, 2 insertions(+), 15 deletions(-)
>
> --- wireless-testing.orig/include/net/mac80211.h 2010-02-17 20:57:33.000000000 +0100
> +++ wireless-testing/include/net/mac80211.h 2010-02-17 21:25:46.000000000 +0100
> @@ -543,7 +543,7 @@ enum mac80211_rx_flags {
> * @signal: signal strength when receiving this frame, either in dBm, in dB or
> * unspecified depending on the hardware capabilities flags
> * @IEEE80211_HW_SIGNAL_*
> - * @noise: noise when receiving this frame, in dBm.
> + * @noise: noise when receiving this frame, in dBm (DEPRECATED).
> * @antenna: antenna used
> * @rate_idx: index of data rate into band's supported rates or MCS index if
> * HT rates are use (RX_FLAG_HT)
> @@ -554,7 +554,7 @@ struct ieee80211_rx_status {
> enum ieee80211_band band;
> int freq;
> int signal;
> - int noise;
> + int noise __deprecated;
> int antenna;
> int rate_idx;
> int flag;
> --- wireless-testing.orig/net/mac80211/debugfs_sta.c 2010-02-17 21:20:49.000000000 +0100
> +++ wireless-testing/net/mac80211/debugfs_sta.c 2010-02-17 21:20:53.000000000 +0100
> @@ -57,7 +57,6 @@ STA_FILE(tx_filtered, tx_filtered_count,
> STA_FILE(tx_retry_failed, tx_retry_failed, LU);
> STA_FILE(tx_retry_count, tx_retry_count, LU);
> STA_FILE(last_signal, last_signal, D);
> -STA_FILE(last_noise, last_noise, D);
> STA_FILE(wep_weak_iv_count, wep_weak_iv_count, LU);
>
> static ssize_t sta_flags_read(struct file *file, char __user *userbuf,
> @@ -289,7 +288,6 @@ void ieee80211_sta_debugfs_add(struct st
> DEBUGFS_ADD(tx_retry_failed);
> DEBUGFS_ADD(tx_retry_count);
> DEBUGFS_ADD(last_signal);
> - DEBUGFS_ADD(last_noise);
> DEBUGFS_ADD(wep_weak_iv_count);
> DEBUGFS_ADD(ht_capa);
> }
> --- wireless-testing.orig/net/mac80211/rx.c 2010-02-17 21:20:32.000000000 +0100
> +++ wireless-testing/net/mac80211/rx.c 2010-02-17 21:26:31.000000000 +0100
> @@ -179,14 +179,6 @@ ieee80211_add_rx_radiotap_header(struct
> pos++;
> }
>
> - /* IEEE80211_RADIOTAP_DBM_ANTNOISE */
> - if (local->hw.flags & IEEE80211_HW_NOISE_DBM) {
> - *pos = status->noise;
> - rthdr->it_present |=
> - cpu_to_le32(1 << IEEE80211_RADIOTAP_DBM_ANTNOISE);
> - pos++;
> - }
> -
> /* IEEE80211_RADIOTAP_LOCK_QUALITY is missing */
>
> /* IEEE80211_RADIOTAP_ANTENNA */
> @@ -1078,7 +1070,6 @@ ieee80211_rx_h_sta_process(struct ieee80
> sta->rx_fragments++;
> sta->rx_bytes += rx->skb->len;
> sta->last_signal = status->signal;
> - sta->last_noise = status->noise;
>
> /*
> * Change STA power saving mode only at the end of a frame
> --- wireless-testing.orig/net/mac80211/sta_info.h 2010-02-17 21:20:39.000000000 +0100
> +++ wireless-testing/net/mac80211/sta_info.h 2010-02-17 21:20:44.000000000 +0100
> @@ -200,7 +200,6 @@ struct sta_ampdu_mlme {
> * @rx_fragments: number of received MPDUs
> * @rx_dropped: number of dropped MPDUs from this STA
> * @last_signal: signal of last received frame from this STA
> - * @last_noise: noise of last received frame from this STA
> * @last_seq_ctrl: last received seq/frag number from this STA (per RX queue)
> * @tx_filtered_count: number of frames the hardware filtered for this STA
> * @tx_retry_failed: number of frames that failed retry
> @@ -271,7 +270,6 @@ struct sta_info {
> unsigned long rx_fragments;
> unsigned long rx_dropped;
> int last_signal;
> - int last_noise;
> __le16 last_seq_ctrl[NUM_RX_DATA_QUEUES];
>
> /* Updated from TX status path only, no locking requirements */
>
>
I just wrote an application that read "last_signal" and "last_noise" in
order to compute the SNR value of all neighboring nodes in
/sys/kernel/debug/ieee80211/phy0/stations. So, it is used and needed.

Being per packet or global, I'm not an RF engineer to say what's best,
but even if it is global, "last_noise" would still be useful as "global
noise when the last packets was received from this node".

My 2 cents,
Benoit


2010-02-18 12:07:22

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

On Wed, 2010-02-17 at 17:51 -0500, Pavel Roskin wrote:
> On Wed, 2010-02-17 at 14:29 -0800, Luis R. Rodriguez wrote:
>
> > > Being per packet or global, I'm not an RF engineer to say what's
> best, but
> > > even if it is global, "last_noise" would still be useful as
> "global noise
> > > when the last packets was received from this node".
> >
> > If anything it should be per center freq.

Actually, per channel.

> The noise value will be missed. It's useful to see the signal to
> noise
> ratio. I have little trust to the absolute noise values, but I know
> that the connection is bad if signal is just 3 dBm above the noise
> measured by the same card with the same antenna on the same channel.
>
> Maybe it would be better to remove per-packet noise only when the
> "next
> generation noise" is implemented? It could be a batch of patches.

Hear hear!

Face it, the way we report it right now is utterly broken. Various
hardware reports various bogus values, like iwlwifi for example
reporting the same noise value that it collected after a beacon over and
over again, or just reporting 127 when it had no value.

We've been saying that we need something new for years. But those people
who want it don't seem to want to lift a finger for getting it.

johannes


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part

2010-02-18 14:45:38

by Holger Schurig

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

> Various hardware reports various bogus values, like iwlwifi for
> example reporting the same noise value that it collected after
> a beacon over and over again, or just reporting 127 when it had
> no value.

I'm not saying that I understand this completely, but for me it
would make sense to disable iwlwifi's broken noise reporting
only. No reason to disable it for everyone if some of them are
broken.

--
http://www.holgerschurig.de

2010-02-17 20:22:20

by Johannes Berg

[permalink] [raw]
Subject: [PATCH v2] mac80211: deprecate RX status noise

The noise value as is won't be used, isn't
filled by most drivers and doesn't really
make a whole lot of sense on a per packet
basis -- proper cfg80211 survey support in
mac80211 will need to be different.

Mark the struct member as deprecated so it
will be removed from drivers.

Signed-off-by: Johannes Berg <[email protected]>
---
Currently creates the following warnings:

drivers/net/wireless/mwl8k.c:756: warning: ‘noise’ is deprecated
drivers/net/wireless/mwl8k.c:858: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ar9170/main.c:928: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath9k/common.c:215: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath5k/base.c:1941: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath5k/base.c:1942: warning: ‘noise’ is deprecated
drivers/net/wireless/b43/xmit.c:613: warning: ‘noise’ is deprecated
drivers/net/wireless/b43legacy/xmit.c:551: warning: ‘noise’ is deprecated
drivers/net/wireless/libertas_tf/main.c:497: warning: ‘noise’ is deprecated
drivers/net/wireless/rt2x00/rt2x00dev.c:437: warning: ‘noise’ is deprecated
drivers/net/wireless/p54/txrx.c:353: warning: ‘noise’ is deprecated
drivers/net/wireless/wl12xx/wl1251_rx.c:80: warning: ‘noise’ is deprecated
drivers/net/wireless/wl12xx/wl1271_rx.c:139: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:682: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:685: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:689: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:697: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:711: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1191: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1193: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1206: warning: ‘noise’ is deprecated

I'll make patches for drivers when it becomes
clear that it won't clash with any work others
have pending.

include/net/mac80211.h | 4 ++--
net/mac80211/debugfs_sta.c | 2 --
net/mac80211/rx.c | 1 -
net/mac80211/sta_info.h | 2 --
4 files changed, 2 insertions(+), 7 deletions(-)

--- wireless-testing.orig/include/net/mac80211.h 2010-02-17 20:57:33.000000000 +0100
+++ wireless-testing/include/net/mac80211.h 2010-02-17 20:57:43.000000000 +0100
@@ -543,7 +543,7 @@ enum mac80211_rx_flags {
* @signal: signal strength when receiving this frame, either in dBm, in dB or
* unspecified depending on the hardware capabilities flags
* @IEEE80211_HW_SIGNAL_*
- * @noise: noise when receiving this frame, in dBm.
+ * @noise: noise when receiving this frame, in dBm (DEPRECATED).
* @antenna: antenna used
* @rate_idx: index of data rate into band's supported rates or MCS index if
* HT rates are use (RX_FLAG_HT)
@@ -554,7 +554,7 @@ struct ieee80211_rx_status {
enum ieee80211_band band;
int freq;
int signal;
- int noise;
+ int noise __deprecated;
int antenna;
int rate_idx;
int flag;
--- wireless-testing.orig/net/mac80211/debugfs_sta.c 2010-02-17 21:20:49.000000000 +0100
+++ wireless-testing/net/mac80211/debugfs_sta.c 2010-02-17 21:20:53.000000000 +0100
@@ -57,7 +57,6 @@ STA_FILE(tx_filtered, tx_filtered_count,
STA_FILE(tx_retry_failed, tx_retry_failed, LU);
STA_FILE(tx_retry_count, tx_retry_count, LU);
STA_FILE(last_signal, last_signal, D);
-STA_FILE(last_noise, last_noise, D);
STA_FILE(wep_weak_iv_count, wep_weak_iv_count, LU);

static ssize_t sta_flags_read(struct file *file, char __user *userbuf,
@@ -289,7 +288,6 @@ void ieee80211_sta_debugfs_add(struct st
DEBUGFS_ADD(tx_retry_failed);
DEBUGFS_ADD(tx_retry_count);
DEBUGFS_ADD(last_signal);
- DEBUGFS_ADD(last_noise);
DEBUGFS_ADD(wep_weak_iv_count);
DEBUGFS_ADD(ht_capa);
}
--- wireless-testing.orig/net/mac80211/rx.c 2010-02-17 21:20:32.000000000 +0100
+++ wireless-testing/net/mac80211/rx.c 2010-02-17 21:20:34.000000000 +0100
@@ -1078,7 +1078,6 @@ ieee80211_rx_h_sta_process(struct ieee80
sta->rx_fragments++;
sta->rx_bytes += rx->skb->len;
sta->last_signal = status->signal;
- sta->last_noise = status->noise;

/*
* Change STA power saving mode only at the end of a frame
--- wireless-testing.orig/net/mac80211/sta_info.h 2010-02-17 21:20:39.000000000 +0100
+++ wireless-testing/net/mac80211/sta_info.h 2010-02-17 21:20:44.000000000 +0100
@@ -200,7 +200,6 @@ struct sta_ampdu_mlme {
* @rx_fragments: number of received MPDUs
* @rx_dropped: number of dropped MPDUs from this STA
* @last_signal: signal of last received frame from this STA
- * @last_noise: noise of last received frame from this STA
* @last_seq_ctrl: last received seq/frag number from this STA (per RX queue)
* @tx_filtered_count: number of frames the hardware filtered for this STA
* @tx_retry_failed: number of frames that failed retry
@@ -271,7 +270,6 @@ struct sta_info {
unsigned long rx_fragments;
unsigned long rx_dropped;
int last_signal;
- int last_noise;
__le16 last_seq_ctrl[NUM_RX_DATA_QUEUES];

/* Updated from TX status path only, no locking requirements */



2010-02-17 20:27:29

by Johannes Berg

[permalink] [raw]
Subject: [PATCH v3] mac80211: deprecate RX status noise

The noise value as is won't be used, isn't
filled by most drivers and doesn't really
make a whole lot of sense on a per packet
basis -- proper cfg80211 survey support in
mac80211 will need to be different.

Mark the struct member as deprecated so it
will be removed from drivers.

Signed-off-by: Johannes Berg <[email protected]>
---
I shouldn't be trying this at 9:30pm...


Currently creates the following warnings:

drivers/net/wireless/mwl8k.c:756: warning: ‘noise’ is deprecated
drivers/net/wireless/mwl8k.c:858: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ar9170/main.c:928: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath9k/common.c:215: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath5k/base.c:1941: warning: ‘noise’ is deprecated
drivers/net/wireless/ath/ath5k/base.c:1942: warning: ‘noise’ is deprecated
drivers/net/wireless/b43/xmit.c:613: warning: ‘noise’ is deprecated
drivers/net/wireless/b43legacy/xmit.c:551: warning: ‘noise’ is deprecated
drivers/net/wireless/libertas_tf/main.c:497: warning: ‘noise’ is deprecated
drivers/net/wireless/rt2x00/rt2x00dev.c:437: warning: ‘noise’ is deprecated
drivers/net/wireless/p54/txrx.c:353: warning: ‘noise’ is deprecated
drivers/net/wireless/wl12xx/wl1251_rx.c:80: warning: ‘noise’ is deprecated
drivers/net/wireless/wl12xx/wl1271_rx.c:139: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:682: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:685: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:689: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:697: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-3945.c:711: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1191: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1193: warning: ‘noise’ is deprecated
drivers/net/wireless/iwlwifi/iwl-rx.c:1206: warning: ‘noise’ is deprecated

I'll make patches for drivers when it becomes
clear that it won't clash with any work others
have pending.

include/net/mac80211.h | 4 ++--
net/mac80211/debugfs_sta.c | 2 --
net/mac80211/rx.c | 9 ---------
net/mac80211/sta_info.h | 2 --
4 files changed, 2 insertions(+), 15 deletions(-)

--- wireless-testing.orig/include/net/mac80211.h 2010-02-17 20:57:33.000000000 +0100
+++ wireless-testing/include/net/mac80211.h 2010-02-17 21:25:46.000000000 +0100
@@ -543,7 +543,7 @@ enum mac80211_rx_flags {
* @signal: signal strength when receiving this frame, either in dBm, in dB or
* unspecified depending on the hardware capabilities flags
* @IEEE80211_HW_SIGNAL_*
- * @noise: noise when receiving this frame, in dBm.
+ * @noise: noise when receiving this frame, in dBm (DEPRECATED).
* @antenna: antenna used
* @rate_idx: index of data rate into band's supported rates or MCS index if
* HT rates are use (RX_FLAG_HT)
@@ -554,7 +554,7 @@ struct ieee80211_rx_status {
enum ieee80211_band band;
int freq;
int signal;
- int noise;
+ int noise __deprecated;
int antenna;
int rate_idx;
int flag;
--- wireless-testing.orig/net/mac80211/debugfs_sta.c 2010-02-17 21:20:49.000000000 +0100
+++ wireless-testing/net/mac80211/debugfs_sta.c 2010-02-17 21:20:53.000000000 +0100
@@ -57,7 +57,6 @@ STA_FILE(tx_filtered, tx_filtered_count,
STA_FILE(tx_retry_failed, tx_retry_failed, LU);
STA_FILE(tx_retry_count, tx_retry_count, LU);
STA_FILE(last_signal, last_signal, D);
-STA_FILE(last_noise, last_noise, D);
STA_FILE(wep_weak_iv_count, wep_weak_iv_count, LU);

static ssize_t sta_flags_read(struct file *file, char __user *userbuf,
@@ -289,7 +288,6 @@ void ieee80211_sta_debugfs_add(struct st
DEBUGFS_ADD(tx_retry_failed);
DEBUGFS_ADD(tx_retry_count);
DEBUGFS_ADD(last_signal);
- DEBUGFS_ADD(last_noise);
DEBUGFS_ADD(wep_weak_iv_count);
DEBUGFS_ADD(ht_capa);
}
--- wireless-testing.orig/net/mac80211/rx.c 2010-02-17 21:20:32.000000000 +0100
+++ wireless-testing/net/mac80211/rx.c 2010-02-17 21:26:31.000000000 +0100
@@ -179,14 +179,6 @@ ieee80211_add_rx_radiotap_header(struct
pos++;
}

- /* IEEE80211_RADIOTAP_DBM_ANTNOISE */
- if (local->hw.flags & IEEE80211_HW_NOISE_DBM) {
- *pos = status->noise;
- rthdr->it_present |=
- cpu_to_le32(1 << IEEE80211_RADIOTAP_DBM_ANTNOISE);
- pos++;
- }
-
/* IEEE80211_RADIOTAP_LOCK_QUALITY is missing */

/* IEEE80211_RADIOTAP_ANTENNA */
@@ -1078,7 +1070,6 @@ ieee80211_rx_h_sta_process(struct ieee80
sta->rx_fragments++;
sta->rx_bytes += rx->skb->len;
sta->last_signal = status->signal;
- sta->last_noise = status->noise;

/*
* Change STA power saving mode only at the end of a frame
--- wireless-testing.orig/net/mac80211/sta_info.h 2010-02-17 21:20:39.000000000 +0100
+++ wireless-testing/net/mac80211/sta_info.h 2010-02-17 21:20:44.000000000 +0100
@@ -200,7 +200,6 @@ struct sta_ampdu_mlme {
* @rx_fragments: number of received MPDUs
* @rx_dropped: number of dropped MPDUs from this STA
* @last_signal: signal of last received frame from this STA
- * @last_noise: noise of last received frame from this STA
* @last_seq_ctrl: last received seq/frag number from this STA (per RX queue)
* @tx_filtered_count: number of frames the hardware filtered for this STA
* @tx_retry_failed: number of frames that failed retry
@@ -271,7 +270,6 @@ struct sta_info {
unsigned long rx_fragments;
unsigned long rx_dropped;
int last_signal;
- int last_noise;
__le16 last_seq_ctrl[NUM_RX_DATA_QUEUES];

/* Updated from TX status path only, no locking requirements */



2010-02-18 20:27:39

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

On Thu, Feb 18, 2010 at 11:57 AM, Kalle Valo <[email protected]> wrote:
> Johannes Berg <[email protected]> writes:
>
>>> I'm not saying that I understand this completely, but for me it
>>> would make sense to disable iwlwifi's broken noise reporting
>>> only. No reason to disable it for everyone if some of them are
>>> broken.
>>
>> Well it's kinda bound to be broken elsewhere too because we don't even
>> know how various devices gather the values. With iwlwifi at least we
>> know how it gets the value.
>
> Also wl1251 is more or less broken related to noise reporting. I even
> tried to find information how to use it properly but didn't get
> anything.

For Atheros its only busted since we don't distinguish noise per
channel, but otherwise I can't think of anything bogus about it. Last
time I looked into how its computed is it was calculated during SIFS
time, but that was a while back and based on some patent stuff.

Luis

2010-02-18 19:57:37

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

Johannes Berg <[email protected]> writes:

>> I'm not saying that I understand this completely, but for me it
>> would make sense to disable iwlwifi's broken noise reporting
>> only. No reason to disable it for everyone if some of them are
>> broken.
>
> Well it's kinda bound to be broken elsewhere too because we don't even
> know how various devices gather the values. With iwlwifi at least we
> know how it gets the value.

Also wl1251 is more or less broken related to noise reporting. I even
tried to find information how to use it properly but didn't get
anything.

--
Kalle Valo

2010-02-20 11:07:16

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v3] mac80211: deprecate RX status noise

On Thu, 2010-02-18 at 17:28 -0800, Sam Leffler wrote:
> Depends on your definition of channel. For MIMO devices you can have
> NF per RX chain.

Indeed.

> NF is typically measured infrequently but the frequency is inherently
> hw-specific.

Right.

> Given radiotap is inherently packet-oriented there was little choice
> but to package noise in the way it is. If you include it only when it
> changes but then you lose the ability to interpret each record
> independently. Given this value is 8-bits I don't see the big deal.
> Fixing drivers to include useful data seems more important.

Ah. No, this is not really what I'm debating. For radiotap, we can
include the value in every packet, no matter when it was measured. But
for actual measurement API etc. I think we need to take more care and
not require the driver to fill the status per packet. We can handle
that, for radiotap, in the stack; actually getting noise information out
of the card into userspace _when requested_ should have more of an
up-to-date guarantee (or just not give a value) though, I think. I'd be
happy to make the stack fill radiotap with whatever value we have, but
the way we report it now from the driver to the stack seems completely
bogus.

johannes