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);
> }
> /*