Re: bcm283x_dwcotg0: usbpf: Out of memory

Mark Millard <[email protected]> Fri, 17 Apr 2026 10:50:59 -0700
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
On 4/14/26 22:53, bob prohaska wrote:
> A Raspberry Pi 2 (armv7) running -current and building world 
> reported
> Apr 14 21:02:33 generic kernel: bcm283x_dwcotg0: usbpf: Out of memory
> 
> I don't recall seeing this message before and wonder if it might be
> significant. This is one of the machines that suffers network flapping
> when using a usb-wifi dongle and has not yet been patched.
> 
> uname -apKU reports
> FreeBSD generic 16.0-CURRENT FreeBSD 16.0-CURRENT #26 main-n284835-3e9f4fd6fc50: Tue Apr  7 10:01:55 PDT 2026     bob@generic:/usr/obj/usr/src/arm.armv7/sys/GENERIC arm armv7 1600014 1600014
> 
> ifconfig reports in part
> wlan0: flags=8c43<UP,BROADCAST,RUNNING,DRV_OACTIVE,SIMPLEX,MULTICAST> metric 0 mtu 1500
>         options=0
>         ether 00:0f:60:05:37:4f
>         inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
>         inet6 fe80::20f:60ff:fe05:374f%wlan0 prefixlen 64 scopeid 0x3
>         groups: wlan
>         ssid d-link.zefox.net channel 2 (2417 MHz 11g)
>         regdomain ETSI2 country US authmode WPA1+WPA2/802.11i privacy ON
>         deftxkey UNDEF txpower 30 bmiss 7 scanvalid 60 protmode CTS wme
>         roaming MANUAL
>         parent interface: run0
>         media: IEEE 802.11 Wireless Ethernet DS/1Mbps mode 11g (autoselect)
>         status: no carrier
>         nd6 options=823<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL,STABLEADDR>
> 
> Thanks for reading and any insights,
> 
> bob prohaska
> 
> 
> 

FYI: in sys/dev/usb/usb_pf.c there is:

void
usbpf_xfertap(struct usb_xfer *xfer, int type)
{
. . .
        totlen = usbpf_xfer_precompute_size(xfer, type);

        if (type == USBPF_XFERTAP_SUBMIT)
                nframes = xfer->nframes;
        else
                nframes = xfer->aframes;

        /*
         * XXX TODO XXX
         *
         * When BPF supports it we could pass a fragmented array of
         * buffers avoiding the data copy operation here.
         */
        buf = ptr = malloc(totlen, M_TEMP, M_NOWAIT);
        if (buf == NULL) {
                device_printf(bus->parent, "usbpf: Out of memory\n");
                return;
        }
. . .


-- 
===
Mark Millard
marklmi at yahoo.com