Page MenuHomeFreeBSD

iflib: wire up the RSS ioctls
AbandonedPublic

Authored by nick_spun.io on Aug 18 2026, 5:20 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Sep 19, 4:19 PM
Unknown Object (File)
Fri, Sep 18, 3:05 AM
Unknown Object (File)
Thu, Sep 17, 8:40 PM
Unknown Object (File)
Tue, Sep 15, 6:22 AM
Unknown Object (File)
Fri, Sep 11, 10:56 PM
Unknown Object (File)
Mon, Sep 7, 4:29 PM
Unknown Object (File)
Sun, Sep 6, 9:12 PM
Unknown Object (File)
Sat, Sep 5, 9:41 AM

Details

Reviewers
shurd
adrian
Group Reviewers
iflib
Summary

iflib handled no RSS ioctl, so SIOCGIFRSSKEY and SIOCGIFRSSHASH reached
ether_ioctl() and returned EINVAL for every iflib driver.

Add ifdi_rss_key_get, ifdi_rss_key_set, ifdi_rss_hash_get,
ifdi_rss_table_get and ifdi_rss_table_set, following ifdi_i2c_req: a
generic ioctl behind a driver method defaulting to ENOTSUP. Methods
sharing a signature share one default.

isc_rss_table_size is the authority for the table length, since iflib
already masks flowids with it in QIDX(). Gets clear the caller's buffer
past the interface name and sets require the reserved fields to be zero,
so those fields can be given a meaning later.

Signed-off-by: Nick Price <nprice@FreeBSD.org>

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 75669
Build 72552: arc lint + arc unit

Event Timeline

Is there another patch which implements the set iotcls? Eg SIOCSIFRSSHASH & SIOCSIFRSSKEY ? How does a per-NIC settable key interact with the global rss hashing config in sys/net/rss_config.c ?

Do you have a tool that is using these? A quick check shows that nothing in-tree is using these ioctls.

Have you wired up a driver to test this with?

Is there another patch which implements the set iotcls? Eg SIOCSIFRSSHASH & SIOCSIFRSSKEY ? How does a per-NIC settable key interact with the global rss hashing config in sys/net/rss_config.c ?

Do you have a tool that is using these? A quick check shows that nothing in-tree is using these ioctls.

Have you wired up a driver to test this with?

This was a misfire diff - I have this all working locally but am still reworking some stuff - locally it's just tied together via aq(4) and ifconfig but that's probably not ideal end state 😆