CVSROOT: /cvs Module name: src Changes by: jmatt...@cvs.openbsd.org 2022/01/07 17:20:10
Modified files: sys/dev/fdt : if_dwxe.c Log message: Apply mpsafe changes from dwge(4) to dwxe(4): Rework the tx path to use the consumer and producer positions to work out the number of slots available, and to put packets on the ring until fewer than DWXE_NTXSEGS slots are left, making dwxe_start() and dwxe_txeof() work independently. While here, only write to DWXE_TX_CTL1 once per call to dwxe_start() rather than once per packet. Adjust the rx interrupt path to check the number of slots in use and return slots once per interrupt. Add interrupt and ifq barriers before taking the interface down. With all of this done, we can mark dwxe(4) mpsafe. tested on arm64 (a64 sopine) by mlarkin@ and armv7 (h2+) by me ok dlg@