Re: git: d9c55b2e8cd6 - main - rss: Enable portions of RSS globally to enable symmetric hashing

From: Zhenlei Huang <zlei_at_FreeBSD.org>
Date: Mon, 30 Mar 2026 17:01:06 UTC

> On Mar 30, 2026, at 6:41 PM, Bjoern A. Zeeb <bzeeb-lists@lists.zabbadoz.net> wrote:
> 
> On Sat, 22 Nov 2025, Andrew Gallatin wrote:
> 
>> The branch main has been updated by gallatin:
>> 
>> URL: https://cgit.FreeBSD.org/src/commit/?id=d9c55b2e8cd6b79f6926278e10a79f1bcca27a4b
>> 
>> commit d9c55b2e8cd6b79f6926278e10a79f1bcca27a4b
>> Author:     Andrew Gallatin <gallatin@FreeBSD.org>
>> AuthorDate: 2025-11-22 14:29:31 +0000
>> Commit:     Andrew Gallatin <gallatin@FreeBSD.org>
>> CommitDate: 2025-11-22 14:29:31 +0000
>> 
>>   rss: Enable portions of RSS globally to enable symmetric hashing
>> 
>>   We use the fact that all NICs that support hashing are using the
>>   same hash algorithm and hash key to enable symmetic hashing in
>>   TCP, where a software version of the same hash is used to
>>   establish hashes on outgoing connections.
>> 
>>   Sponsored by: Netflix
>>   Reviewed by: adrian, zlei (both early version)
>>   Differential Revision:  https://reviews.freebsd.org/D53089
>> ---
>> sys/conf/files         |  8 +++---
>> sys/net/rss_config.c   | 66 +++++++++++++++++++++++++++++++-------------------
>> sys/net/rss_config.h   | 20 +++++++++------
>> sys/netinet/in_rss.c   |  3 +++
>> sys/netinet6/in6_rss.c |  3 +++
>> 5 files changed, 63 insertions(+), 37 deletions(-)
>> 
>> diff --git a/sys/conf/files b/sys/conf/files
>> index 53fcb80f2b8d..3314274b47a8 100644
>> --- a/sys/conf/files
>> +++ b/sys/conf/files
>> @@ -4238,10 +4238,10 @@ net/route/route_rtentry.c	standard
>> net/route/route_subscription.c	standard
>> net/route/route_tables.c	standard
>> net/route/route_temporal.c	standard
>> -net/rss_config.c		optional inet rss | inet6 rss
>> +net/rss_config.c		standard
> 
> Given this relies on toeplitz_hash which is inet | inet6 it doesn't work for NO-IP
> kernels:
> 
>      3 >>> Kernel build for LINT-NOIP started on Mon Mar 30 06:39:36 UTC 2026
> ..
>     36 linking kernel
>     37 ld: error: undefined symbol: toeplitz_hash
>     38 >>> referenced by rss_config.c
>     39 >>>               rss_config.o:(rss_hash)
>     40 --- kernel ---
>     41 *** [kernel] Error code 1
> 
> Either this needs to be optional inet | inet6   or the topelitz parts need to be
> #if defined(INET6) || defined(INET) in the rss_config.c

The net/toeplitz.c is independent with inet or inet6. So maybe it is better to make it standard ?

> 
> 
> 
> Don't ask me why this is visible now but tells something about the state of LINT
> in the last months maybe?
> 
>> net/rtsock.c			standard
>> net/slcompress.c		optional netgraph_vjc
>> -net/toeplitz.c			optional inet rss | inet6 rss | route_mpath
>> +net/toeplitz.c			optional inet | inet6 | route_mpath
>> net/vnet.c			optional vimage
>> net80211/ieee80211.c		optional wlan
>> net80211/ieee80211_acl.c	optional wlan wlan_acl
> 
> -- 
> Bjoern A. Zeeb                                                     r15:7

Best regards,
Zhenlei