Page MenuHomeFreeBSD

Break out RSS init path into sys/net; inet4 code in sys/netinet/; inet6 code in sys/netinet6/
ClosedPublic

Authored by adrian on Dec 26 2014, 6:14 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Feb 1, 5:11 PM
Unknown Object (File)
Sat, Jan 14, 5:01 AM
Unknown Object (File)
Sun, Jan 8, 8:16 AM
Unknown Object (File)
Apr 13 2017, 12:51 AM
Unknown Object (File)
Apr 1 2017, 4:30 PM
Unknown Object (File)
Dec 15 2016, 9:36 PM
Unknown Object (File)
Oct 17 2016, 6:35 AM
Unknown Object (File)
Aug 11 2016, 3:53 PM
Subscribers

Details

Reviewers
jfv
gnn
Group Reviewers
network
Summary

The RSS code currently lives in sys/netinet/ and supports both IPv4 and IPv6.
But as part of the general network stack integration, stuff outside of netinet/
(eg, netisr) will need some information about the RSS setup and CPU mapping
so it can make decisions about CPU / RSS bucket allocations for netisr, CPU
pinning, later on it'll query NUMA topology and setup netisr accordingly, etc.

So:

  • the stuff to do with RSS configuration now lives in sys/net/rss_config.[ch];
  • the sysctl space is still net.inet.netisr for now, but that may change before 11-RELEASE is cut;
  • sys/netinet/in_rss.[ch] has IPv4 specific code in it;
  • sys/netinet6/in6_rss.[ch] has IPv6 specific code in it;
  • the IPv6 RSS code now uses pointers instead of copying the src/dst IPv6 addresses around.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
No Lint Coverage
Unit
No Test Coverage

Event Timeline

adrian retitled this revision from to Break out RSS init path into sys/net; inet4 code in sys/netinet/; inet6 code in sys/netinet6/.
adrian updated this object.
adrian edited the test plan for this revision. (Show Details)
adrian added a reviewer: network.

I can't really review this in Phabricator. Is there any chance we could reduce some noise from that change, e.g., making the IPv6 faddr/laddr pointers doesn't really belong in here. If we can brea such stuff out, reviewing the rest is a lot easier.

sys/net/rss_config.c
32

This probably just wants to become $FreeBSD$

sys/net/rss_config.h
107

Aeh, while I can see the point, the function will not allow you to abstract the KPI/KBI away either this way (static inline ...). Just saying.

sys/netinet/in_pcbgroup.c
50

This is misordered

sys/netinet/ip_output.c
76

misordered

sys/netinet6/in6_pcbgroup.c
43–44

Outside #ifdef INET6

How about I do a separate smaller commit first to turn the ipv6 address fields into pointers; and -then- do the code shuffle?

Changes in my code are trivial, and fine by me.

gnn added a reviewer: gnn.
This revision is now accepted and ready to land.Jan 7 2015, 12:43 AM
adrian edited edge metadata.

Re-do the RSS code split; the IPv6 API change is already in -HEAD.

Delay putting the RSS hash configuration in a global uint32_t;
I'll do that in a separate pass after this work is in the tree.

This revision now requires review to proceed.Jan 14 2015, 12:18 AM
adrian edited edge metadata.

Update to latest -HEAD - make RSS on ixl(4) compile.

gnn edited edge metadata.
This revision is now accepted and ready to land.Jan 18 2015, 5:22 PM

All done; it's in -HEAD.