[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d567d359-776c-882c-5240-648e1a3aea21@redhat.com>
Date: Tue, 28 Mar 2017 18:41:55 +0200
From: Ivan Vecera <ivecera@...hat.com>
To: Jiri Pirko <jiri@...nulli.us>, netdev@...r.kernel.org
Cc: davem@...emloft.net, arkadis@...lanox.com, idosch@...lanox.com,
mlxsw@...lanox.com, jhs@...atatu.com, roopa@...ulusnetworks.com,
f.fainelli@...il.com, vivien.didelot@...oirfairelinux.com,
john.fastabend@...il.com, andrew@...n.ch,
simon.horman@...ronome.com
Subject: Re: [patch net-next v2 0/8] Add support for pipeline debug (dpipe)
Dne 28.3.2017 v 17:24 Jiri Pirko napsal(a):
> From: Jiri Pirko <jiri@...lanox.com>
>
> Arkadi says:
>
> While doing the hardware offloading process much of the hardware
> specifics cannot be presented. An example for such is the routing
> LPM algorithm which differ in hardware implementation from the
> kernel software implementation. The only information the user receives
> is whether specific route is offloaded or not, but he cannot really
> understand the underlying implementation nor get the specific statistics
> related to that process.
>
> Another example is ACL offload using TC which is commonly implemented
> using TCAM memory. Currently there is no capability to gain visibility
> into the TCAM structure and to debug suboptimal resource allocation.
>
> This patchset introduces capability for exporting the ASICs pipeline
> abstraction via devlink infrastructure, which should serve as an
> complementary tool. This infrastructure allows the user to get visibility
> into the ASIC by modeling it as a set of match/action tables.
>
> The main objects defined:
> Table - abstraction for a single pipeline stage. Contains the
> available match/actions and counter availability.
> Entry - entry in a specific table with specific matches/actions
> values and dedicated counter.
> Header/field - tuples which describes the tables behavior.
>
> As an example one of the ASIC's L3 blocks will be modeled. The egress
> rif (router interface) table is the final step in the L3 pipeline
> processing which does match on the internal rif index which was
> determined before by the routing logic. The erif table determines
> whether to forward or drop the packet and updates the corresponding
> rif L3 statistics.
>
> To expose this internal resources a special metadata header will
> be introduced that describes the internal information gathered by
> the ASIC's pipeline and contains the following fields: rif_port_index,
> forward and drop.
>
> Some internal hardware resources have direct mapping to kernel
> objects. For example the rif_port_index is mapped to the net-devices
> ifindex. By providing this mapping the users gains visibility into
> the offloading process.
>
> Follow-up work will include exporting more L3 tables which will give
> visibility into the routing process.
>
> First stage is adding support for dpipe in devlink. Next add support
> in spectrum driver. Finally implement egress router interface
> (erif) table for spectrum ASIC as an example.
>
> ---
> v1->v2: Please see individual patches
>
> Arkadi Sharshevsky (8):
> devlink: Support for pipeline debug (dpipe)
> mlxsw: reg: Add counter fields to RITR register
> mlxsw: spectrum: Add placeholder for dpipe
> mlxsw: spectrum: Add definition for egress rif table
> mlxsw: reg: Add Router Interface Counter Register
> mlxsw: spectrum: Support for counters on router interfaces
> mlxsw: spectrum_router: Add rif helper functions
> mlxsw: spectrum: Add Support for erif table entries access
>
> drivers/net/ethernet/mellanox/mlxsw/Makefile | 2 +-
> drivers/net/ethernet/mellanox/mlxsw/reg.h | 178 +++++
> drivers/net/ethernet/mellanox/mlxsw/resources.h | 2 +
> drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 10 +
> drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.c | 9 +
> drivers/net/ethernet/mellanox/mlxsw/spectrum_cnt.h | 1 +
> .../net/ethernet/mellanox/mlxsw/spectrum_dpipe.c | 351 +++++++++
> .../net/ethernet/mellanox/mlxsw/spectrum_dpipe.h | 43 ++
> .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 174 +++++
> .../net/ethernet/mellanox/mlxsw/spectrum_router.h | 58 ++
> include/net/devlink.h | 259 +++++++
> include/uapi/linux/devlink.h | 67 +-
> net/core/devlink.c | 836 +++++++++++++++++++++
> 13 files changed, 1988 insertions(+), 2 deletions(-)
> create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.c
> create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_dpipe.h
> create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_router.h
>
Reviewed-by: Ivan Vecera <ivecera@...hat.com>
Powered by blists - more mailing lists