[0/3] Support IPv6 flow label based RSS

Message ID 20240208054311.3642-1-ajit.khaparde@broadcom.com (mailing list archive)
Headers
Series Support IPv6 flow label based RSS |

Message

Ajit Khaparde Feb. 8, 2024, 5:43 a.m. UTC
  The use of 5-tuple of the source address, destination address,
source port, destination port, and the transport protocol type
may not be possible due to IP fragmentation, encryption, or
inability to parse past IPv6 extensions headers.

Flow label values can be chosen such that they can be
used as part of the input to a hash function used in a load
distribution scheme.

On supporting hardware, the 20-bit Flow Label field in the
IPv6 header can be used to perform RSS in the ingress path.

Please apply.

Example to configure IPv6 flow label based RSS:

flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-flow-label end / end

Ajit Khaparde (3):
  ethdev: add support for RSS based on IPv6 flow label
  app/testpmd: add IPv6 flow label to RSS types
  net/bnxt: add IPv6 flow label based RSS support

 app/test-pmd/config.c          | 1 +
 drivers/net/bnxt/bnxt.h        | 1 +
 drivers/net/bnxt/bnxt_ethdev.c | 2 ++
 drivers/net/bnxt/bnxt_hwrm.c   | 7 +++++++
 drivers/net/bnxt/bnxt_vnic.c   | 9 +++++++--
 lib/ethdev/rte_ethdev.h        | 1 +
 6 files changed, 19 insertions(+), 2 deletions(-)
  

Comments

Ferruh Yigit Feb. 8, 2024, 6:47 p.m. UTC | #1
On 2/8/2024 5:43 AM, Ajit Khaparde wrote:
> The use of 5-tuple of the source address, destination address,
> source port, destination port, and the transport protocol type
> may not be possible due to IP fragmentation, encryption, or
> inability to parse past IPv6 extensions headers.
> 
> Flow label values can be chosen such that they can be
> used as part of the input to a hash function used in a load
> distribution scheme.
> 
> On supporting hardware, the 20-bit Flow Label field in the
> IPv6 header can be used to perform RSS in the ingress path.
> 
> Please apply.
> 

Hi Ajit,

First two patch looks OK but can you please combine them into single patch?

There are two ways for RSS, config APIs and rte_flow based support,
testpmd patch only adds flow based support, I don't know if old method
support is required, but if you want to add you can check following sample:
'Commit 46914aa1c793 ("ethdev: add eCPRI RSS offload type")'


Third patch, bnxt one, doesn't apply. It looks like it is on top of
different source code, if you prefer you can make it another patch and
get your tree.


> Example to configure IPv6 flow label based RSS:
> 
> flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-flow-label end / end
> 
> Ajit Khaparde (3):
>   ethdev: add support for RSS based on IPv6 flow label
>   app/testpmd: add IPv6 flow label to RSS types
>   net/bnxt: add IPv6 flow label based RSS support
> 
>  app/test-pmd/config.c          | 1 +
>  drivers/net/bnxt/bnxt.h        | 1 +
>  drivers/net/bnxt/bnxt_ethdev.c | 2 ++
>  drivers/net/bnxt/bnxt_hwrm.c   | 7 +++++++
>  drivers/net/bnxt/bnxt_vnic.c   | 9 +++++++--
>  lib/ethdev/rte_ethdev.h        | 1 +
>  6 files changed, 19 insertions(+), 2 deletions(-)
>
  
Ajit Khaparde Feb. 8, 2024, 6:56 p.m. UTC | #2
On Thu, Feb 8, 2024 at 10:47 AM Ferruh Yigit <ferruh.yigit@amd.com> wrote:
>
> On 2/8/2024 5:43 AM, Ajit Khaparde wrote:
> > The use of 5-tuple of the source address, destination address,
> > source port, destination port, and the transport protocol type
> > may not be possible due to IP fragmentation, encryption, or
> > inability to parse past IPv6 extensions headers.
> >
> > Flow label values can be chosen such that they can be
> > used as part of the input to a hash function used in a load
> > distribution scheme.
> >
> > On supporting hardware, the 20-bit Flow Label field in the
> > IPv6 header can be used to perform RSS in the ingress path.
> >
> > Please apply.
> >
>
> Hi Ajit,
>
Thanks Ferruh.

> First two patch looks OK but can you please combine them into single patch?
Sure. Can do.

>
> There are two ways for RSS, config APIs and rte_flow based support,
> testpmd patch only adds flow based support, I don't know if old method
> support is required, but if you want to add you can check following sample:
> 'Commit 46914aa1c793 ("ethdev: add eCPRI RSS offload type")'
Ok. Let me check.

>
>
> Third patch, bnxt one, doesn't apply. It looks like it is on top of
> different source code, if you prefer you can make it another patch and
> get your tree.
Yes. That's right. I had used the brcm-next-net for that and wanted
to have a driver patch to show usability of the code.

I think in v2, I will just send the ethdev + testpmd patch
and add the driver patch in the PMD list/tree for cherry-pick.

Thanks
Ajit

>
>
> > Example to configure IPv6 flow label based RSS:
> >
> > flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-flow-label end / end
> >
> > Ajit Khaparde (3):
> >   ethdev: add support for RSS based on IPv6 flow label
> >   app/testpmd: add IPv6 flow label to RSS types
> >   net/bnxt: add IPv6 flow label based RSS support
> >
> >  app/test-pmd/config.c          | 1 +
> >  drivers/net/bnxt/bnxt.h        | 1 +
> >  drivers/net/bnxt/bnxt_ethdev.c | 2 ++
> >  drivers/net/bnxt/bnxt_hwrm.c   | 7 +++++++
> >  drivers/net/bnxt/bnxt_vnic.c   | 9 +++++++--
> >  lib/ethdev/rte_ethdev.h        | 1 +
> >  6 files changed, 19 insertions(+), 2 deletions(-)
> >
>
  
Ferruh Yigit Feb. 8, 2024, 9:31 p.m. UTC | #3
On 2/8/2024 6:56 PM, Ajit Khaparde wrote:
> On Thu, Feb 8, 2024 at 10:47 AM Ferruh Yigit <ferruh.yigit@amd.com> wrote:
>>
>> On 2/8/2024 5:43 AM, Ajit Khaparde wrote:
>>> The use of 5-tuple of the source address, destination address,
>>> source port, destination port, and the transport protocol type
>>> may not be possible due to IP fragmentation, encryption, or
>>> inability to parse past IPv6 extensions headers.
>>>
>>> Flow label values can be chosen such that they can be
>>> used as part of the input to a hash function used in a load
>>> distribution scheme.
>>>
>>> On supporting hardware, the 20-bit Flow Label field in the
>>> IPv6 header can be used to perform RSS in the ingress path.
>>>
>>> Please apply.
>>>
>>
>> Hi Ajit,
>>
> Thanks Ferruh.
> 
>> First two patch looks OK but can you please combine them into single patch?
> Sure. Can do.
> 
>>
>> There are two ways for RSS, config APIs and rte_flow based support,
>> testpmd patch only adds flow based support, I don't know if old method
>> support is required, but if you want to add you can check following sample:
>> 'Commit 46914aa1c793 ("ethdev: add eCPRI RSS offload type")'
> Ok. Let me check.
> 
>>
>>
>> Third patch, bnxt one, doesn't apply. It looks like it is on top of
>> different source code, if you prefer you can make it another patch and
>> get your tree.
> Yes. That's right. I had used the brcm-next-net for that and wanted
> to have a driver patch to show usability of the code.
> 
> I think in v2, I will just send the ethdev + testpmd patch
>

ack.

> and add the driver patch in the PMD list/tree for cherry-pick.
> 
> Thanks
> Ajit
> 
>>
>>
>>> Example to configure IPv6 flow label based RSS:
>>>
>>> flow create 0 ingress pattern eth / ipv6 / tcp / end actions rss types ipv6-flow-label end / end
>>>
>>> Ajit Khaparde (3):
>>>   ethdev: add support for RSS based on IPv6 flow label
>>>   app/testpmd: add IPv6 flow label to RSS types
>>>   net/bnxt: add IPv6 flow label based RSS support
>>>
>>>  app/test-pmd/config.c          | 1 +
>>>  drivers/net/bnxt/bnxt.h        | 1 +
>>>  drivers/net/bnxt/bnxt_ethdev.c | 2 ++
>>>  drivers/net/bnxt/bnxt_hwrm.c   | 7 +++++++
>>>  drivers/net/bnxt/bnxt_vnic.c   | 9 +++++++--
>>>  lib/ethdev/rte_ethdev.h        | 1 +
>>>  6 files changed, 19 insertions(+), 2 deletions(-)
>>>
>>