Add a callback to be notified about negotiated features.

Submitted by:	luigi
Obtained from:	Vincenzo Maffione, Universita` di Pisa
MFC after:	3 days


git-svn-id: svn+ssh://svn.freebsd.org/base/head@271299 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Update the IPv4 input path to handle reassembled frames and incoming frames
with no RSS hash.

When doing RSS:

* Create a new IPv4 netisr which expects the frames to have been verified;
  it just directly dispatches to the IPv4 input path.
* Once IPv4 reassembly is done, re-calculate the RSS hash with the new
  IP and L3 header; then reinject it as appropriate.
* Update the IPv4 netisr to be a CPU affinity netisr with the RSS hash
  function (rss_soft_m2cpuid) - this will do a software hash if the
  hardware doesn't provide one.

NICs that don't implement hardware RSS hashing will now benefit from RSS
distribution - it'll inject into the correct destination netisr.

Note: the netisr distribution doesn't work out of the box - netisr doesn't
query RSS for how many CPUs and the affinity setup.  Yes, netisr likely
shouldn't really be doing CPU stuff anymore and should be "some kind of
'thing' that is a workqueue that may or may not have any CPU affinity";
that's for a later commit.

Differential Revision:	https://reviews.freebsd.org/D527
Reviewed by:	grehan


git-svn-id: svn+ssh://svn.freebsd.org/base/head@271300 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Calculate the RSS hash for outbound UDPv4 frames.

Differential Revision:	https://reviews.freebsd.org/D527
Reviewed by:	grehan


git-svn-id: svn+ssh://svn.freebsd.org/base/head@271301 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Add basic RSS awareness for the UDPv6 send path.

This doesn't include the same kind of userland overriding that the IPv4
path has; nor does it yet know about 2-tuple versus 4-tuple hashing.
That'll come later.

Differential Revision:	https://reviews.freebsd.org/D527
Reviewed by:	grehan


git-svn-id: svn+ssh://svn.freebsd.org/base/head@271302 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f