There's a lot of magic numbers in otus(4). Here is one which was
easy to fix based on information from the Linux driver.  OK?

Index: if_otus.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_otus.c,v
retrieving revision 1.62
diff -u -p -r1.62 if_otus.c
--- if_otus.c   12 Jan 2019 16:12:10 -0000      1.62
+++ if_otus.c   15 Jan 2019 15:13:04 -0000
@@ -2275,7 +2275,7 @@ otus_init(struct ifnet *ifp)
        }
 
        /* Start Rx. */
-       otus_write(sc, 0x1c3d30, 0x100);
+       otus_write(sc, AR_MAC_REG_DMA_TRIGGER, AR_DMA_TRIGGER_RXQ);
        (void)otus_write_barrier(sc);
 
        ifp->if_flags |= IFF_RUNNING;
@@ -2311,7 +2311,7 @@ otus_stop(struct ifnet *ifp)
        splx(s);
 
        /* Stop Rx. */
-       otus_write(sc, 0x1c3d30, 0);
+       otus_write(sc, AR_MAC_REG_DMA_TRIGGER, 0);
        (void)otus_write_barrier(sc);
 
        sc->tx_queued = 0;
Index: if_otusreg.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/if_otusreg.h,v
retrieving revision 1.10
diff -u -p -r1.10 if_otusreg.h
--- if_otusreg.h        8 Apr 2017 02:57:25 -0000       1.10
+++ if_otusreg.h        11 Jan 2019 23:37:39 -0000
@@ -72,6 +72,15 @@
 #define AR_MAC_REG_OFDM_PHY_ERRORS     (AR_MAC_REG_BASE + 0xcb4)
 #define AR_MAC_REG_CCK_PHY_ERRORS      (AR_MAC_REG_BASE + 0xcb8)
 #define AR_MAC_REG_BCN_HT1             (AR_MAC_REG_BASE + 0xda0)
+#define AR_MAC_REG_DMA_TRIGGER         (AR_MAC_REG_BASE + 0xd30)
+
+/* Possible values for register AR_MAC_REG_DMA_TRIGGER. */
+#define AR_DMA_TRIGGER_TXQ0    0x001
+#define AR_DMA_TRIGGER_TXQ1    0x002
+#define AR_DMA_TRIGGER_TXQ2    0x004
+#define AR_DMA_TRIGGER_TXQ3    0x008
+#define AR_DMA_TRIGGER_TXQ4    0x010
+#define AR_DMA_TRIGGER_RXQ     0x100
 
 /* Possible values for register AR_USB_MODE_CTRL. */
 #define AR_USB_DS_ENA          (1 << 0)

Reply via email to