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>
2019-01-22 21:29:54 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
config FSL_ENETC
|
|
|
|
tristate "ENETC PF driver"
|
|
|
|
depends on PCI && PCI_MSI && (ARCH_LAYERSCAPE || COMPILE_TEST)
|
2019-07-30 22:29:59 +08:00
|
|
|
select PHYLIB
|
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>
2019-01-22 21:29:54 +08:00
|
|
|
help
|
|
|
|
This driver supports NXP ENETC gigabit ethernet controller PCIe
|
|
|
|
physical function (PF) devices, managing ENETC Ports at a privileged
|
|
|
|
level.
|
|
|
|
|
|
|
|
If compiled as module (M), the module name is fsl-enetc.
|
|
|
|
|
|
|
|
config FSL_ENETC_VF
|
|
|
|
tristate "ENETC VF driver"
|
|
|
|
depends on PCI && PCI_MSI && (ARCH_LAYERSCAPE || COMPILE_TEST)
|
2019-08-01 09:24:19 +08:00
|
|
|
select PHYLIB
|
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>
2019-01-22 21:29:54 +08:00
|
|
|
help
|
|
|
|
This driver supports NXP ENETC gigabit ethernet controller PCIe
|
|
|
|
virtual function (VF) devices enabled by the ENETC PF driver.
|
|
|
|
|
|
|
|
If compiled as module (M), the module name is fsl-enetc-vf.
|
2019-02-12 12:24:03 +08:00
|
|
|
|
2019-08-01 19:52:51 +08:00
|
|
|
config FSL_ENETC_MDIO
|
|
|
|
tristate "ENETC MDIO driver"
|
|
|
|
depends on PCI && (ARCH_LAYERSCAPE || COMPILE_TEST)
|
|
|
|
help
|
|
|
|
This driver supports NXP ENETC Central MDIO controller as a PCIe
|
|
|
|
physical function (PF) device.
|
|
|
|
|
|
|
|
If compiled as module (M), the module name is fsl-enetc-mdio.
|
|
|
|
|
2019-02-12 12:24:03 +08:00
|
|
|
config FSL_ENETC_PTP_CLOCK
|
|
|
|
tristate "ENETC PTP clock driver"
|
|
|
|
depends on PTP_1588_CLOCK_QORIQ && (FSL_ENETC || FSL_ENETC_VF)
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
This driver adds support for using the ENETC 1588 timer
|
|
|
|
as a PTP clock. This clock is only useful if your PTP
|
|
|
|
programs are getting hardware time stamps on the PTP Ethernet
|
|
|
|
packets using the SO_TIMESTAMPING API.
|
|
|
|
|
|
|
|
If compiled as module (M), the module name is fsl-enetc-ptp.
|
2019-05-23 10:33:29 +08:00
|
|
|
|
|
|
|
config FSL_ENETC_HW_TIMESTAMPING
|
|
|
|
bool "ENETC hardware timestamping support"
|
|
|
|
depends on FSL_ENETC || FSL_ENETC_VF
|
|
|
|
help
|
|
|
|
Enable hardware timestamping support on the Ethernet packets
|
|
|
|
using the SO_TIMESTAMPING API. Because the RX BD ring dynamic
|
|
|
|
allocation has not been supported and it is too expensive to use
|
|
|
|
extended RX BDs if timestamping is not used, this option enables
|
|
|
|
extended RX BDs in order to support hardware timestamping.
|
2019-11-15 11:33:33 +08:00
|
|
|
|
|
|
|
config FSL_ENETC_QOS
|
|
|
|
bool "ENETC hardware Time-sensitive Network support"
|
2019-11-25 13:56:56 +08:00
|
|
|
depends on (FSL_ENETC || FSL_ENETC_VF) && (NET_SCH_TAPRIO || NET_SCH_CBS)
|
2019-11-15 11:33:33 +08:00
|
|
|
help
|
|
|
|
There are Time-Sensitive Network(TSN) capabilities(802.1Qbv/802.1Qci
|
|
|
|
/802.1Qbu etc.) supported by ENETC. These TSN capabilities can be set
|
|
|
|
enable/disable from user space via Qos commands(tc). In the kernel
|
|
|
|
side, it can be loaded by Qos driver. Currently, it is only support
|
2019-11-25 13:56:56 +08:00
|
|
|
taprio(802.1Qbv) and Credit Based Shaper(802.1Qbu).
|