CVSROOT: /cvs Module name: src Changes by: u...@cvs.openbsd.org 2023/12/28 07:30:29
Modified files: sys/dev/ic : dwqe.c Log message: fix Tx watchdog trigger and freeze in dwqe(4) dwqe(4) interfaces may trigger the "dwqe_watchdog" function and stop transmitting packets under heavy Tx load. In this situation, ifconfig(8) will permanently show OACTIVE until the interface is restarted (ifconfig down/up). The problem seems to be triggered by writing to the Tx ring tail pointer register multiple times during dwqe_start(). Updating the Tx ring tail pointer only after all Tx descriptors have been updated seems to fix it. The fix is based on the eqos(4) driver in NetBSD. Verified on an Intel Elkhart Lake machine but might affect other platforms with DesignWare Ethernet Quality-of-Service Controller version 4. Testing by bluhm@, ok kettenis@