Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Nov 2004 18:48:01 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 64831 for review
Message-ID:  <200411101848.iAAIm1tR037348@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help

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

Change 64831 by sam@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;



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