[PATCH 1/1] UBUNTU: rt2x00: re-adjust wifi signal strength range
Andy Whitcroft
apw at canonical.com
Fri Apr 9 14:14:25 UTC 2010
On Fri, Apr 09, 2010 at 10:14:57AM +0100, Colin King wrote:
> From: Colin Ian King <colin.king at canonical.com>
>
> BugLink: https://bugs.launchpad.net/bugs/557239
>
> The range of signal strength reported by rt2x00 is very narrow and
> the base offset is too low. The original algorithm was based on a
> mix of 20% from the RSSI, 40% from RX quality and 40% from TX
> quality metrics.
>
> For the rt73usb driver, the TX failure metric is a piece of fiction
> and always returns success (unless there is a USB URB failure) so
> this skews the TX quality metrics and hence skews the signal
> strength result.
>
> The original calculation is only really useful for a network
> that you're already connected to. The reliance on RX and TX
> quality metrics when not connected to a network skews the final
> signal strength since the only valid metric (RSSI) is a minor
> contributor to the final calculation.
>
> A survey of most wifi drivers show that using just the RSSI is
> a common method of producing a signal strength metric, so this
> fix adjusts the wifi strength to be calculated just on RSSI.
>
> This fix also adjusts the range of the DEFAULT_RSSI_OFFSET to
> correctly reflect the absolute maximum range of the RSSI. The
> original code was a little overzealous in providing enough
> headroom.
>
> Signed-off-by: Colin Ian King <colin.king at canonical.com>
> ---
> .../drivers/net/wireless/rt2x00/rt2x00.h | 6 +++---
> .../drivers/net/wireless/rt2x00/rt73usb.h | 2 +-
> 2 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt2x00.h b/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt2x00.h
> index 311b8d0..97812c8 100644
> --- a/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt2x00.h
> +++ b/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt2x00.h
> @@ -196,9 +196,9 @@ struct link_qual {
> int tx_percentage;
> int tx_success;
> int tx_failed;
> -#define WEIGHT_RSSI 20
> -#define WEIGHT_RX 40
> -#define WEIGHT_TX 40
> +#define WEIGHT_RSSI 100
> +#define WEIGHT_RX 0
> +#define WEIGHT_TX 0
> };
>
> /*
> diff --git a/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt73usb.h b/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt73usb.h
> index 60f98be..97f9503 100644
> --- a/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt73usb.h
> +++ b/updates/compat-wireless-2.6/drivers/net/wireless/rt2x00/rt73usb.h
> @@ -39,7 +39,7 @@
> * Signal information.
> * Defaul offset is required for RSSI <-> dBm conversion.
> */
> -#define DEFAULT_RSSI_OFFSET 120
> +#define DEFAULT_RSSI_OFFSET 104
>
> /*
> * Register layout information.
Looks to do what you claim. I am assuming you are measureing against
other cards in the same environ and with these patches have a similar
metrics. So:
Acked-by: Andy Whitcroft <apw at canonical.com>
-apw
More information about the kernel-team
mailing list