MFC r255111, r255112, r255131, r255167, r256066, r261150, r261151,
r261164, r261166, r261167, r261168, r261394, r261395:
This updates the network driver to support multiple queues, and several bug
fixes. Note that multiqueue support is not compiled in by default since that
would change ALTQ behavior.
- Sync VirtIO net device header file from recent Linux
- Import multiqueue VirtIO net driver
- Fix build with gcc
- Do not hold the vtnet Rx queue lock when calling up into the stack
- Read and write the MAC address in the config space byte by byte
- Also include the mbuf's csum_flags in an assert message
- Remove stray space
- Move duplicated transmit start code into a single function
- Avoid queue unlock followed by relock when the enable interrupt race is
lost
- Check for a full virtqueue in the multiqueue transmit path
- Do not place the sglist used for Rx/Tx on the stack
- Use m_defrag() instead of m_collapse() to compact a long mbuf chain
git-svn-id: svn://svn.freebsd.org/base/stable/9@265480
ccf9f872-aa2e-dd11-9fc8-
001c23d0bc1f