PERFORCE change 64831 for review

Sam Leffler sam at FreeBSD.org
Wed Nov 10 10:48:02 PST 2004


http://perforce.freebsd.org/chv.cgi?CH=64831

Change 64831 by sam at sam_ebb on 2004/11/10 18:47:23

	correct initial recv rssi handling; fixes scanning problem where
	we selected the wrong station based on rssi

Affected files ...

.. //depot/projects/wifi/sys/dev/ath/if_ath.c#17 edit

Differences ...

==== //depot/projects/wifi/sys/dev/ath/if_ath.c#17 (text+ko) ====

@@ -2076,6 +2076,10 @@
 		/* XXX stat+msg */
 		return NULL;
 	}
+	an->an_avgrssi = ATH_RSSI_DUMMY_MARKER;
+	an->an_halstats.ns_avgbrssi = ATH_RSSI_DUMMY_MARKER;
+	an->an_halstats.ns_avgrssi = ATH_RSSI_DUMMY_MARKER;
+	an->an_halstats.ns_avgtxrssi = ATH_RSSI_DUMMY_MARKER;
 	ath_rate_node_init(sc, an);
 
 	DPRINTF(sc, ATH_DEBUG_NODE, "%s: an %p\n", __func__, an);
@@ -2131,8 +2135,13 @@
 	u_int32_t avgrssi = ATH_NODE_CONST(ni)->an_avgrssi;
 	int32_t rssi;
 
-	rssi = HAL_EP_RND(avgrssi, HAL_RSSI_EP_MULTIPLIER);
-	if (rssi == 0)
+	/*
+	 * When only one frame is received there will be no state in
+	 * avgrssi so fallback on the value recorded by the 802.11 layer.
+	 */
+	if (avgrssi != ATH_RSSI_DUMMY_MARKER)
+		rssi = HAL_EP_RND(avgrssi, HAL_RSSI_EP_MULTIPLIER);
+	else
 		rssi = ni->ni_rssi;
 	/* NB: theoretically we shouldn't need this, but be paranoid */
 	return rssi < 0 ? 0 : rssi > 127 ? 127 : rssi;


More information about the p4-projects mailing list