Search Linux Wireless

Re: [PATCH] mac80211: Report correct wireless statistics

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2007-04-09 at 08:07 -0400, Dan Williams wrote:
> On Mon, 2007-04-09 at 00:43 -0400, Michael Wu wrote:
> > On Sunday 08 April 2007 23:54, Larry Finger wrote:
> > > Why would I want to do this?
> > Did it fix the output?
> > 
> > > If the community agrees on anything, it is 
> > > that the signal is given in dBm (i.e. a negative number) and that the rssi
> > > is a positive number.
> > Nope. dBm doesn't have to be negative, though it often is since most wireless 
> > hardware isn't that powerful. RSSI is simply a number that's bigger for 
> > stronger signals. It could be dBm, but it doesn't have to be. If you want a 
> > stronger definition of RSSI, look at RCPI.
> > 
> > > The firmware in the bcm43xx chips return a quantity 
> > > that looks like an rssi with a received packet, and
> > > bcm43xx_rssi_postprocess turns that into a quantity that looks like dBm.
> > > Your patch reverses those designations and mixes up the two quantities.
> > > Again I ask "Why"?
> > >
> > Because of the naming/use of the statistics in mac80211 and WE. Signal ends up 
> > getting assigned to (struct iw_quality).qual, which is actually just an 
> > arbitrary link quality indicator, not dBm. Anything you care about can be put 
> > there. (r)ssi gets assigned to (struct iw_quality).level, which is RSSI. WE 
> > allows that and noise to be specified in either arbitrary units or dBm or 
> > RCPI.
> > 
> > Yes, I did reverse your conventions, but it makes more sense this way. (R)SSI 
> > is always valid to assign to (struct iw_quality).level and signal ((struct 
> > iw_quality).qual) is quite arbitrary and cannot be specified in specific 
> > units.
> > 
> > Signal should be probably be renamed to qual to make it more clear that it is 
> > arbitrary.
> 
> In WE, qual is arbitrary within a few limits:
> 
> a) qual _must_ change on a linear scale
> b) a valid max_qual.qual must be set
> c) qual must fall within the bounds of [0, max_qual.qual] inclusive

d) max_qual.qual must be greater than 0

> If you report 'level' in dBm, you must set the IW_QUAL_DBM flag.
> Otherwise, 'level' _may_ be assumed to be RSSI.  If 'level' is dBm,
> max_qual.level must be 0.  If 'level' is RSSI, max_qual.level must be
> greater than 0, and level must fall within the bounds of [0,
> max_qual.level] inclusive.  Replace 'level' with 'noise' here for the
> rules for noise.
> 
> I don't particularly care if level/noise is RSSI _as long as_ you give
> the max RSSI for your part.  Different radio parts have different max
> RSSI values, and if you're writing a driver you sure better know them or
> figure some reasonable ones out by experimentation.  RSSI is entirely
> vendor defined and does _not_ conform to any rules.  Therefore we need
> the max RSSI to get usable signal strength reports from your part.

RSSI doesn't conform to any rules _except_ that has a lower bound of 0
and an upper bound of the max for your part.  WE happens to provide only
a u8 for the value, so if your vendor defines RSSI as > 255 you must
somehow stuff RSSI into a u8.

14.2.3.2 RXVECTOR RSSI
    The receive signal strength indicator (RSSI) is an optional
parameter that has a value of 0 through RSSI Max.

Every vendor has a different max; Symbol's max is (at least used to be)
31.  Cisco aironet's max is 100.  Atheros' max appears to be 60.
Therefore, you must specify your max RSSI level in max_qual.level if you
use RSSI so that userspace tools can actually use your RSSI to produce
meaningful numbers.

Dan

> I know that 0 dBm isn't actually the upper bound, but in practice most
> people aren't going to get parts that go above that.  0 dBm should be
> considered a _limitation_ of WEXT that we obviously fix with
> cfg80211/nl80211 when we bring some sanity to signal strength reporting.
> 
> Again, if you report level in RSSI, you must provide the max RSSI for
> your part in max_qual.level.
> 
> Dan
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux