Re: [Intel-wired-lan] [PATCH net-next 3/3] idpf: fix undefined reference to tcp_gro_complete() when !CONFIG_INET

From: Randy Dunlap
Date: Wed Sep 20 2023 - 21:31:57 EST




On 9/20/23 17:04, Jacob Keller wrote:
>
>
> On 9/20/2023 2:30 PM, Randy Dunlap wrote:
>>
>>
>> On 9/20/23 11:07, Alexander Lobakin wrote:
>>> When CONFIG_INET is not set, tcp_gro_complete is not compiled, although
>>> the drivers using it may still be compiled (spotted by Randy):
>>>
>>> aarch64-linux-ld: drivers/net/ethernet/intel/idpf/idpf_txrx.o:
>>> in function `idpf_rx_rsc.isra.0':
>>> drivers/net/ethernet/intel/idpf/idpf_txrx.c:2909:(.text+0x40cc):
>>> undefined reference to `tcp_gro_complete'
>>>
>>> The drivers need to guard the calls to it manually.
>>> Return early from the RSC completion function if !CONFIG_INET, it won't
>>> work properly either way. This effectively makes it be compiled-out
>>> almost entirely on such builds.
>>>
>>> Fixes: 3a8845af66ed ("idpf: add RX splitq napi poll support")
>>> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
>>> Closes: https://lore.kernel.org/linux-next/4c84eb7b-3dec-467b-934b-8a0240f7fb12@xxxxxxxxxxxxx
>>> Signed-off-by: Alexander Lobakin <aleksander.lobakin@xxxxxxxxx>
>>
>> That builds for me. Thanks.
>>
>> Tested-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
>>
>> I hope that these patches can be merged into the v6.6 instead of
>> v6.7 kernel at some point (i.e., [PATCH net] instead of net-next).
>>
>
> Did any of the offending code make it into 6.6? I thought all of this
> was from recent merges after 6.6 closed.
>
> Thanks,
> Jake

Oh, I think that you are correct. Sorry about my comment.
Thanks.

>
>>
>>> ---
>>> drivers/net/ethernet/intel/idpf/idpf_txrx.c | 3 +++
>>> 1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
>>> index 6fa79898c42c..aa45afeb6496 100644
>>> --- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c
>>> +++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
>>> @@ -2876,6 +2876,9 @@ static int idpf_rx_rsc(struct idpf_queue *rxq, struct sk_buff *skb,
>>> if (unlikely(!(ipv4 ^ ipv6)))
>>> return -EINVAL;
>>>
>>> + if (!IS_ENABLED(CONFIG_INET))
>>> + return 0;
>>> +
>>> rsc_segments = DIV_ROUND_UP(skb->data_len, rsc_seg_len);
>>> if (unlikely(rsc_segments == 1))
>>> return 0;
>>

--
~Randy