From: Dan Williams <dcbw@redhat.com>
To: Larry Finger <Larry.Finger@lwfinger.net>
Cc: John Linville <linville@tuxdriver.com>,
netdev@vger.kernel.org, Jean Tourrilhes <jt@hpl.hp.com>
Subject: Re: [PATCH] bcm43xx-softmac: Further improvement in wireless statistics
Date: Thu, 13 Jul 2006 23:37:45 -0400 [thread overview]
Message-ID: <1152848265.2584.48.camel@localhost.localdomain> (raw)
In-Reply-To: <44B474AF.6010907@lwfinger.net>
On Tue, 2006-07-11 at 23:03 -0500, Larry Finger wrote:
> Dan Williams wrote:
> >
> > NAK... remember, range->max_qual.level must be _0_ if you're in dBm,
>
> I do not think this is right. From the comments in include/linux/wireless.h:
>
> /* Quality of link & SNR stuff */
> /* Quality range (link, level, noise)
> * If the quality is absolute, it will be in the range [0 ; max_qual],
> * if the quality is dBm, it will be in the range [max_qual ; 0].
> * Don't forget that we use 8 bit arithmetics... */
Jean, what's the official word on range->max_qual.level?
I don't know where I came up with the requirement that max_qual.level
must be 0 to indicate that the units are in dBm (as opposed to RSSI),
but it might well have been because we had no way to detect RSSI vs. dBm
before IW_QUAL_DBM was added as a flag in WE-19, and therefore using
level = 0 was the only reliable way because 0 is the theoretical "max"
level that most cards can handle.
So if you want to express your quality in dBm, you have a choice; either
set IW_QUAL_DBM explicitly and do what you want with max_qual.level, or
set your max_qual.level to 0. That's my interpretation, of course I
could be wrong.
Furthermore, there's no point to setting your max_qual.level to be the
lowest level, since that's what your max_qual.noise is!!!
max_qual.noise is the noise floor of your card and that effectively _is_
the lowest level at which your card can operate.
In the ideal world, which we are now much closer to, we could _require_
that IW_QUAL_DBM was set, otherwise values would be interpreted as RSSI.
And we can if the driver's we_source_version is >= 19. I agree, it's
all quite confusing for starters.
Jean?
> My interpretation of this is that if 0 < max_qual < 128, the quantity is absolute. Conversely, if
> -129 < max_qual < 0, the quantity is in dBm. This is in fact what I see, both from the KDE applets
> and the various wireless extension tools.
>
> > since 0 is the actual maximum, and your level values are negative since
> > they are in dBm.
> >
> > If KDE network applets display the wrong value when max_qual.level == 0,
> > then they are wrong and need to be fixed.
>
> They display correctly; however, choosing 0 rather than -100 expands the scale to the point that my
> noise values of -65 dBm display as rather high values. Despite the 8-bit arithmetic, I think it
> creates a scale from 0 to -255 dBm. My choice of parameters expands the scale by limiting the lower
> value to -100 dBm.
Hm, I didn't think that WE's quality specification took scale into
account; AFAIK you get 255 values to play with, and each maps either to
an RSSI value of your choice, or to an absolute dBm value. There's no
scaling involved AFAIK.
> > If you actually want RSSI, then you set max_qual.level to the upper
> > limit of your RSSI, and the RSSI is assumed to go from 0 ->
> > max_qual.level. AFAIK, the patch you had earlier is using dBm, _not_
> > RSSI, so max_qual.level = 0 is correct.
>
> As I explained earlier, the RSSI value returned by the firmware has been processed by the driver
> into a quantity that varies between -10 and -65 as the receiver is moved from very close to very far
> from the AP, which looks like strength in dBm. This is what is stored in stats.rssi. As this seems
> to be confusing, I will rewrite the driver code so that this value is returned in stats.signal with
> the RSSI value preserved in stats.rssi. The quality output will be derived from stats.rssi, and the
> level output will come from stats.signal. These two quantities have a correlation of -1 so there is
> no new information, but that might change in the future.
So; if you want to use dBm you should probably set IW_QUAL_DBM flag on
the qual->updated field when you update level & noise. Then, nothing is
ambiguous and everyone knows exactly what you mean. Which is why
IW_QUAL_DBM was added, because I complained that quality was too
ambiguous.
Jean?
Cheers,
Dan
> Larry
next prev parent reply other threads:[~2006-07-14 3:39 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-11 16:04 [PATCH] bcm43xx-softmac: Further improvement in wireless statistics Larry Finger
2006-07-11 19:32 ` Dan Williams
2006-07-12 4:03 ` Larry Finger
2006-07-14 3:37 ` Dan Williams [this message]
2006-07-14 4:32 ` Larry Finger
2006-07-14 16:25 ` Jean Tourrilhes
2006-07-14 17:09 ` Larry Finger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1152848265.2584.48.camel@localhost.localdomain \
--to=dcbw@redhat.com \
--cc=Larry.Finger@lwfinger.net \
--cc=jt@hpl.hp.com \
--cc=linville@tuxdriver.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.