The PCI bwfm(4) chips have no TX rings in the traditional sense, as on
authorpatrick <patrick@openbsd.org>
Thu, 11 Jan 2018 16:09:19 +0000 (16:09 +0000)
committerpatrick <patrick@openbsd.org>
Thu, 11 Jan 2018 16:09:19 +0000 (16:09 +0000)
commitc6f1636d8701741490d102503811de477c0a8135
treee171ac7c68fa2afb2aa963c27a92907240b10812
parentc398c479bb34014ea7f89e639247fbf0b8622f6a
The PCI bwfm(4) chips have no TX rings in the traditional sense, as on
the actual rings we only share messages.  Sending a TX packet means
putting a message on the ring which contains a pktid (which for us maps
to an mbuf) and the physical address of the mbuf.  On jcs@'s macbook he
seems to run out of TX pktids pretty quickly during a speedtest.  This
would mean that there are 2048 TX packets in flight that we either want
to send out or that have not been "acked" by the firmware yet.  Either
way, recover from that situation when we hit that arbitrary limit by
restarting the queue after we free'd a packet from the TX pktid list.

Tested by jcs@
sys/dev/pci/if_bwfm_pci.c