mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00

This patch implements the "ethtool --set-mm" callback to trigger the frame preemption verification handshake. Uses the MAC Merge Software Verification (mmsv) mechanism in ethtool to perform the verification handshake for igc. The structure fpe.mmsv is set by mmsv in ethtool and should remain read-only for the driver. Other mmsv callbacks: a) configure_tx() -> not used yet at this point - igc lacks registers to configure FPE in the transmit direction, so this API is not utilized for now. When igc supports preemptible queue, driver will use this API to manage its configuration. b) configure_pmac() -> not used - this callback dynamically controls pmac_enabled at runtime. For example, mmsv calls configure_pmac() and disables pmac_enabled when the link partner goes down, even if the user previously enabled it. The intention is to save power but it is not feasible in igc because it causes an endless adapter reset loop: 1) Board A and Board B complete the verification handshake. Tx mode register for both boards are in TSN mode. 2) Board B link goes down. On Board A: 3) mmsv calls configure_pmac() with pmac_enabled = false. 4) configure_pmac() in igc updates a new field based on pmac_enabled. Driver uses this field in igc_tsn_new_flags() to indicate that the user enabled/disabled FPE. 5) configure_pmac() in igc calls igc_tsn_offload_apply() to check whether an adapter reset is needed. Calls existing logic in igc_tsn_will_tx_mode_change() and igc_tsn_new_flags(). 6) Since pmac_enabled is now disabled and no other TSN feature is active, igc_tsn_will_tx_mode_change() evaluates to true because Tx mode will switch from TSN to Legacy. 7) Driver resets the adapter. 8) Registers are set, and Tx mode switches to Legacy. 9) When link partner is up, steps 3-8 repeat, but this time with pmac_enabled = true, reactivating TSN. igc_tsn_will_tx_mode_change() evaluates to true again, since Tx mode will switch from Legacy to TSN. 10) Driver resets the adapter. 11) Adapter reset completes, registers are set, and Tx mode switches to TSN. On Board B: 12) Adapter reset on Board A at step 10 causes it to detect its link partner as down. 13) Repeats steps 3-8. 14) Once reset adapter on Board A is completed at step 11, it detects its link partner as up. 15) Repeats steps 9-11. - this cycle repeats indefinitely. To avoid this issue, igc only uses mmsv.pmac_enabled to track whether FPE is enabled or disabled. Co-developed-by: Vinicius Costa Gomes <vinicius.gomes@intel.com> Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com> Co-developed-by: Choong Yong Liang <yong.liang.choong@linux.intel.com> Signed-off-by: Choong Yong Liang <yong.liang.choong@linux.intel.com> Co-developed-by: Chwee-Lin Choong <chwee.lin.choong@intel.com> Signed-off-by: Chwee-Lin Choong <chwee.lin.choong@intel.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: Faizal Rahim <faizal.abdul.rahim@linux.intel.com> Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
396 lines
12 KiB
Plaintext
396 lines
12 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Intel network device configuration
|
|
#
|
|
|
|
config NET_VENDOR_INTEL
|
|
bool "Intel devices"
|
|
default y
|
|
help
|
|
If you have a network (Ethernet) card belonging to this class, say Y.
|
|
|
|
Note that the answer to this question doesn't directly affect the
|
|
kernel: saying N will just cause the configurator to skip all
|
|
the questions about Intel cards. If you say Y, you will be asked for
|
|
your specific card in the following questions.
|
|
|
|
if NET_VENDOR_INTEL
|
|
|
|
source "drivers/net/ethernet/intel/libeth/Kconfig"
|
|
source "drivers/net/ethernet/intel/libie/Kconfig"
|
|
|
|
config E100
|
|
tristate "Intel(R) PRO/100+ support"
|
|
depends on PCI
|
|
select MII
|
|
help
|
|
This driver supports Intel(R) PRO/100 family of adapters.
|
|
To verify that your adapter is supported, find the board ID number
|
|
on the adapter. Look for a label that has a barcode and a number
|
|
in the format 123456-001 (six digits hyphen three digits).
|
|
|
|
Use the above information and the Adapter & Driver ID Guide that
|
|
can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
to identify the adapter.
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/e100.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called e100.
|
|
|
|
config E1000
|
|
tristate "Intel(R) PRO/1000 Gigabit Ethernet support"
|
|
depends on PCI && HAS_IOPORT
|
|
help
|
|
This driver supports Intel(R) PRO/1000 gigabit ethernet family of
|
|
adapters. For more information on how to identify your adapter, go
|
|
to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/e1000.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called e1000.
|
|
|
|
config E1000E
|
|
tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
|
|
depends on PCI && (!SPARC32 || BROKEN)
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
select CRC32
|
|
help
|
|
This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
|
|
ethernet family of adapters. For PCI or PCI-X e1000 adapters,
|
|
use the regular e1000 driver For more information on how to
|
|
identify your adapter, go to the Adapter & Driver ID Guide that
|
|
can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/e1000e.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called e1000e.
|
|
|
|
config E1000E_HWTS
|
|
bool "Support HW cross-timestamp on PCH devices"
|
|
default y
|
|
depends on E1000E && X86
|
|
help
|
|
Say Y to enable hardware supported cross-timestamping on PCH
|
|
devices. The cross-timestamp is available through the PTP clock
|
|
driver precise cross-timestamp ioctl (PTP_SYS_OFFSET_PRECISE).
|
|
|
|
config IGB
|
|
tristate "Intel(R) 82575/82576 PCI-Express Gigabit Ethernet support"
|
|
depends on PCI
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
select I2C
|
|
select I2C_ALGOBIT
|
|
help
|
|
This driver supports Intel(R) 82575/82576 gigabit ethernet family of
|
|
adapters. For more information on how to identify your adapter, go
|
|
to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/igb.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called igb.
|
|
|
|
config IGB_HWMON
|
|
bool "Intel(R) PCI-Express Gigabit adapters HWMON support"
|
|
default y
|
|
depends on IGB && HWMON && !(IGB=y && HWMON=m)
|
|
help
|
|
Say Y if you want to expose thermal sensor data on Intel devices.
|
|
|
|
Some of our devices contain thermal sensors, both external and internal.
|
|
This data is available via the hwmon sysfs interface and exposes
|
|
the onboard sensors.
|
|
|
|
config IGB_DCA
|
|
bool "Direct Cache Access (DCA) Support"
|
|
default y
|
|
depends on IGB && DCA && !(IGB=y && DCA=m)
|
|
help
|
|
Say Y here if you want to use Direct Cache Access (DCA) in the
|
|
driver. DCA is a method for warming the CPU cache before data
|
|
is used, with the intent of lessening the impact of cache misses.
|
|
|
|
config IGBVF
|
|
tristate "Intel(R) 82576 Virtual Function Ethernet support"
|
|
depends on PCI
|
|
help
|
|
This driver supports Intel(R) 82576 virtual functions. For more
|
|
information on how to identify your adapter, go to the Adapter &
|
|
Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/igbvf.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called igbvf.
|
|
|
|
config IXGBE
|
|
tristate "Intel(R) 10GbE PCI Express adapters support"
|
|
depends on PCI
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
select MDIO
|
|
select NET_DEVLINK
|
|
select PLDMFW
|
|
select PHYLIB
|
|
help
|
|
This driver supports Intel(R) 10GbE PCI Express family of
|
|
adapters. For more information on how to identify your adapter, go
|
|
to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/ixgbe.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called ixgbe.
|
|
|
|
config IXGBE_HWMON
|
|
bool "Intel(R) 10GbE PCI Express adapters HWMON support"
|
|
default y
|
|
depends on IXGBE && HWMON && !(IXGBE=y && HWMON=m)
|
|
help
|
|
Say Y if you want to expose the thermal sensor data on some of
|
|
our cards, via a hwmon sysfs interface.
|
|
|
|
config IXGBE_DCA
|
|
bool "Direct Cache Access (DCA) Support"
|
|
default y
|
|
depends on IXGBE && DCA && !(IXGBE=y && DCA=m)
|
|
help
|
|
Say Y here if you want to use Direct Cache Access (DCA) in the
|
|
driver. DCA is a method for warming the CPU cache before data
|
|
is used, with the intent of lessening the impact of cache misses.
|
|
|
|
config IXGBE_DCB
|
|
bool "Data Center Bridging (DCB) Support"
|
|
default n
|
|
depends on IXGBE && DCB
|
|
help
|
|
Say Y here if you want to use Data Center Bridging (DCB) in the
|
|
driver.
|
|
|
|
If unsure, say N.
|
|
|
|
config IXGBE_IPSEC
|
|
bool "IPSec XFRM cryptography-offload acceleration"
|
|
depends on IXGBE
|
|
depends on XFRM_OFFLOAD
|
|
default y
|
|
select XFRM_ALGO
|
|
help
|
|
Enable support for IPSec offload in ixgbe.ko
|
|
|
|
config IXGBEVF
|
|
tristate "Intel(R) 10GbE PCI Express Virtual Function Ethernet support"
|
|
depends on PCI_MSI
|
|
help
|
|
This driver supports Intel(R) PCI Express virtual functions for the
|
|
Intel(R) ixgbe driver. For more information on how to identify your
|
|
adapter, go to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/ixgbevf.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called ixgbevf. MSI-X interrupt support is required
|
|
for this driver to work correctly.
|
|
|
|
config IXGBEVF_IPSEC
|
|
bool "IPSec XFRM cryptography-offload acceleration"
|
|
depends on IXGBEVF
|
|
depends on XFRM_OFFLOAD
|
|
default y
|
|
select XFRM_ALGO
|
|
help
|
|
Enable support for IPSec offload in ixgbevf.ko
|
|
|
|
config I40E
|
|
tristate "Intel(R) Ethernet Controller XL710 Family support"
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
depends on PCI
|
|
select AUXILIARY_BUS
|
|
select LIBIE
|
|
select NET_DEVLINK
|
|
help
|
|
This driver supports Intel(R) Ethernet Controller XL710 Family of
|
|
devices. For more information on how to identify your adapter, go
|
|
to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/i40e.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called i40e.
|
|
|
|
config I40E_DCB
|
|
bool "Data Center Bridging (DCB) Support"
|
|
default n
|
|
depends on I40E && DCB
|
|
help
|
|
Say Y here if you want to use Data Center Bridging (DCB) in the
|
|
driver.
|
|
|
|
If unsure, say N.
|
|
|
|
# this is here to allow seamless migration from I40EVF --> IAVF name
|
|
# so that CONFIG_IAVF symbol will always mirror the state of CONFIG_I40EVF
|
|
config IAVF
|
|
tristate
|
|
select LIBIE
|
|
select NET_SHAPER
|
|
|
|
config I40EVF
|
|
tristate "Intel(R) Ethernet Adaptive Virtual Function support"
|
|
select IAVF
|
|
depends on PCI_MSI
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
help
|
|
This driver supports virtual functions for Intel XL710,
|
|
X710, X722, XXV710, and all devices advertising support for
|
|
Intel Ethernet Adaptive Virtual Function devices. For more
|
|
information on how to identify your adapter, go to the Adapter
|
|
& Driver ID Guide that can be located at:
|
|
|
|
<https://support.intel.com>
|
|
|
|
This driver was formerly named i40evf.
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/iavf.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called iavf. MSI-X interrupt support is required
|
|
for this driver to work correctly.
|
|
|
|
config ICE
|
|
tristate "Intel(R) Ethernet Connection E800 Series Support"
|
|
default n
|
|
depends on PCI_MSI
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
depends on GNSS || GNSS = n
|
|
select AUXILIARY_BUS
|
|
select DIMLIB
|
|
select LIBIE
|
|
select NET_DEVLINK
|
|
select PACKING
|
|
select PLDMFW
|
|
select DPLL
|
|
help
|
|
This driver supports Intel(R) Ethernet Connection E800 Series of
|
|
devices. For more information on how to identify your adapter, go
|
|
to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/ice.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called ice.
|
|
|
|
config ICE_HWMON
|
|
bool "Intel(R) Ethernet Connection E800 Series Support HWMON support"
|
|
default y
|
|
depends on ICE && HWMON && !(ICE=y && HWMON=m)
|
|
help
|
|
Say Y if you want to expose thermal sensor data on Intel devices.
|
|
|
|
Some of our devices contain internal thermal sensors.
|
|
This data is available via the hwmon sysfs interface and exposes
|
|
the onboard sensors.
|
|
|
|
config ICE_SWITCHDEV
|
|
bool "Switchdev Support"
|
|
default y
|
|
depends on ICE && NET_SWITCHDEV
|
|
help
|
|
Switchdev support provides internal SRIOV packet steering and switching.
|
|
|
|
To enable it on running kernel use devlink tool:
|
|
#devlink dev eswitch set pci/0000:XX:XX.X mode switchdev
|
|
|
|
Say Y here if you want to use Switchdev in the driver.
|
|
|
|
If unsure, say N.
|
|
|
|
config ICE_HWTS
|
|
bool "Support HW cross-timestamp on platforms with PTM support"
|
|
default y
|
|
depends on ICE && X86 && PCIE_PTM
|
|
help
|
|
Say Y to enable hardware supported cross-timestamping on platforms
|
|
with PCIe PTM support. The cross-timestamp is available through
|
|
the PTP clock driver precise cross-timestamp ioctl
|
|
(PTP_SYS_OFFSET_PRECISE).
|
|
|
|
config FM10K
|
|
tristate "Intel(R) FM10000 Ethernet Switch Host Interface Support"
|
|
default n
|
|
depends on PCI_MSI
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
help
|
|
This driver supports Intel(R) FM10000 Ethernet Switch Host
|
|
Interface. For more information on how to identify your adapter,
|
|
go to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
More specific information on configuring the driver is in
|
|
<file:Documentation/networking/device_drivers/ethernet/intel/fm10k.rst>.
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called fm10k. MSI-X interrupt support is required
|
|
|
|
config IGC
|
|
tristate "Intel(R) Ethernet Controller I225-LM/I225-V support"
|
|
default n
|
|
depends on PCI
|
|
depends on PTP_1588_CLOCK_OPTIONAL
|
|
depends on ETHTOOL_NETLINK
|
|
help
|
|
This driver supports Intel(R) Ethernet Controller I225-LM/I225-V
|
|
family of adapters.
|
|
|
|
For more information on how to identify your adapter, go
|
|
to the Adapter & Driver ID Guide that can be located at:
|
|
|
|
<http://support.intel.com>
|
|
|
|
To compile this driver as a module, choose M here. The module
|
|
will be called igc.
|
|
|
|
config IGC_LEDS
|
|
def_bool LEDS_TRIGGER_NETDEV
|
|
depends on IGC && LEDS_CLASS
|
|
depends on LEDS_CLASS=y || IGC=m
|
|
help
|
|
Optional support for controlling the NIC LED's with the netdev
|
|
LED trigger.
|
|
|
|
source "drivers/net/ethernet/intel/idpf/Kconfig"
|
|
|
|
endif # NET_VENDOR_INTEL
|