From 3095d9fbc62164ed5a543725a888efc6ac76d013 Mon Sep 17 00:00:00 2001 From: Adrian Chadd Date: Tue, 17 May 2016 21:24:10 +0000 Subject: [PATCH] [bwn] correctly calculate RSSI level. Tested: * BCM4311, PHY-G, STA mode * BCM4312, PHY-LP, STA mode * BCM4321, PHY-N, STA moe --- sys/dev/bwn/if_bwn.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sys/dev/bwn/if_bwn.c b/sys/dev/bwn/if_bwn.c index 069f0cb28ad..1d8e04cbac7 100644 --- a/sys/dev/bwn/if_bwn.c +++ b/sys/dev/bwn/if_bwn.c @@ -5770,13 +5770,25 @@ bwn_rxeof(struct bwn_mac *mac, struct mbuf *m, const void *_rxhdr) rssi = max(rxhdr->phy.n.power1, rxhdr->ps2.n.power2); else rssi = max(rxhdr->phy.n.power0, rxhdr->phy.n.power1); +#if 0 + DPRINTF(mac->mac_sc, BWN_DEBUG_RECV, + "%s: power0=%d, power1=%d, power2=%d\n", + __func__, + rxhdr->phy.n.power0, + rxhdr->phy.n.power1, + rxhdr->ps2.n.power2); +#endif break; default: /* XXX TODO: implement rssi for other PHYs */ break; } + /* + * RSSI here is absolute, not relative to the noise floor. + */ noise = mac->mac_stats.link_noise; + rssi = rssi - noise; /* RX radio tap */ if (ieee80211_radiotap_active(ic))