svn commit: r210671 - stable/8/sys/dev/iwn
Bernhard Schmidt
bschmidt at FreeBSD.org
Sat Jul 31 10:15:18 UTC 2010
Author: bschmidt
Date: Sat Jul 31 10:15:18 2010
New Revision: 210671
URL: http://svn.freebsd.org/changeset/base/210671
Log:
MFC r210110:
Detect active chains differently to work around a firmware bug which
would mark non-existing chains as active.
Obtained from: OpenBSD
Modified:
stable/8/sys/dev/iwn/if_iwn.c
Directory Properties:
stable/8/sys/ (props changed)
stable/8/sys/amd64/include/xen/ (props changed)
stable/8/sys/cddl/contrib/opensolaris/ (props changed)
stable/8/sys/contrib/dev/acpica/ (props changed)
stable/8/sys/contrib/pf/ (props changed)
stable/8/sys/dev/xen/xenpci/ (props changed)
Modified: stable/8/sys/dev/iwn/if_iwn.c
==============================================================================
--- stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:12:53 2010 (r210670)
+++ stable/8/sys/dev/iwn/if_iwn.c Sat Jul 31 10:15:18 2010 (r210671)
@@ -4134,10 +4134,14 @@ iwn_collect_noise(struct iwn_softc *sc,
val = MAX(calib->rssi[2], val);
/* Determine which antennas are connected. */
- sc->chainmask = 0;
+ sc->chainmask = sc->rxchainmask;
for (i = 0; i < 3; i++)
- if (val - calib->rssi[i] <= 15 * 20)
- sc->chainmask |= 1 << i;
+ if (val - calib->rssi[i] > 15 * 20)
+ sc->chainmask &= ~(1 << i);
+ DPRINTF(sc, IWN_DEBUG_CALIBRATE,
+ "%s: RX chains mask: theoretical=0x%x, actual=0x%x\n",
+ __func__, sc->rxchainmask, sc->chainmask);
+
/* If none of the TX antennas are connected, keep at least one. */
if ((sc->chainmask & sc->txchainmask) == 0)
sc->chainmask |= IWN_LSB(sc->txchainmask);
More information about the svn-src-all
mailing list