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>
