On Sat, Oct 29, 2016 at 01:13:47PM +0200, Stefan Sperling wrote:
> On Sat, Oct 08, 2016 at 07:34:55PM +0200, Mark Kettenis wrote:
> > > The addition might need to be tested on a 1TR1 and 2T3R setups.  I can
> > > test the latter, but I have no hardware to test the former.
> > 
> > FWIW, this seems to cause no regressions on:
> > 
> > iwn0 at pci2 dev 0 function 0 "Intel WiFi Link 5300" rev 0x00: msi, MIMO 
> > 3T3R, MoW, address 00:21:6a:13:67:82
> 
> The 1T1R devices listed in the man page are:
> 
>   Intel Centrino Wireless-N 135
>   Intel Centrino Wireless-N 105 
> 
> Does anybody have either of these devices?

Nobody seems to have these devices.
I am going to proceed soon and just hope that I won't break them.

> If so, please test the diff below during regular usage,
> and with these commands:
> 
>   ifconfig iwn0 mediaopt monitor up
>   tcpdump -n -i iwn0 -y IEEE802_11_RADIO
> 
> The expected behaviour is that tcpdump displays some frames
> (at least beacons from APs on the current channel).
> 
> Index: if_iwn.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pci/if_iwn.c,v
> retrieving revision 1.175
> diff -u -p -r1.175 if_iwn.c
> --- if_iwn.c  28 Oct 2016 10:11:22 -0000      1.175
> +++ if_iwn.c  29 Oct 2016 10:10:19 -0000
> @@ -4504,13 +4504,18 @@ iwn_config(struct iwn_softc *sc)
>       sc->rxon.ht_triple_mask = 0xff;
>       rxchain =
>           IWN_RXCHAIN_VALID(sc->rxchainmask) |
> -         IWN_RXCHAIN_MIMO_COUNT(2) |
> -         IWN_RXCHAIN_IDLE_COUNT(2);
> +         IWN_RXCHAIN_MIMO_COUNT(sc->nrxchains) |
> +         IWN_RXCHAIN_IDLE_COUNT(sc->nrxchains);
> +     if (ic->ic_opmode == IEEE80211_M_MONITOR) {
> +             rxchain |= IWN_RXCHAIN_FORCE_SEL(sc->rxchainmask);
> +             rxchain |= IWN_RXCHAIN_FORCE_MIMO_SEL(sc->rxchainmask);
> +             rxchain |= (IWN_RXCHAIN_DRIVER_FORCE | IWN_RXCHAIN_MIMO_FORCE);
> +     }
>       sc->rxon.rxchain = htole16(rxchain);
>       DPRINTF(("setting configuration\n"));
> -     DPRINTF(("%s: rxon chan %d flags %x cck %x ofdm %x\n", __func__,
> -         sc->rxon.chan, le32toh(sc->rxon.flags), sc->rxon.cck_mask,
> -         sc->rxon.ofdm_mask));
> +     DPRINTF(("%s: rxon chan %d flags %x cck %x ofdm %x rxchain %x\n",
> +         __func__, sc->rxon.chan, le32toh(sc->rxon.flags), sc->rxon.cck_mask,
> +         sc->rxon.ofdm_mask, sc->rxon.rxchain));
>       error = iwn_cmd(sc, IWN_CMD_RXON, &sc->rxon, sc->rxonsz, 0);
>       if (error != 0) {
>               printf("%s: RXON command failed\n", sc->sc_dev.dv_xname);
> 

Reply via email to