All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hin-Tak Leung <htl10@users.sourceforge.net>
To: John W Linville <linville@tuxdriver.com>,
	Larry Finger <Larry.Finger@lwfinger.net>
Cc: Herton Ronaldo Krzesinski <herton@mandriva.com.br>,
	barreyromartin@gmail.com, linux-wireless@vger.kernel.org
Subject: Re: [PATCH] rtl8187: Improve wireless statistics for RTL8187
Date: Thu, 4 Dec 2008 02:50:35 +0000 (GMT)	[thread overview]
Message-ID: <27385.37285.qm@web23104.mail.ird.yahoo.com> (raw)
In-Reply-To: <49373748.Wmr8pTF2+oHOugNN%Larry.Finger@lwfinger.net>

--- On Thu, 4/12/08, Larry Finger <Larry.Finger@lwfinger.net> wrote:

> The current wireless statistics for the RTL8187 poorly
> indicate the signal
> strength and quality. With testing, I found that the AGC
> value is inversely
> correlated with the strength as in the RTL8187B. By
> implementing a similar
> calculation, much more code becomes common to the two
> devices.
>=20
> Signed-off-by: Larry Finger
> <Larry.Finger@lwfinger.net>
> Tested by: Mart=EDn Ernesto Barreyro
> <barreyromartin@gmail.com>
> ---
Acked-by: Hin-Tak Leung <htl10@users.sourceforge.net>

Acually eveything to do with "quality" can be moved out of the if/then.

I mean these 3 lines:

+		if (quality > 100)
+			quality =3D 100;
+		....
+		rx_status.qual =3D quality;

You have removed "rx_status.qual =3D quality;" from the "then" part, bu=
t didn't put it back in the common portion afterwards?

Also, what happened to "dev->max_signal =3D 65;" at the end?



>=20
> John,
>=20
> This is 2.6.29 material.
>=20
> Larry
> ---
>=20
> Index:
> wireless-testing/drivers/net/wireless/rtl818x/rtl8187_dev.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> ---
> wireless-testing.orig/drivers/net/wireless/rtl818x/rtl8187_dev.c
> +++
> wireless-testing/drivers/net/wireless/rtl818x/rtl8187_dev.c
> @@ -313,29 +313,17 @@ static void rtl8187_rx_cb(struct urb
> *ur
>  		struct rtl8187_rx_hdr *hdr =3D
>  			(typeof(hdr))(skb_tail_pointer(skb) - sizeof(*hdr));
>  		flags =3D le32_to_cpu(hdr->flags);
> -		signal =3D hdr->signal & 0x7f;
> +		/* As with the RTL8187B below, the AGC is used to
> calculate
> +		 * signal strength and quality. In this case, the
> scaling
> +		 * constants are derived from the output of p54usb.
> +		 */
> +		quality =3D 130 - ((41 * hdr->agc) >> 6);
> +		if (quality > 100)
> +			quality =3D 100;
> +		signal =3D -4 - ((27 * hdr->agc) >> 6);
> +		rx_status.qual =3D quality;
>  		rx_status.antenna =3D (hdr->signal >> 7) & 1;
> -		rx_status.noise =3D hdr->noise;
>  		rx_status.mactime =3D le64_to_cpu(hdr->mac_time);
> -		priv->quality =3D signal;
> -		rx_status.qual =3D priv->quality;
> -		priv->noise =3D hdr->noise;
> -		rate =3D (flags >> 20) & 0xF;
> -		if (rate > 3) { /* OFDM rate */
> -			if (signal > 90)
> -				signal =3D 90;
> -			else if (signal < 25)
> -				signal =3D 25;
> -			signal =3D 90 - signal;
> -		} else {	/* CCK rate */
> -			if (signal > 95)
> -				signal =3D 95;
> -			else if (signal < 30)
> -				signal =3D 30;
> -			signal =3D 95 - signal;
> -		}
> -		rx_status.signal =3D signal;
> -		priv->signal =3D signal;
>  	} else {
>  		struct rtl8187b_rx_hdr *hdr =3D
>  			(typeof(hdr))(skb_tail_pointer(skb) - sizeof(*hdr));
> @@ -356,15 +344,15 @@ static void rtl8187_rx_cb(struct urb
> *ur
>  		if (quality > 100)
>  			quality =3D 100;
>  		signal =3D 14 - hdr->agc / 2;
> -		rx_status.qual =3D quality;
> -		priv->quality =3D quality;
>  		rx_status.signal =3D signal;
> -		priv->signal =3D signal;
>  		rx_status.antenna =3D (hdr->rssi >> 7) & 1;
>  		rx_status.mactime =3D le64_to_cpu(hdr->mac_time);
> -		rate =3D (flags >> 20) & 0xF;
>  	}
> =20
> +	priv->quality =3D quality;
> +	rx_status.signal =3D signal;
> +	priv->signal =3D signal;
> +	rate =3D (flags >> 20) & 0xF;
>  	skb_trim(skb, flags & 0x0FFF);
>  	rx_status.rate_idx =3D rate;
>  	rx_status.freq =3D dev->conf.channel->center_freq;
> @@ -1294,6 +1282,7 @@ static int __devinit
> rtl8187_probe(struc
> =20
>  	priv->mode =3D NL80211_IFTYPE_MONITOR;
>  	dev->flags =3D IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING
> |
> +		     IEEE80211_HW_SIGNAL_DBM |
>  		     IEEE80211_HW_RX_INCLUDES_FCS;
> =20
>  	eeprom.data =3D dev;
> @@ -1409,13 +1398,8 @@ static int __devinit
> rtl8187_probe(struc
>  		(*channel++).hw_value =3D txpwr >> 8;
>  	}
> =20
> -	if (priv->is_rtl8187b) {
> +	if (priv->is_rtl8187b)
>  		printk(KERN_WARNING "rtl8187: 8187B chip
> detected.\n");
> -		dev->flags |=3D IEEE80211_HW_SIGNAL_DBM;
> -	} else {
> -		dev->flags |=3D IEEE80211_HW_SIGNAL_UNSPEC;
> -		dev->max_signal =3D 65;
> -	}
> =20
>  	/*
>  	 * XXX: Once this driver supports anything that requires


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

  reply	other threads:[~2008-12-04  2:50 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-04  1:50 [PATCH] rtl8187: Improve wireless statistics for RTL8187 Larry Finger
2008-12-04  2:50 ` Hin-Tak Leung [this message]
2008-12-04  3:20   ` Larry Finger
2008-12-15 19:35     ` John W. Linville
2008-12-15 20:01       ` Larry Finger
2008-12-15 20:10         ` John W. Linville

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=27385.37285.qm@web23104.mail.ird.yahoo.com \
    --to=htl10@users.sourceforge.net \
    --cc=Larry.Finger@lwfinger.net \
    --cc=barreyromartin@gmail.com \
    --cc=herton@mandriva.com.br \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    /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.