The rx early size is used to reduce the loading of CPU by letting a transfer 
contain more data to reduce the number of transfers.

The algorithm should be (ure_rxbufsz - packet size) / 8

This matches Linux path in r8153_set_rx_early_size().

ok?

Index: sys/dev/usb/if_ure.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_ure.c,v
retrieving revision 1.23
diff -u -p -u -p -r1.23 if_ure.c
--- sys/dev/usb/if_ure.c        7 Apr 2021 06:52:22 -0000       1.23
+++ sys/dev/usb/if_ure.c        9 Apr 2021 08:32:55 -0000
@@ -761,8 +761,8 @@ ure_init(void *xsc)
        ure_write_1(sc, URE_PLA_CRWECR, URE_MCU_TYPE_PLA, URE_CRWECR_NORAML);
 
        if (!(sc->ure_flags & URE_FLAG_8152)) {
-               reg = sc->ure_rxbufsz - URE_FRAMELEN(ifp->if_mtu) +
-                   sizeof(struct ure_rxpkt) + URE_RX_BUF_ALIGN;
+               reg = sc->ure_rxbufsz - URE_FRAMELEN(ifp->if_mtu) -
+                   sizeof(struct ure_rxpkt) - URE_RX_BUF_ALIGN;
                if (sc->ure_flags & (URE_FLAG_8153B | URE_FLAG_8156)) {
                        ure_write_2(sc, URE_USB_RX_EARLY_SIZE, URE_MCU_TYPE_USB,
                            reg / 8);

Reply via email to