Please give me a day or so. My nearest CVS (Vienna) is not really
fast. The last time it refuses the connection during fetching.

> On Wed, Jan 13, 2016 at 02:18:47PM +0100, Christoph R. Murauer wrote:
>> > On Wed, Jan 13, 2016 at 01:20:08PM +0100, Christoph R. Murauer
>> wrote:
>> >> OT and only for the archive : iwm0 works not (dhcp ends always
>> with
>> >> no
>> >> link ... sleeping) with a TP-Link M7350 (4G / LTE modem)
>> >
>> > Not very off-topic since development for 11n support is on-going.
>> >
>> > Can you please check if it works as expected if you run one of
>> > these commands?
>> >
>> >   ifconfig iwm0 media autoselect mode 11a
>> >
>> >   ifconfig iwm0 media autoselect mode 11g
>> >
>> > If either command fixes it, you're probably seeing an
>> interoperability
>> > problem in 11n mode with this particular AP.
>> >
>>
>> Hello !
>>
>> Thanks for your answer.
>> Default output after reboot using /etc/hostname.iwm0
>>
>> ifconfig iwm0
>> iwm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>>         lladdr cc:3d:82:52:2b:5a
>>         priority: 4
>>         groups: wlan
>>         media: IEEE802.11 autoselect
>>         status: no network
>>         ieee80211: nwid TP-LINK_M7350_6D1625 wpakey <not displayed>
>> wpaprotos wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp
>> wpagroupcipher tkip
>>
>> more /etc/hostname.iwm0
>> nwid TP-LINK_M7350_6D1625
>> wpakey 21154320
>> dhcp
>>
>> No worry, factory defaults. Content is a copy of
>> /etc/hostname.urtwn0.
>>
>> Booth lines have no effect with this AP.
>>
>> Output for urtwn0 using /etc/hostname.urtwn0 also since reboot.
>>
>> urtwn0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>>         lladdr c4:e9:84:06:6c:a7
>>         priority: 4
>>         groups: wlan egress
>>         media: IEEE802.11 autoselect (OFDM54 mode 11g)
>>         status: active
>>         ieee80211: nwid TP-LINK_M7350_6D1625 chan 9 bssid
>> 3c:46:d8:6d:16:25 20dBm wpakey <not displayed> wpaprotos
>> wpa1,wpa2 wpaakms psk wpaciphers tkip,ccmp wpagroupcipher tkip
>>         inet 192.168.0.104 netmask 0xffffff00 broadcast
>> 192.168.0.255
>>
>> ifconfig iwm0 scan works.
>>
>> If I switch back to b it works with the Nexus 7 (also not with a and
>> g).
>>
>> ifconfig iwm0 media autoselect mode 11b
>> dhclient iwm0
>> iwm0: no link ........... got link
>> DHCPREQUEST on iwm0 to 255.255.255.255
>> DHCPACK from 192.168.43.1 (02:1a:11:f4:84:91)
>> bound to 192.168.43.89 -- renewal in 1800 seconds.
>>
>> ifconfig iwm0
>> iwm0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>>         lladdr cc:3d:82:52:2b:5a
>>         priority: 4
>>         groups: wlan
>>         media: IEEE802.11 autoselect mode 11b (DS1 mode 11b)
>>         status: active
>>         ieee80211: nwid AP chan 6 bssid 02:1a:11:f4:84:91 100%
>> wpakey
>> <not displayed> wpaprotos wpa1,wpa2 wpaakms psk wpaciphers
>> tkip,ccmp wpagroupcipher tkip
>>         inet 192.168.43.89 netmask 0xffffff00 broadcast
>> 192.168.43.255
>>
>> Tried the TP-Link AP with b again with the same result.
>>
>> Maybe it helps.
>
> 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);
>       }
>       /*

Reply via email to