On Sun, Mar 29, 2020 at 01:15:37PM +0100, Raf Czlonka wrote:
> >Synopsis:    "splassert: ieee80211_free_node: want 7 have 4" followed by 
> >"zyd0: device timeout"
> >Category:    kernel
> >Environment:
>       System      : OpenBSD 6.6
>       Details     : OpenBSD 6.6-current (GENERIC.MP) #86: Sat Mar 28 14:42:23 
> MDT 2020
>                        
> [email protected]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
> 
>       Architecture: OpenBSD.amd64
>       Machine     : amd64
> >Description:
>         After booting with a zyd(4) USB NIC, I see these lines
>         in dmesg(8):
> 
>               splassert: ieee80211_free_node: want 7 have 4
>       
>         Under a heavy-ish load (a web browser with multiple tabs
>         open + streaming video), the device times out:
> 
>               zyd0: device timeout
>               zyd0: could not transmit buffer: TIMEOUT
> 
>         and I can't reset it even with:
> 
>               # sh /etc/netstart zyd0
> 
>         A reboot is necessary.

Can you show 'ifconfig zyd0' when it is in this state?
The interface is marked as OACTIVE, correct?

What happens here if you run: ifconfig zyd0 down
Instead of running netstart which does one hundred and one things?


>       When I unplugged the NIC at that point, I got a panic:
> 
>               panic: Data modified on freelist: word 10 of object 
> 0xffff80000099a000 size 0x2000 previous type devbuf (0xdead410f != 0xdead4110)
> 

This might prevent the panic (compile-tested only).

diff 9d8a60ff1dae84d5c890bdc5040be018a3bdd3dc /usr/src
blob - 61dc357bf69a56d1ce282d505eecd343b0eb2465
file + sys/dev/usb/if_zyd.c
--- sys/dev/usb/if_zyd.c
+++ sys/dev/usb/if_zyd.c
@@ -2216,6 +2216,7 @@ zyd_tx(struct zyd_softc *sc, struct mbuf *m, struct ie
            ZYD_TX_TIMEOUT, zyd_txeof);
        error = usbd_transfer(data->xfer);
        if (error != USBD_IN_PROGRESS && error != 0) {
+               data->ni = NULL;
                ifp->if_oerrors++;
                return EIO;
        }

Reply via email to