Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 May 2016 21:24:10 +0000 (UTC)
From:      Adrian Chadd <adrian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r300079 - head/sys/dev/bwn
Message-ID:  <201605172124.u4HLOAYN092983@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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))



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605172124.u4HLOAYN092983>