Search Linux Wireless

Re: [PATCH] rtl8180: improve signal reporting for rtl8185 hardware

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

 



On Mon, Jul 19, 2010 at 11:47 PM, John W. Linville
<linville@xxxxxxxxxxxxx> wrote:
> The existing code seemed to be somewhat based on the datasheet, but
> varied substantially from the vendor-provided driver.  This mirrors the
> handling of the rtl8185 case from that driver, but still neglects the
> specifics for the rtl8180 hardware.  Those details are a bit muddled...
>
> Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/rtl818x/rtl8180_dev.c |   11 ++++++++---
>  1 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c
> index 4270502..90046dc 100644
> --- a/drivers/net/wireless/rtl818x/rtl8180_dev.c
> +++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c
> @@ -103,6 +103,7 @@ static void rtl8180_handle_rx(struct ieee80211_hw *dev)
>  {
>        struct rtl8180_priv *priv = dev->priv;
>        unsigned int count = 32;
> +       u8 signal;
>
>        while (count--) {
>                struct rtl8180_rx_desc *entry = &priv->rx_ring[priv->rx_idx];
> @@ -130,10 +131,14 @@ static void rtl8180_handle_rx(struct ieee80211_hw *dev)
>                        skb_put(skb, flags & 0xFFF);
>
>                        rx_status.antenna = (flags2 >> 15) & 1;
> -                       /* TODO: improve signal/rssi reporting */
> -                       rx_status.signal = (flags2 >> 8) & 0x7F;
> -                       /* XXX: is this correct? */
>                        rx_status.rate_idx = (flags >> 20) & 0xF;
> +                       /* TODO: improve signal/rssi reporting for !rtl8185 */
> +                       signal = (flags2 >> 17) & 0x7F;
> +                       if (rx_status.rate_idx > 3)
> +                               signal = clamp_t(u8, signal, 25, 90);
> +                       else
> +                               signal = clamp_t(u8, signal, 30, 95);
> +                       rx_status.signal = signal;
>                        rx_status.freq = dev->conf.channel->center_freq;
>                        rx_status.band = dev->conf.channel->band;
>                        rx_status.mactime = le64_to_cpu(entry->tsft);
> --
> 1.7.1.1
>
>

I tested this version of patch. Patch didn't apply cleanly for some
reason even tough when I mnauly typed it diff looks same.

The patch lets me use wifi but signal value is not yet correct. When I
have  closed AP only 50 cm away from my laptop.

 sudo iwlist wlan0 scan | grep Signal
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
                    Quality=46/100  Signal level=46/100
--
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