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))
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to