[PATCH 1/1] UBUNTU: rt2x00: re-adjust wifi signal strength range

Stefan Bader stefan.bader at canonical.com
Mon Apr 12 15:17:23 UTC 2010


It sounds like you tested well. HAve you sent it upstream as well or is it not
applicable there? In general it seems to be doing what you claim...


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>
Acked-by: Stefan Bader <stefan.bader 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.





More information about the kernel-team mailing list