Re: rtwn0: rtwn_rx_copy_to_mbuf: could not allocate RX mbuf
Date: Sat, 26 Apr 2025 16:03:27 UTC
Done in: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=286366 Adrian Chadd <adrian.chadd@gmail.com> escreveu (sábado, 26/04/2025 à(s) 16:36): > > Oh, and would you mind filing a bug at bugs.freebsd.org ? I'd like to track this as a normal honest to god bug. > > > > -adrian > > > On Sat, 26 Apr 2025 at 08:33, Nuno Teixeira <eduardo@freebsd.org> wrote: >> >> (...) >> >> Found stability and no warnings/errors to report on usb nics: >> >> RTL8821AU 11ac @aarch64 >> RTL8811AU 11ac @amd64 >> >> Cheers! >> >> Nuno Teixeira <eduardo@freebsd.org> escreveu (sábado, 26/04/2025 à(s) 08:58): >> > >> > Hello! >> > >> > > Ok, that is interesting. We're not keeping counters in m_get2() for when the buffer requested is too large; it only returns NULL. >> > > I guess it's bailing if it's above a page size (4kbytes.) >> > > >> > > Try changing the m_get2() call there to m_get3(); let's see if that improves things. >> > > (m_get3() will fail above 16kbytes; and if it can't allocate a buffer < 16kbytes then we should get some UMA error counted somehwere.) >> > >> > iperf3 -R is happy, and git pull --rebase completed OK and fast: >> > >> > Connecting to host hp, port 5201 >> > Reverse mode, remote host hp is sending >> > [ 5] local 192.168.1.82 port 39601 connected to 192.168.1.100 port 5201 >> > [ ID] Interval Transfer Bitrate >> > [ 5] 0.00-1.06 sec 6.00 MBytes 47.4 Mbits/sec >> > [ 5] 1.06-2.06 sec 15.9 MBytes 134 Mbits/sec >> > [ 5] 2.06-3.06 sec 16.1 MBytes 135 Mbits/sec >> > [ 5] 3.06-4.06 sec 16.4 MBytes 137 Mbits/sec >> > [ 5] 4.06-5.00 sec 15.0 MBytes 134 Mbits/sec >> > [ 5] 5.00-6.06 sec 16.4 MBytes 129 Mbits/sec >> > [ 5] 6.06-7.06 sec 15.2 MBytes 128 Mbits/sec >> > [ 5] 7.06-8.06 sec 14.8 MBytes 124 Mbits/sec >> > [ 5] 8.06-9.06 sec 15.8 MBytes 132 Mbits/sec >> > [ 5] 9.06-10.06 sec 16.1 MBytes 135 Mbits/sec >> > - - - - - - - - - - - - - - - - - - - - - - - - - >> > [ ID] Interval Transfer Bitrate Retr >> > [ 5] 0.00-10.08 sec 148 MBytes 123 Mbits/sec 0 sender >> > [ 5] 0.00-10.06 sec 148 MBytes 123 Mbits/sec receiver >> > >> > iperf Done. >> > >> > I will use this dongle on amd64 for further testing, I will patch aarch64 soon. >> > >> > ``` >> > diff --git a/sys/dev/rtwn/usb/rtwn_usb_rx.c b/sys/dev/rtwn/usb/rtwn_usb_rx.c >> > index 657d6bdeb9e4..54869fe336bd 100644 >> > --- a/sys/dev/rtwn/usb/rtwn_usb_rx.c >> > +++ b/sys/dev/rtwn/usb/rtwn_usb_rx.c >> > @@ -124,10 +124,10 @@ rtwn_rx_copy_to_mbuf(struct rtwn_softc *sc, >> > struct rtwn_rx_stat_common *stat, >> > if (rtwn_rx_check_pre_alloc(sc, stat) != 0) >> > goto fail; >> > >> > - m = m_get2(totlen, M_NOWAIT, MT_DATA, M_PKTHDR); >> > + m = m_get3(totlen, M_NOWAIT, MT_DATA, M_PKTHDR); >> > if (__predict_false(m == NULL)) { >> > - device_printf(sc->sc_dev, "%s: could not allocate RX mbuf\n", >> > - __func__); >> > + device_printf(sc->sc_dev, "%s: could not allocate RX >> > mbuf (%d bytes)\n", >> > + __func__, totlen); >> > goto fail; >> > } >> > ``` >> > >> > Thanks! >> > >> > >> > -- >> > Nuno Teixeira >> > FreeBSD UNIX: <eduardo@FreeBSD.org> Web: https://FreeBSD.org >> >> >> >> -- >> Nuno Teixeira >> FreeBSD UNIX: <eduardo@FreeBSD.org> Web: https://FreeBSD.org -- Nuno Teixeira FreeBSD UNIX: <eduardo@FreeBSD.org> Web: https://FreeBSD.org