Apple's Virtualization.framework has been seen to hold a
transmit buffer made available just after DRIVER_OK, for
over a minute, and then return it without having output
its data. With a single buffer, the port cannot transmit
until then.
Add a second buffer and transmit from whichever one the
host is not holding. Buffers are reclaimed in whatever
order the host returns them, as the device need not use
them in the order they were made available as per §2.6.
If the queue is short of descriptors while the host is
holding a buffer, wait as for a held buffer rather than
drop the data.