lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 3 Feb 2017 07:58:01 +0100
From:   Jiri Pirko <jiri@...nulli.us>
To:     Florian Fainelli <f.fainelli@...il.com>
Cc:     netdev@...r.kernel.org, davem@...emloft.net, idosch@...lanox.com,
        eladr@...lanox.com, mlxsw@...lanox.com, ogerlitz@...lanox.com,
        jhs@...atatu.com, ivecera@...hat.com, jbenc@...hat.com
Subject: Re: [patch net-next 00/19] mlxsw: Introduce TC Flower offload using
 TCAM

Thu, Feb 02, 2017 at 10:40:42PM CET, f.fainelli@...il.com wrote:
>On 02/02/2017 07:12 AM, Jiri Pirko wrote:
>> From: Jiri Pirko <jiri@...lanox.com>
>> 
>> This patchset introduces support for offloading TC cls_flower and actions
>> to Spectrum TCAM-base policy engine.
>> 
>> The patchset contains patches to allow work with flexible keys and actions
>> which are used in Spectrum TCAM.
>> 
>> It also contains in-driver infrastructure for offloading TC rules to TCAM HW.
>> The TCAM management code is simple and limited for now. It is going to be
>> extended as a follow-up work.
>> 
>> The last patch uses the previously introduced infra to allow to implement
>> cls_flower offloading. Initially, only limited set of match-keys and only
>> a drop and forward actions are supported.
>> 
>> As a dependency, this patchset introduces parman - priority array
>> area manager - as a library.
>
>This looks really great (except all the input parameters validation
>using flow_dissector keys, but there is already a thread about that, and
>you are working with what you have)!
>
>One thing I found missing with cls_flower is the ability to specify the
>location of a rule, or if not specified have the switch driver return to
>user which rule index was selected. Should we consider adding that so we
>could finally move out of ethtool::rxfnc for NICs and other drivers?

What exactly do you mean by "location"? When you add the rule, you
specify "pref/prio". Rules with same prio have always indentical mask
and go into one hashtable. For mlxsw offload, the rule with prio goes
down to driver and the chunks of rules with same priority are arranged
in TCAM accordingly (using parman).



>
>Thanks
>
>> 
>> Jiri Pirko (19):
>>   mlxsw: item: Add 8bit item helpers
>>   mlxsw: item: Add helpers for getting pointer into payload for char
>>     buffer item
>>   mlxsw: reg: Add Policy-Engine ACL Register
>>   mlxsw: reg: Add Policy-Engine ACL Group Table register
>>   mlxsw: reg: Add Policy-Engine TCAM Allocation Register
>>   mlxsw: reg: Add Policy-Engine TCAM Entry Register Version 2
>>   mlxsw: reg: Add Policy-Engine Port Binding Table
>>   mlxsw: reg: Add Policy-Engine Rules Copy Register
>>   mlxsw: reg: Add Policy-Engine Policy Based Switching Register
>>   mlxsw: reg: Add Policy-Engine Extended Flexible Action Register
>>   mlxsw: core: Introduce flexible keys support
>>   mlxsw: core: Introduce flexible actions support
>>   mlxsw: spectrum: Introduce basic set of flexible key blocks
>>   mlxsw: resources: Add ACL related resources
>>   list: introduce list_for_each_entry_from_reverse helper
>>   lib: Introduce priority array area manager
>>   mlxsw: spectrum: Introduce ACL core with simple TCAM implementation
>>   sched: cls_flower: expose priority to offloading netdevice
>>   mlxsw: spectrum: Implement TC flower offload
>> 
>>  MAINTAINERS                                        |    8 +
>>  drivers/net/ethernet/mellanox/mlxsw/Kconfig        |    1 +
>>  drivers/net/ethernet/mellanox/mlxsw/Makefile       |    6 +-
>>  .../mellanox/mlxsw/core_acl_flex_actions.c         |  685 +++++++++++++
>>  .../mellanox/mlxsw/core_acl_flex_actions.h         |   66 ++
>>  .../ethernet/mellanox/mlxsw/core_acl_flex_keys.c   |  475 +++++++++
>>  .../ethernet/mellanox/mlxsw/core_acl_flex_keys.h   |  238 +++++
>>  drivers/net/ethernet/mellanox/mlxsw/item.h         |   98 +-
>>  drivers/net/ethernet/mellanox/mlxsw/reg.h          |  511 ++++++++-
>>  drivers/net/ethernet/mellanox/mlxsw/resources.h    |   20 +-
>>  drivers/net/ethernet/mellanox/mlxsw/spectrum.c     |   32 +-
>>  drivers/net/ethernet/mellanox/mlxsw/spectrum.h     |  106 +-
>>  drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c |  572 +++++++++++
>>  .../mellanox/mlxsw/spectrum_acl_flex_keys.h        |  109 ++
>>  .../ethernet/mellanox/mlxsw/spectrum_acl_tcam.c    | 1084 ++++++++++++++++++++
>>  .../net/ethernet/mellanox/mlxsw/spectrum_flower.c  |  309 ++++++
>>  include/linux/list.h                               |   13 +
>>  include/linux/parman.h                             |   76 ++
>>  include/net/pkt_cls.h                              |    1 +
>>  lib/Kconfig                                        |    3 +
>>  lib/Kconfig.debug                                  |   10 +
>>  lib/Makefile                                       |    3 +
>>  lib/parman.c                                       |  294 ++++++
>>  lib/test_parman.c                                  |  395 +++++++
>>  net/sched/cls_flower.c                             |    3 +
>>  25 files changed, 5102 insertions(+), 16 deletions(-)
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_actions.c
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_actions.h
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl.c
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_flex_keys.h
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c
>>  create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c
>>  create mode 100644 include/linux/parman.h
>>  create mode 100644 lib/parman.c
>>  create mode 100644 lib/test_parman.c
>> 
>
>
>-- 
>Florian

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ