Date: Thu, 15 Jul 2010 09:34:01 +0000 (UTC) From: Bernhard Schmidt <bschmidt@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r210110 - head/sys/dev/iwn Message-ID: <201007150934.o6F9Y1ib046005@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: bschmidt Date: Thu Jul 15 09:34:00 2010 New Revision: 210110 URL: http://svn.freebsd.org/changeset/base/210110 Log: Detect active chains differently to work around a firmware bug which would mark non-existing chains as active. Obtained from: OpenBSD MFC after: 1 week Modified: head/sys/dev/iwn/if_iwn.c Modified: head/sys/dev/iwn/if_iwn.c ============================================================================== --- head/sys/dev/iwn/if_iwn.c Thu Jul 15 09:30:54 2010 (r210109) +++ head/sys/dev/iwn/if_iwn.c Thu Jul 15 09:34:00 2010 (r210110) @@ -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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007150934.o6F9Y1ib046005>