DPAA2 Ethernet Switch driver
============================

This file provides documentation for the DPAA2 Ethernet Switch driver


Contents
========
	Supported Platforms
	Architecture Overview
	Creating an Ethernet Switch
	Features


	Supported Platforms
===================
This driver provides networking support for Freescale LS2085A, LS2088A
DPAA2 SoCs.


Architecture Overview
=====================
The Ethernet Switch in the DPAA2 architecture consists of several hardware
resources that provide the functionality. These are allocated and
configured via the Management Complex (MC) portals. MC abstracts most of
these resources as DPAA2 objects and exposes ABIs through which they can
be configured and controlled.

For a more detailed description of the DPAA2 architecture and its object
abstractions see:
	drivers/staging/fsl-mc/README.txt

The Ethernet Switch is built on top of a Datapath Switch (DPSW) object.

Configuration interface:

          ---------------------
         | DPAA2 Switch driver |
          ---------------------
                   .
                   .
              ----------
             | DPSW API |
              ----------
                   .           software
 ================= . ==============
                   .           hardware
          ---------------------
         | MC hardware portals |
          ---------------------
                   .
                   .
                 ------
                | DPSW |
                 ------

Driver uses the switch device driver model and exposes each switch port as
a network interface, which can be included in a bridge. Traffic switched
between ports is offloaded into the hardware. Exposed network interfaces
are not used for I/O, they are used just for configuration. This
limitation is going to be addressed in the future.

The DPSW can have ports connected to DPNIs or to PHYs via DPMACs.


 [ethA]     [ethB]     [ethC]     [ethD]     [ethE]     [ethF]
    :          :          :          :          :          :
    :          :          :          :          :          :
[eth drv]  [eth drv]  [                ethsw drv              ]
    :          :          :          :          :          :        kernel
========================================================================
    :          :          :          :          :          :        hardware
 [DPNI]      [DPNI]     [============= DPSW =================]
    |          |          |          |          |          |
    |           ----------           |       [DPMAC]    [DPMAC]
     -------------------------------            |          |
                                                |          |
                                              [PHY]      [PHY]

For a more detailed description of the Ethernet switch device driver model
see:
	Documentation/networking/switchdev.rst

Creating an Ethernet Switch
===========================
A device is created for the switch objects probed on the MC bus. Each DPSW
has a number of properties which determine the configuration options and
associated hardware resources.

A DPSW object (and the other DPAA2 objects needed for a DPAA2 switch) can
be added to a container on the MC bus in one of two ways: statically,
through a Datapath Layout Binary file (DPL) that is parsed by MC at boot
time; or created dynamically at runtime, via the DPAA2 objects APIs.

Features
========
Driver configures DPSW to perform hardware switching offload of
unicast/multicast/broadcast (VLAN tagged or untagged) traffic between its
ports.

It allows configuration of hardware learning, flooding, multicast groups,
port VLAN configuration and STP state.

Static entries can be added/removed from the FDB.

Hardware statistics for each port are provided through ethtool -S option.
