enetc: Introduce basic PF and VF ENETC ethernet drivers
authorClaudiu Manoil <claudiu.manoil@nxp.com>
Tue, 22 Jan 2019 13:29:54 +0000 (15:29 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 25 Jan 2019 05:55:53 +0000 (21:55 -0800)
commitd4fd0404c1c95b17880f254ebfee3485693fa8ba
tree9ff00c02d89d3b82936c3138f4df743756f5581f
parent5e5b9f6272f2c537c43bc80607079cdf8fdb50aa
enetc: Introduce basic PF and VF ENETC ethernet drivers

ENETC is a multi-port virtualized Ethernet controller supporting GbE
designs and Time-Sensitive Networking (TSN) functionality.
ENETC is operating as an SR-IOV multi-PF capable Root Complex Integrated
Endpoint (RCIE).  As such, it contains multiple physical (PF) and
virtual (VF) PCIe functions, discoverable by standard PCI Express.

Introduce basic PF and VF ENETC ethernet drivers.  The PF has access to
the ENETC Port registers and resources and makes the required privileged
configurations for the underlying VF devices.  Common functionality is
controlled through so called System Interface (SI) register blocks, PFs
and VFs own a SI each.  Though SI register blocks are almost identical,
there are a few privileged SI level controls that are accessible only to
PFs, and so the distinction is made between PF SIs (PSI) and VF SIs (VSI).
As such, the bulk of the code, including datapath processing, basic h/w
offload support and generic pci related configuration, is shared between
the 2 drivers and is factored out in common source files (i.e. enetc.c).

Major functionalities included (for both drivers):
MSI-X support for Rx and Tx processing, assignment of Rx/Tx BD ring pairs
to MSI-X entries, multi-queue support, Rx S/G (Rx frame fragmentation) and
jumbo frame (up to 9600B) support, Rx paged allocation and reuse, Tx S/G
support (NETIF_F_SG), Rx and Tx checksum offload, PF MAC filtering and
initial control ring support, VLAN extraction/ insertion, PF Rx VLAN
CTAG filtering, VF mac address config support, VF VLAN isolation support,
etc.

Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 files changed:
MAINTAINERS
drivers/net/ethernet/freescale/Kconfig
drivers/net/ethernet/freescale/Makefile
drivers/net/ethernet/freescale/enetc/Kconfig [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/Makefile [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc.c [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc.h [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc_cbdr.c [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc_ethtool.c [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc_hw.h [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc_pf.c [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc_pf.h [new file with mode: 0644]
drivers/net/ethernet/freescale/enetc/enetc_vf.c [new file with mode: 0644]