svn commit: r300079 - head/sys/dev/bwn

Adrian Chadd adrian at FreeBSD.org
Tue May 17 21:24:11 UTC 2016


Author: adrian
Date: Tue May 17 21:24:10 2016
New Revision: 300079
URL: https://svnweb.freebsd.org/changeset/base/300079

Log:
  [bwn] correctly calculate RSSI level.
  
  Tested:
  
  * BCM4311, PHY-G, STA mode
  * BCM4312, PHY-LP, STA mode
  * BCM4321, PHY-N, STA moe

Modified:
  head/sys/dev/bwn/if_bwn.c

Modified: head/sys/dev/bwn/if_bwn.c
==============================================================================
--- head/sys/dev/bwn/if_bwn.c	Tue May 17 21:23:13 2016	(r300078)
+++ head/sys/dev/bwn/if_bwn.c	Tue May 17 21:24:10 2016	(r300079)
@@ -5770,13 +5770,25 @@ bwn_rxeof(struct bwn_mac *mac, struct mb
 			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))


More information about the svn-src-all mailing list