From 0da6becc6fd936f7f581449257782276e45a3005 Mon Sep 17 00:00:00 2001 From: "John W. Linville" Date: Mon, 19 Jul 2010 16:35:20 -0400 Subject: [PATCH] --- yaml --- r: 203733 b: refs/heads/master c: 8b74964c73ca9eed7078388d871cc7fae973cb63 h: refs/heads/master i: 203731: 90abd748464a041bf276ead4bec39805b6e23d4e v: v3 --- [refs] | 2 +- trunk/drivers/net/wireless/rtl818x/rtl8180_dev.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 6b004c1226f5..9adfc38d31f3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b603742f49c3ec922522602e18ac22e8f6835132 +refs/heads/master: 8b74964c73ca9eed7078388d871cc7fae973cb63 diff --git a/trunk/drivers/net/wireless/rtl818x/rtl8180_dev.c b/trunk/drivers/net/wireless/rtl818x/rtl8180_dev.c index 42705028751d..31808f96a3d6 100644 --- a/trunk/drivers/net/wireless/rtl818x/rtl8180_dev.c +++ b/trunk/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 = 90 - clamp_t(u8, signal, 25, 90); + else + signal = 95 - 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);