Simplify iflib by using a single TX dma map.
The need for a separate map for TSO and !TSO seems to have arisen from an early mistake about the
DMA requirements for in ice/ixl/iavf. Specifically, this Intel hardware has a quirk where no more
than N (=8) segs can be DMA'ed per packet on the wire. This limit was enforced using a DMA
map with a low segment limit for !TSO and a driver specific check for TSO. This led to a *lot* of
complexity in iflib (~80 extra lines of code that this change removes) when the limit can simply
be enforced via the existing EFBIG mechanisms.
This change adds a new isc_sparse_maxsegs that drivers for hardware with this quirk must set
to the max segs per frame their hardware can support. Care was taken to avoid extra cache
misses in encap for hardware which does not have this problem.
I would have really liked to move the driver-specific sparse TSO check out of the drivers and into
iflib, but the ixl and ice routines were subtly different, and it wasn't clear if that was due to actual
differing hardware requirements, or just quirks in the routines, so I decided not to touch them.