Re: Current with RSS and EPAIR and without INET6.

From: Santiago Martinez <sm_at_codenetworks.net>
Date: Mon, 28 Feb 2022 20:16:32 UTC
Hi there , yes good point , the first ifdef should go inside the RSS ifdef . Will modify it to also work with INET6 only. Thanks for the feedback.
Santi


> On 28 Feb 2022, at 08:14, Zhenlei Huang <zlei.huang@gmail.com> wrote:
> 
> 
> 
>>> On Feb 27, 2022, at 8:59 PM, Santiago Martinez <sm@codenetworks.net> wrote:
>>> 
>>> Hi Everyone, 
>>> 
>>> While testing RSS and EPAIR I have find out that it is required to have kernel compiled with INET6 when enabling RSS+EPAIR.
>>> 
>>> I usually remove everything that i do not use from the kernel, like SCTP and INET6, etc. 
>>> 
>>> After compiling with "option RSS" i noticed that iocage failed to start, checking the dmesg buffer clearly showed why.
>>> 
>>> [321] link_elf_obj: symbol rss_soft_m2cpuid_v6 undefined 
>>> [321] linker_load_file: /boot/kernel/if_epair.ko - unsupported file type
>>> 
>>> I added two ifdef INET6 on the if_epair and solve the issue, still not sure if completely correct.
>>> 
>>> Best regards.
>>> 
>>> Santi
>>> 
>>> diff --git a/sys/net/if_epair.c b/sys/net/if_epair.c 
>>> index 629de981d5b0..235e5098ebd8 100644 
>>> --- a/sys/net/if_epair.c 
>>> +++ b/sys/net/if_epair.c 
>>> @@ -74,6 +74,8 @@ __FBSDID("$FreeBSD$"); 
>>> #ifdef RSS 
>>> #include <net/rss_config.h> 
>>> #include <netinet/in_rss.h> 
>>> +#endif 
>>> +#ifdef INET6 
>>> #include <netinet6/in6_rss.h> 
>>> #endif 
>>> 
>> The newly added ifdef should be wrapped around by RSS. 
>> And also is "opt_inet6.h" header required?
>> And maybe ifdef INET is also required as someone need IPv4 only.
>> 
>> #ifdef RSS
>> #include <net/rss_config.h>
>> #include <netinet/in_rss.h> 
>> +#ifdef INET6 
>> #include <netinet6/in6_rss.h> 
>> +#endif 
>> #endif 
>> 
>> #include <net/vnet.h> 
>> @@ -220,9 +222,11 @@ epair_menq(struct mbuf *m, struct epair_softc *osc) 
>>                case ETHERTYPE_IP: 
>>                        rss_soft_m2cpuid_v4(m, 0, &bucket); 
>>                        break; 
>> +#ifdef INET6 
>>                case ETHERTYPE_IPV6: 
>>                        rss_soft_m2cpuid_v6(m, 0, &bucket); 
>>                        break; 
>> +#endif 
>>                default: 
>>                        bucket = 0; 
>>                        break;
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>