be more careful about bus_dmamap_syncs for rx ring descriptors.
authordlg <dlg@openbsd.org>
Wed, 21 Aug 2024 00:56:58 +0000 (00:56 +0000)
committerdlg <dlg@openbsd.org>
Wed, 21 Aug 2024 00:56:58 +0000 (00:56 +0000)
commit2ef55e5b0693e063c4ad713d276786c36edc0d94
tree294885c63c5f36dccabb7a0ddb4d7d738c672f7d
parentb05220827cf0816361ac08bbd1ba47907bab4f49
be more careful about bus_dmamap_syncs for rx ring descriptors.

this is very similar to the changes made for tx where we fill in
everything except the OWN flag on the rx descriptor, call bus_dmamap_sync
as a barrier for the hw, and then flip the ownership of the OWN
bit. this avoids the potential for the hw to see the own bit before
other things in the descriptor, such as the address and length of
the buffer.

while here, trim code that's not currently used. we don't currently
support rxing one packet by assembling buffers from multiple
descriptors, so stop fiddling with the queue mbuf head and tail
pointers. delete rge_discard_rxbuf() cos it looks like a leftover
from code which tries to reuse mbufs on the rx ring. we free mbufs
when there's an error and let the rxr stuff refill.

ok patrick@
no objections from kevlo@
sys/dev/pci/if_rge.c