fix datapath Rx buffer management in qwx(4)
authorstsp <stsp@openbsd.org>
Thu, 15 Feb 2024 11:57:38 +0000 (11:57 +0000)
committerstsp <stsp@openbsd.org>
Thu, 15 Feb 2024 11:57:38 +0000 (11:57 +0000)
commit9ab07a2dcd0cce6700778c5f817f25f0ba6fff61
tree1f4d635f3425df93aa6348ab384a1166066a3579
parentf9a50133950223365bb0571109ed6af39253da36
fix datapath Rx buffer management in qwx(4)

Fixes Tx/Rx stalls where the device ran out of free Rx buffers to use.

The device consumes buffers on the Rx refill ring out of order, which
the ring management code I wrote intially would not handle properly.
Instead of using an index into the ring where we would expect to see
a free slot which was in fact occupied, keep track of free buffers via
a bitmap.
sys/dev/ic/qwx.c
sys/dev/ic/qwxvar.h