> 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.

Reply via email to