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