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
next prev parent 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).