mbox series

[RFC,net-next,0/5] ice: L2TPv3 offload support

Message ID 20220826110059.119927-1-wojciech.drewek@intel.com (mailing list archive)
Headers show
Series ice: L2TPv3 offload support | expand

Message

Wojciech Drewek Aug. 26, 2022, 11 a.m. UTC
Add support for dissecting L2TPv3 session id in flow dissector. Add support
for this field in tc-flower and support offloading L2TPv3. Finally, add
support for hardware offload of L2TPv3 packets based on session id in
switchdev mode in ice driver.

Example filter:
  # tc filter add dev $PF1 ingress prio 1 protocol ip \
      flower \
        ip_proto l2tp \
        l2tpv3_sid 1234 \
        skip_sw \
      action mirred egress redirect dev $VF1_PR

Changes in iproute2 are required to use the new fields.

ICE COMMS DDP package is required to create a filter in ice.

Marcin Szycik (1):
  ice: Add L2TPv3 hardware offload support

Wojciech Drewek (4):
  uapi: move IPPROTO_L2TP to in.h
  flow_dissector: Add L2TPv3 dissectors
  net/sched: flower: Add L2TPv3 filter
  flow_offload: Introduce flow_match_l2tpv3

 .../ethernet/intel/ice/ice_protocol_type.h    |  8 +++
 drivers/net/ethernet/intel/ice/ice_switch.c   | 70 ++++++++++++++++++-
 drivers/net/ethernet/intel/ice/ice_tc_lib.c   | 27 ++++++-
 drivers/net/ethernet/intel/ice/ice_tc_lib.h   |  6 ++
 include/net/flow_dissector.h                  |  9 +++
 include/net/flow_offload.h                    |  6 ++
 include/uapi/linux/in.h                       |  2 +
 include/uapi/linux/l2tp.h                     |  2 -
 include/uapi/linux/pkt_cls.h                  |  2 +
 net/core/flow_dissector.c                     | 28 ++++++++
 net/core/flow_offload.c                       |  7 ++
 net/sched/cls_flower.c                        | 16 +++++
 12 files changed, 179 insertions(+), 4 deletions(-)

Comments

Jiri Pirko Aug. 26, 2022, 11:16 a.m. UTC | #1
Fri, Aug 26, 2022 at 01:00:54PM CEST, wojciech.drewek@intel.com wrote:
>Add support for dissecting L2TPv3 session id in flow dissector. Add support
>for this field in tc-flower and support offloading L2TPv3. Finally, add
>support for hardware offload of L2TPv3 packets based on session id in
>switchdev mode in ice driver.
>
>Example filter:
>  # tc filter add dev $PF1 ingress prio 1 protocol ip \
>      flower \
>        ip_proto l2tp \
>        l2tpv3_sid 1234 \
>        skip_sw \
>      action mirred egress redirect dev $VF1_PR
>
>Changes in iproute2 are required to use the new fields.
>
>ICE COMMS DDP package is required to create a filter in ice.

I don't understand what do you mean by this. Could you please explain
what this mysterious "ICE COMMS DDP package" is? Do I understand it
correctly that without it, the solution would not work?

>
>Marcin Szycik (1):
>  ice: Add L2TPv3 hardware offload support
>
>Wojciech Drewek (4):
>  uapi: move IPPROTO_L2TP to in.h
>  flow_dissector: Add L2TPv3 dissectors
>  net/sched: flower: Add L2TPv3 filter
>  flow_offload: Introduce flow_match_l2tpv3
>
> .../ethernet/intel/ice/ice_protocol_type.h    |  8 +++
> drivers/net/ethernet/intel/ice/ice_switch.c   | 70 ++++++++++++++++++-
> drivers/net/ethernet/intel/ice/ice_tc_lib.c   | 27 ++++++-
> drivers/net/ethernet/intel/ice/ice_tc_lib.h   |  6 ++
> include/net/flow_dissector.h                  |  9 +++
> include/net/flow_offload.h                    |  6 ++
> include/uapi/linux/in.h                       |  2 +
> include/uapi/linux/l2tp.h                     |  2 -
> include/uapi/linux/pkt_cls.h                  |  2 +
> net/core/flow_dissector.c                     | 28 ++++++++
> net/core/flow_offload.c                       |  7 ++
> net/sched/cls_flower.c                        | 16 +++++
> 12 files changed, 179 insertions(+), 4 deletions(-)
>
>-- 
>2.31.1
>
Wojciech Drewek Aug. 26, 2022, 11:36 a.m. UTC | #2
> -----Original Message-----
> From: Jiri Pirko <jiri@resnulli.us>
> Sent: piątek, 26 sierpnia 2022 13:16
> To: Drewek, Wojciech <wojciech.drewek@intel.com>
> Cc: netdev@vger.kernel.org; Lobakin, Alexandr <alexandr.lobakin@intel.com>; Brandeburg, Jesse <jesse.brandeburg@intel.com>;
> Nguyen, Anthony L <anthony.l.nguyen@intel.com>; davem@davemloft.net; edumazet@google.com; kuba@kernel.org;
> pabeni@redhat.com; jhs@mojatatu.com; xiyou.wangcong@gmail.com; marcin.szycik@linux.intel.com;
> michal.swiatkowski@linux.intel.com; kurt@linutronix.de; boris.sukholitko@broadcom.com; vladbu@nvidia.com;
> komachi.yoshiki@gmail.com; paulb@nvidia.com; baowen.zheng@corigine.com; louis.peens@corigine.com;
> simon.horman@corigine.com; pablo@netfilter.org; maksym.glubokiy@plvision.eu; intel-wired-lan@lists.osuosl.org;
> jchapman@katalix.com; gnault@redhat.com
> Subject: Re: [RFC PATCH net-next 0/5] ice: L2TPv3 offload support
> 
> Fri, Aug 26, 2022 at 01:00:54PM CEST, wojciech.drewek@intel.com wrote:
> >Add support for dissecting L2TPv3 session id in flow dissector. Add support
> >for this field in tc-flower and support offloading L2TPv3. Finally, add
> >support for hardware offload of L2TPv3 packets based on session id in
> >switchdev mode in ice driver.
> >
> >Example filter:
> >  # tc filter add dev $PF1 ingress prio 1 protocol ip \
> >      flower \
> >        ip_proto l2tp \
> >        l2tpv3_sid 1234 \
> >        skip_sw \
> >      action mirred egress redirect dev $VF1_PR
> >
> >Changes in iproute2 are required to use the new fields.
> >
> >ICE COMMS DDP package is required to create a filter in ice.
> 
> I don't understand what do you mean by this. Could you please explain
> what this mysterious "ICE COMMS DDP package" is? Do I understand it
> correctly that without it, the solution would not work?

Sorry, I'll include more precise description in the next version.
DDP (Dynamic Device Personalization) is a firmware package that contains definitions
protocol's headers and packets. It allows you  to add support for the new protocol to the
NIC card without rebooting.  If the DDP package does not support L2TPv3 then hw offload 
will not work, however sw offload will still work.

More info on DDP:
https://www.intel.com/content/www/us/en/architecture-and-technology/ethernet/dynamic-device-personalization-brief.html

> 
> >
> >Marcin Szycik (1):
> >  ice: Add L2TPv3 hardware offload support
> >
> >Wojciech Drewek (4):
> >  uapi: move IPPROTO_L2TP to in.h
> >  flow_dissector: Add L2TPv3 dissectors
> >  net/sched: flower: Add L2TPv3 filter
> >  flow_offload: Introduce flow_match_l2tpv3
> >
> > .../ethernet/intel/ice/ice_protocol_type.h    |  8 +++
> > drivers/net/ethernet/intel/ice/ice_switch.c   | 70 ++++++++++++++++++-
> > drivers/net/ethernet/intel/ice/ice_tc_lib.c   | 27 ++++++-
> > drivers/net/ethernet/intel/ice/ice_tc_lib.h   |  6 ++
> > include/net/flow_dissector.h                  |  9 +++
> > include/net/flow_offload.h                    |  6 ++
> > include/uapi/linux/in.h                       |  2 +
> > include/uapi/linux/l2tp.h                     |  2 -
> > include/uapi/linux/pkt_cls.h                  |  2 +
> > net/core/flow_dissector.c                     | 28 ++++++++
> > net/core/flow_offload.c                       |  7 ++
> > net/sched/cls_flower.c                        | 16 +++++
> > 12 files changed, 179 insertions(+), 4 deletions(-)
> >
> >--
> >2.31.1
> >
Wojciech Drewek Aug. 26, 2022, 11:52 a.m. UTC | #3
> -----Original Message-----
> From: Drewek, Wojciech
> Sent: piątek, 26 sierpnia 2022 13:37
> To: Jiri Pirko <jiri@resnulli.us>
> Cc: netdev@vger.kernel.org; Lobakin, Alexandr <alexandr.lobakin@intel.com>; Brandeburg, Jesse <jesse.brandeburg@intel.com>;
> Nguyen, Anthony L <anthony.l.nguyen@intel.com>; davem@davemloft.net; edumazet@google.com; kuba@kernel.org;
> pabeni@redhat.com; jhs@mojatatu.com; xiyou.wangcong@gmail.com; marcin.szycik@linux.intel.com;
> michal.swiatkowski@linux.intel.com; kurt@linutronix.de; boris.sukholitko@broadcom.com; vladbu@nvidia.com;
> komachi.yoshiki@gmail.com; paulb@nvidia.com; baowen.zheng@corigine.com; louis.peens@corigine.com;
> simon.horman@corigine.com; pablo@netfilter.org; maksym.glubokiy@plvision.eu; intel-wired-lan@lists.osuosl.org;
> jchapman@katalix.com; gnault@redhat.com
> Subject: RE: [RFC PATCH net-next 0/5] ice: L2TPv3 offload support
> 
> 
> 
> > -----Original Message-----
> > From: Jiri Pirko <jiri@resnulli.us>
> > Sent: piątek, 26 sierpnia 2022 13:16
> > To: Drewek, Wojciech <wojciech.drewek@intel.com>
> > Cc: netdev@vger.kernel.org; Lobakin, Alexandr <alexandr.lobakin@intel.com>; Brandeburg, Jesse <jesse.brandeburg@intel.com>;
> > Nguyen, Anthony L <anthony.l.nguyen@intel.com>; davem@davemloft.net; edumazet@google.com; kuba@kernel.org;
> > pabeni@redhat.com; jhs@mojatatu.com; xiyou.wangcong@gmail.com; marcin.szycik@linux.intel.com;
> > michal.swiatkowski@linux.intel.com; kurt@linutronix.de; boris.sukholitko@broadcom.com; vladbu@nvidia.com;
> > komachi.yoshiki@gmail.com; paulb@nvidia.com; baowen.zheng@corigine.com; louis.peens@corigine.com;
> > simon.horman@corigine.com; pablo@netfilter.org; maksym.glubokiy@plvision.eu; intel-wired-lan@lists.osuosl.org;
> > jchapman@katalix.com; gnault@redhat.com
> > Subject: Re: [RFC PATCH net-next 0/5] ice: L2TPv3 offload support
> >
> > Fri, Aug 26, 2022 at 01:00:54PM CEST, wojciech.drewek@intel.com wrote:
> > >Add support for dissecting L2TPv3 session id in flow dissector. Add support
> > >for this field in tc-flower and support offloading L2TPv3. Finally, add
> > >support for hardware offload of L2TPv3 packets based on session id in
> > >switchdev mode in ice driver.
> > >
> > >Example filter:
> > >  # tc filter add dev $PF1 ingress prio 1 protocol ip \
> > >      flower \
> > >        ip_proto l2tp \
> > >        l2tpv3_sid 1234 \
> > >        skip_sw \
> > >      action mirred egress redirect dev $VF1_PR
> > >
> > >Changes in iproute2 are required to use the new fields.
> > >
> > >ICE COMMS DDP package is required to create a filter in ice.
> >
> > I don't understand what do you mean by this. Could you please explain
> > what this mysterious "ICE COMMS DDP package" is? Do I understand it
> > correctly that without it, the solution would not work?
> 
> Sorry, I'll include more precise description in the next version.
> DDP (Dynamic Device Personalization) is a firmware package that contains definitions
> protocol's headers and packets. It allows you  to add support for the new protocol to the
> NIC card without rebooting.  If the DDP package does not support L2TPv3 then hw offload
> will not work, however sw offload will still work.
> 
> More info on DDP:
> https://www.intel.com/content/www/us/en/architecture-and-technology/ethernet/dynamic-device-personalization-brief.html

To be more precise we need COMMS DDP package that supports more protocols (L2TPv3 included):
https://www.intel.com/content/www/us/en/download/19660/intel-ethernet-800-series-telecommunication-comms-dynamic-device-personalization-ddp-package.html

> 
> >
> > >
> > >Marcin Szycik (1):
> > >  ice: Add L2TPv3 hardware offload support
> > >
> > >Wojciech Drewek (4):
> > >  uapi: move IPPROTO_L2TP to in.h
> > >  flow_dissector: Add L2TPv3 dissectors
> > >  net/sched: flower: Add L2TPv3 filter
> > >  flow_offload: Introduce flow_match_l2tpv3
> > >
> > > .../ethernet/intel/ice/ice_protocol_type.h    |  8 +++
> > > drivers/net/ethernet/intel/ice/ice_switch.c   | 70 ++++++++++++++++++-
> > > drivers/net/ethernet/intel/ice/ice_tc_lib.c   | 27 ++++++-
> > > drivers/net/ethernet/intel/ice/ice_tc_lib.h   |  6 ++
> > > include/net/flow_dissector.h                  |  9 +++
> > > include/net/flow_offload.h                    |  6 ++
> > > include/uapi/linux/in.h                       |  2 +
> > > include/uapi/linux/l2tp.h                     |  2 -
> > > include/uapi/linux/pkt_cls.h                  |  2 +
> > > net/core/flow_dissector.c                     | 28 ++++++++
> > > net/core/flow_offload.c                       |  7 ++
> > > net/sched/cls_flower.c                        | 16 +++++
> > > 12 files changed, 179 insertions(+), 4 deletions(-)
> > >
> > >--
> > >2.31.1
> > >
Jiri Pirko Aug. 26, 2022, 2:34 p.m. UTC | #4
Fri, Aug 26, 2022 at 01:36:55PM CEST, wojciech.drewek@intel.com wrote:
>
>
>> -----Original Message-----
>> From: Jiri Pirko <jiri@resnulli.us>
>> Sent: piątek, 26 sierpnia 2022 13:16
>> To: Drewek, Wojciech <wojciech.drewek@intel.com>
>> Cc: netdev@vger.kernel.org; Lobakin, Alexandr <alexandr.lobakin@intel.com>; Brandeburg, Jesse <jesse.brandeburg@intel.com>;
>> Nguyen, Anthony L <anthony.l.nguyen@intel.com>; davem@davemloft.net; edumazet@google.com; kuba@kernel.org;
>> pabeni@redhat.com; jhs@mojatatu.com; xiyou.wangcong@gmail.com; marcin.szycik@linux.intel.com;
>> michal.swiatkowski@linux.intel.com; kurt@linutronix.de; boris.sukholitko@broadcom.com; vladbu@nvidia.com;
>> komachi.yoshiki@gmail.com; paulb@nvidia.com; baowen.zheng@corigine.com; louis.peens@corigine.com;
>> simon.horman@corigine.com; pablo@netfilter.org; maksym.glubokiy@plvision.eu; intel-wired-lan@lists.osuosl.org;
>> jchapman@katalix.com; gnault@redhat.com
>> Subject: Re: [RFC PATCH net-next 0/5] ice: L2TPv3 offload support
>> 
>> Fri, Aug 26, 2022 at 01:00:54PM CEST, wojciech.drewek@intel.com wrote:
>> >Add support for dissecting L2TPv3 session id in flow dissector. Add support
>> >for this field in tc-flower and support offloading L2TPv3. Finally, add
>> >support for hardware offload of L2TPv3 packets based on session id in
>> >switchdev mode in ice driver.
>> >
>> >Example filter:
>> >  # tc filter add dev $PF1 ingress prio 1 protocol ip \
>> >      flower \
>> >        ip_proto l2tp \
>> >        l2tpv3_sid 1234 \
>> >        skip_sw \
>> >      action mirred egress redirect dev $VF1_PR
>> >
>> >Changes in iproute2 are required to use the new fields.
>> >
>> >ICE COMMS DDP package is required to create a filter in ice.
>> 
>> I don't understand what do you mean by this. Could you please explain
>> what this mysterious "ICE COMMS DDP package" is? Do I understand it
>> correctly that without it, the solution would not work?
>
>Sorry, I'll include more precise description in the next version.
>DDP (Dynamic Device Personalization) is a firmware package that contains definitions
>protocol's headers and packets. It allows you  to add support for the new protocol to the
>NIC card without rebooting.  If the DDP package does not support L2TPv3 then hw offload 
>will not work, however sw offload will still work.

Hmm, so it is some FW part? Why do we care about it here in patchset
description?


>
>More info on DDP:
>https://www.intel.com/content/www/us/en/architecture-and-technology/ethernet/dynamic-device-personalization-brief.html
>
>> 
>> >
>> >Marcin Szycik (1):
>> >  ice: Add L2TPv3 hardware offload support
>> >
>> >Wojciech Drewek (4):
>> >  uapi: move IPPROTO_L2TP to in.h
>> >  flow_dissector: Add L2TPv3 dissectors
>> >  net/sched: flower: Add L2TPv3 filter
>> >  flow_offload: Introduce flow_match_l2tpv3
>> >
>> > .../ethernet/intel/ice/ice_protocol_type.h    |  8 +++
>> > drivers/net/ethernet/intel/ice/ice_switch.c   | 70 ++++++++++++++++++-
>> > drivers/net/ethernet/intel/ice/ice_tc_lib.c   | 27 ++++++-
>> > drivers/net/ethernet/intel/ice/ice_tc_lib.h   |  6 ++
>> > include/net/flow_dissector.h                  |  9 +++
>> > include/net/flow_offload.h                    |  6 ++
>> > include/uapi/linux/in.h                       |  2 +
>> > include/uapi/linux/l2tp.h                     |  2 -
>> > include/uapi/linux/pkt_cls.h                  |  2 +
>> > net/core/flow_dissector.c                     | 28 ++++++++
>> > net/core/flow_offload.c                       |  7 ++
>> > net/sched/cls_flower.c                        | 16 +++++
>> > 12 files changed, 179 insertions(+), 4 deletions(-)
>> >
>> >--
>> >2.31.1
>> >
Jakub Kicinski Aug. 27, 2022, 1:01 a.m. UTC | #5
On Fri, 26 Aug 2022 16:34:34 +0200 Jiri Pirko wrote:
> >Sorry, I'll include more precise description in the next version.
> >DDP (Dynamic Device Personalization) is a firmware package that contains definitions
> >protocol's headers and packets. It allows you  to add support for the new protocol to the
> >NIC card without rebooting.  If the DDP package does not support L2TPv3 then hw offload 
> >will not work, however sw offload will still work.  
> 
> Hmm, so it is some FW part? Why do we care about it here in patchset
> description?

We generally encourage people to put as much context in the commit
messages and cover letters as possible. Nothing wrong with saying
that a specific parser microcode is needed, IMHO.