Re: ieee80211 panic on athn reconfig

2020-08-01 Thread Jan Stary
On May 03 19:21:17, s...@stsp.name wrote:
> On Fri, Apr 17, 2020 at 12:08:39PM +0200, Jan Stary wrote:
> > This is current/i386 on an ALIX (dmesg below) with
> > 
> >   athn0 at pci0 dev 12 function 0 "Atheros AR9280" rev 0x01: irq 9
> >   athn0: AR9280 rev 2 (2T2R), ROM rev 22, address 04:f0:21:01:d6:86
> > 
> > # cat hostname.athn0
> > inet 192.168.33.1 255.255.255.0 NONE
> > media autoselect mode 11g mediaopt hostap chan 2
> > nwid stare.cz wpakey hovnoPrdel123
> > 
> > After changing the password, or the channel, or the mode, and doing
> > 
> > # sh /etc/netstart athn0
> > 
> > the machine reproducibly panics (cereal script below).
> > 
> > I have no idea why it panics in ieee80211_encrypt().
> > It happens both with clients associated and not.
> > 
> > Is this known with athn(4)?
> > How can I help debug this?
> > 
> > Jan
> > 
> > 
> > ddb> show panic
> > ieee80211_encrypt: key unset for sw crypto: 0
> > 
> > ddb> trace
> > db_enter() at db_enter+0x4
> > panic(d0b83788) at panic+0xcc
> > ieee80211_encrypt(d194e030,d195bc00,d194eb00) at ieee80211_encrypt+0x70
> > ar5008_tx(d194e000,d195bc00,d19a,2) at ar5008_tx+0x9a
> > ar5008_swba_intr(d194e000) at ar5008_swba_intr+0x238
> > ar5008_intr(d194e000) at ar5008_intr+0x12f
> > intr_handler(f3b1d67c,d1945480) at intr_handler+0x18
> > Xintr_legacy9_untramp() at Xintr_legacy9_untramp+0xf7
> > end of kernel

Sorry for being so late; apparently, the fix is already in.

I can confirm that none of the above happens any more:
changing the password, the mode, or the channel
does not result in a panic, with and without clients connected.


> Are you using clients which use powersave mode, such as phones?

yes, androids.

Jan



Re: ieee80211 panic on athn reconfig

2020-05-03 Thread Stefan Sperling
On Fri, Apr 17, 2020 at 12:08:39PM +0200, Jan Stary wrote:
> This is current/i386 on an ALIX (dmesg below) with
> 
>   athn0 at pci0 dev 12 function 0 "Atheros AR9280" rev 0x01: irq 9
>   athn0: AR9280 rev 2 (2T2R), ROM rev 22, address 04:f0:21:01:d6:86
> 
> # cat hostname.athn0
> inet 192.168.33.1 255.255.255.0 NONE
> media autoselect mode 11g mediaopt hostap chan 2
> nwid stare.cz wpakey hovnoPrdel123
> 
> After changing the password, or the channel, or the mode, and doing
> 
> # sh /etc/netstart athn0
> 
> the machine reproducibly panics (cereal script below).
> 
> I have no idea why it panics in ieee80211_encrypt().
> It happens both with clients associated and not.
> 
> Is this known with athn(4)?
> How can I help debug this?
> 
>   Jan
> 
> 
> ddb> show panic
> ieee80211_encrypt: key unset for sw crypto: 0
> 
> ddb> trace
> db_enter() at db_enter+0x4
> panic(d0b83788) at panic+0xcc
> ieee80211_encrypt(d194e030,d195bc00,d194eb00) at ieee80211_encrypt+0x70
> ar5008_tx(d194e000,d195bc00,d19a,2) at ar5008_tx+0x9a
> ar5008_swba_intr(d194e000) at ar5008_swba_intr+0x238
> ar5008_intr(d194e000) at ar5008_intr+0x12f
> intr_handler(f3b1d67c,d1945480) at intr_handler+0x18
> Xintr_legacy9_untramp() at Xintr_legacy9_untramp+0xf7
> end of kernel

Are you using clients which use powersave mode, such as phones?

This trace goes through ar5008_swba_intr(). The only way to get into
ar5008_tx() from there is when group-addressed frames are queued on the
powersave queue of the AP (ic_bss->ni_savedq).

I cannot see this queue being purged anywhere when the interface goes down.
So it seems what happened is that a stale frame was sitting on this queue
and a fatal transmit attempt occurred when the interface came back up after
being re-configured.

Can you please try this diff?

The same panic and trace has also been reported to me by Ted Patterson.

diff ffca677e9e7ca9efd316fa2f2b6572b193c50cf8 /usr/src
blob - f6349c70279687b18ce89f670b732a62f3696271
file + sys/net80211/ieee80211_node.c
--- sys/net80211/ieee80211_node.c
+++ sys/net80211/ieee80211_node.c
@@ -1595,6 +1595,10 @@ ieee80211_node_cleanup(struct ieee80211com *ic, struct
free(ni->ni_unref_arg, M_DEVBUF, ni->ni_unref_arg_size);
ni->ni_unref_arg = NULL;
ni->ni_unref_arg_size = 0;
+
+#ifndef IEEE80211_STA_ONLY
+   mq_purge(>ni_savedq);
+#endif
 }
 
 void
@@ -2047,7 +2051,7 @@ ieee80211_free_allnodes(struct ieee80211com *ic, int c
splx(s);
 
if (clear_ic_bss && ic->ic_bss != NULL)
-   ieee80211_node_cleanup(ic, ic->ic_bss); /* for station mode */
+   ieee80211_node_cleanup(ic, ic->ic_bss);
 }
 
 void



Re: ieee80211 panic on athn reconfig

2020-04-17 Thread Stefan Sperling
On Fri, Apr 17, 2020 at 12:08:39PM +0200, Jan Stary wrote:
> This is current/i386 on an ALIX (dmesg below) with
> 
>   athn0 at pci0 dev 12 function 0 "Atheros AR9280" rev 0x01: irq 9
>   athn0: AR9280 rev 2 (2T2R), ROM rev 22, address 04:f0:21:01:d6:86
> 
> # cat hostname.athn0
> inet 192.168.33.1 255.255.255.0 NONE
> media autoselect mode 11g mediaopt hostap chan 2
> nwid stare.cz wpakey hovnoPrdel123
> 
> After changing the password, or the channel, or the mode, and doing
> 
> # sh /etc/netstart athn0
> 
> the machine reproducibly panics (cereal script below).
> 
> I have no idea why it panics in ieee80211_encrypt().
> It happens both with clients associated and not.
> 
> Is this known with athn(4)?

No, but it is definitely a bug.

> How can I help debug this?

Could you try to find a short sequence of 'ifconfig athn0' commands that
will trigger it, instead of /etc/netstart? That would help me already.