On Wed, Apr 28, 2021 at 12:52:36AM +0200, Stefan Sperling wrote:
> On Tue, Apr 27, 2021 at 11:32:49PM +0200, Stefan Sperling wrote:
> > On Tue, Apr 27, 2021 at 06:36:32PM +0000, Mikolaj Kucharski wrote:
> > > I got it again, but had official snapshot, so I don't have more info
> > > than I had in the past, but I would like to share it anyway..
> > 
> > > ddb{0}> show panic
> > > ieee80211_encrypt: key unset for sw crypto: 0
> > 
> > It would be nice to have more information about the bad key.
> > Could you run with this?
> 
> Here is another shot in the dark.
> The patch below ensures that we don't attempt to send data frames
> to nodes that aren't in associated state anymore. The node's crypto
> keys would already have been cleared which would explain the panic.
> 
> Do you ever see this new printf trigger?
> 
> diff 87962d75d1c1a416b89e927cd4ab8e3327a47509 /usr/src
> blob - 58f654273f7ea0cc3c04e0a60d5e5e6a33296dc0
> file + sys/net80211/ieee80211_output.c
> --- sys/net80211/ieee80211_output.c
> +++ sys/net80211/ieee80211_output.c
> @@ -556,6 +556,16 @@ ieee80211_encap(struct ifnet *ifp, struct mbuf *m, str
>               goto bad;
>       }
>  
> +#ifndef IEEE80211_STA_ONLY
> +     if (ic->ic_opmode == IEEE80211_M_HOSTAP &&
> +         ni->ni_state != IEEE80211_STA_ASSOC) {
> +             printf("%s: data frame for node %s in state %d\n",
> +                 __func__, ether_sprintf(ni->ni_macaddr), ni->ni_state);
> +             ic->ic_stats.is_tx_nonode++;
> +             goto bad;
> +     }
> +#endif
> +
>       if ((ic->ic_flags & IEEE80211_F_RSNON) &&
>           !ni->ni_port_valid &&
>           eh.ether_type != htons(ETHERTYPE_PAE)) {

My custom kernel just finished building with above. Not yet deployed.

-- 
Regards,
 Mikolaj

Reply via email to