MFC r255047 (with a manual tweak to match the ext_free in stable/9):

Add a routine for attaching an mbuf to a buffer with an external
refcount.  This one is willing to work with buffers that may already be
referenced.  MEXTADD/m_extadd are suitable only for the first attachment
to a cluster -- they initialize the refcount to 1.
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