> Please try this diff. > I suspect this bug is causing all sorts of problems. > > Index: ieee80211.c > =================================================================== > RCS file: /cvs/src/sys/net80211/ieee80211.c,v > retrieving revision 1.57 > diff -u -p -r1.57 ieee80211.c > --- ieee80211.c 12 Jan 2016 09:28:09 -0000 1.57 > +++ ieee80211.c 13 Jan 2016 14:19:26 -0000 > @@ -749,8 +749,10 @@ ieee80211_setmode(struct ieee80211com *i > modeflags = chanflags[mode]; > for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { > c = &ic->ic_channels[i]; > - if (mode == IEEE80211_MODE_AUTO || > - (c->ic_flags & modeflags) == modeflags) > + if (mode == IEEE80211_MODE_AUTO) { > + if (c->ic_flags != 0) > + break; > + } else if ((c->ic_flags & modeflags) == modeflags) > break; > } > if (i > IEEE80211_CHAN_MAX) { > @@ -764,8 +766,10 @@ ieee80211_setmode(struct ieee80211com *i > memset(ic->ic_chan_active, 0, sizeof(ic->ic_chan_active)); > for (i = 0; i <= IEEE80211_CHAN_MAX; i++) { > c = &ic->ic_channels[i]; > - if (mode == IEEE80211_MODE_AUTO || > - (c->ic_flags & modeflags) == modeflags) > + if (mode == IEEE80211_MODE_AUTO) { > + if (c->ic_flags != 0) > + setbit(ic->ic_chan_active, i); > + } else if ((c->ic_flags & modeflags) == modeflags) > setbit(ic->ic_chan_active, i); > } > /* >
Hello ! I tried the patch with the snapshot from yesterday but the result was the same - no link ... sleeping in a, b and g mode.