2019-05-19 20:07:45 +08:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2015-05-27 10:20:15 +08:00
|
|
|
#
|
|
|
|
# Cavium ethernet device configuration
|
|
|
|
#
|
|
|
|
|
|
|
|
config NET_VENDOR_CAVIUM
|
2015-10-19 23:37:13 +08:00
|
|
|
bool "Cavium ethernet drivers"
|
2015-06-10 09:15:23 +08:00
|
|
|
default y
|
2015-05-27 10:20:15 +08:00
|
|
|
---help---
|
2015-06-10 09:15:23 +08:00
|
|
|
Select this option if you want enable Cavium network support.
|
2015-05-27 10:20:15 +08:00
|
|
|
|
2015-06-10 09:15:23 +08:00
|
|
|
If you have a Cavium SoC or network adapter, say Y.
|
2015-05-27 10:20:15 +08:00
|
|
|
|
|
|
|
if NET_VENDOR_CAVIUM
|
|
|
|
|
|
|
|
config THUNDER_NIC_PF
|
|
|
|
tristate "Thunder Physical function driver"
|
2018-07-17 21:46:34 +08:00
|
|
|
depends on 64BIT && PCI
|
2015-05-27 10:20:15 +08:00
|
|
|
select THUNDER_NIC_BGX
|
|
|
|
---help---
|
|
|
|
This driver supports Thunder's NIC physical function.
|
2015-06-10 09:15:23 +08:00
|
|
|
The NIC provides the controller and DMA engines to
|
|
|
|
move network traffic to/from the memory. The NIC
|
|
|
|
works closely with TNS, BGX and SerDes to implement the
|
|
|
|
functions replacing and virtualizing those of a typical
|
|
|
|
standalone PCIe NIC chip.
|
2015-05-27 10:20:15 +08:00
|
|
|
|
|
|
|
config THUNDER_NIC_VF
|
|
|
|
tristate "Thunder Virtual function driver"
|
2018-01-15 20:44:57 +08:00
|
|
|
imply CAVIUM_PTP
|
2018-07-17 21:46:34 +08:00
|
|
|
depends on 64BIT && PCI
|
2015-05-27 10:20:15 +08:00
|
|
|
---help---
|
|
|
|
This driver supports Thunder's NIC virtual function
|
|
|
|
|
|
|
|
config THUNDER_NIC_BGX
|
|
|
|
tristate "Thunder MAC interface driver (BGX)"
|
2018-07-18 00:23:58 +08:00
|
|
|
depends on 64BIT && PCI
|
2015-07-29 06:12:13 +08:00
|
|
|
select PHYLIB
|
2018-07-17 21:46:34 +08:00
|
|
|
select MDIO_THUNDER if PCI
|
2016-08-12 19:21:33 +08:00
|
|
|
select THUNDER_NIC_RGX
|
2015-05-27 10:20:15 +08:00
|
|
|
---help---
|
|
|
|
This driver supports programming and controlling of MAC
|
|
|
|
interface from NIC physical function driver.
|
|
|
|
|
2016-08-12 19:21:33 +08:00
|
|
|
config THUNDER_NIC_RGX
|
|
|
|
tristate "Thunder MAC interface driver (RGX)"
|
2018-07-18 00:23:58 +08:00
|
|
|
depends on 64BIT && PCI
|
2016-08-12 19:21:33 +08:00
|
|
|
select PHYLIB
|
2018-07-17 21:46:34 +08:00
|
|
|
select MDIO_THUNDER if PCI
|
2016-08-12 19:21:33 +08:00
|
|
|
---help---
|
|
|
|
This driver supports configuring XCV block of RGX interface
|
|
|
|
present on CN81XX chip.
|
|
|
|
|
2018-01-15 20:44:56 +08:00
|
|
|
config CAVIUM_PTP
|
|
|
|
tristate "Cavium PTP coprocessor as PTP clock"
|
2018-07-18 00:23:58 +08:00
|
|
|
depends on 64BIT && PCI
|
net: Make PTP-specific drivers depend on PTP_1588_CLOCK
Commit d1cbfd771ce8 ("ptp_clock: Allow for it to be optional") changed
all PTP-capable Ethernet drivers from `select PTP_1588_CLOCK` to `imply
PTP_1588_CLOCK`, "in order to break the hard dependency between the PTP
clock subsystem and ethernet drivers capable of being clock providers."
As a result it is possible to build PTP-capable Ethernet drivers without
the PTP subsystem by deselecting PTP_1588_CLOCK. Drivers are required to
handle the missing dependency gracefully.
Some PTP-capable Ethernet drivers (e.g., TI_CPSW) factor their PTP code
out into separate drivers (e.g., TI_CPTS_MOD). The above commit also
changed these PTP-specific drivers to `imply PTP_1588_CLOCK`, making it
possible to build them without the PTP subsystem. But as Grygorii
Strashko noted in [1]:
On Wed, Apr 22, 2020 at 02:16:11PM +0300, Grygorii Strashko wrote:
> Another question is that CPTS completely nonfunctional in this case and
> it was never expected that somebody will even try to use/run such
> configuration (except for random build purposes).
In my view, enabling a PTP-specific driver without the PTP subsystem is
a configuration error made possible by the above commit. Kconfig should
not allow users to create a configuration with missing dependencies that
results in "completely nonfunctional" drivers.
I audited all network drivers that call ptp_clock_register() but merely
`imply PTP_1588_CLOCK` and found five PTP-specific drivers that are
likely nonfunctional without PTP_1588_CLOCK:
NET_DSA_MV88E6XXX_PTP
NET_DSA_SJA1105_PTP
MACB_USE_HWSTAMP
CAVIUM_PTP
TI_CPTS_MOD
Note how these symbols all reference PTP or timestamping in their name;
this is a clue that they depend on PTP_1588_CLOCK.
Change them from `imply PTP_1588_CLOCK` [2] to `depends on PTP_1588_CLOCK`.
I'm not using `select PTP_1588_CLOCK` here because PTP_1588_CLOCK has
its own dependencies, which `select` would not transitively apply.
Additionally, remove the `select NET_PTP_CLASSIFY` from CPTS_TI_MOD;
PTP_1588_CLOCK already selects that.
[1]: https://lore.kernel.org/lkml/c04458ed-29ee-1797-3a11-7f3f560553e6@ti.com/
[2]: NET_DSA_SJA1105_PTP had never declared any type of dependency on
PTP_1588_CLOCK (`imply` or otherwise); adding a `depends on PTP_1588_CLOCK`
here seems appropriate.
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Nicolas Pitre <nico@fluxnic.net>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Fixes: d1cbfd771ce8 ("ptp_clock: Allow for it to be optional")
Signed-off-by: Clay McClure <clay@daemons.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-04-29 15:59:00 +08:00
|
|
|
depends on PTP_1588_CLOCK
|
2018-01-15 20:44:56 +08:00
|
|
|
---help---
|
|
|
|
This driver adds support for the Precision Time Protocol Clocks and
|
|
|
|
Timestamping coprocessor (PTP) found on Cavium processors.
|
|
|
|
PTP provides timestamping mechanism that is suitable for use in IEEE 1588
|
|
|
|
Precision Time Protocol or other purposes. Timestamps can be used in
|
|
|
|
BGX, TNS, GTI, and NIC blocks.
|
|
|
|
|
2015-06-10 09:15:23 +08:00
|
|
|
config LIQUIDIO
|
|
|
|
tristate "Cavium LiquidIO support"
|
2018-07-18 00:23:58 +08:00
|
|
|
depends on 64BIT && PCI
|
2018-07-17 21:46:34 +08:00
|
|
|
depends on PCI
|
2016-11-11 13:10:07 +08:00
|
|
|
imply PTP_1588_CLOCK
|
2015-06-10 09:15:23 +08:00
|
|
|
select FW_LOADER
|
2015-06-17 07:51:43 +08:00
|
|
|
select LIBCRC32C
|
2019-03-24 18:14:38 +08:00
|
|
|
select NET_DEVLINK
|
2015-06-10 09:15:23 +08:00
|
|
|
---help---
|
|
|
|
This driver supports Cavium LiquidIO Intelligent Server Adapters
|
2016-09-01 02:03:24 +08:00
|
|
|
based on CN66XX, CN68XX and CN23XX chips.
|
2015-06-10 09:15:23 +08:00
|
|
|
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
|
|
will be called liquidio. This is recommended.
|
|
|
|
|
2016-03-15 08:57:08 +08:00
|
|
|
config OCTEON_MGMT_ETHERNET
|
|
|
|
tristate "Octeon Management port ethernet driver (CN5XXX, CN6XXX)"
|
|
|
|
depends on CAVIUM_OCTEON_SOC
|
|
|
|
select PHYLIB
|
|
|
|
select MDIO_OCTEON
|
|
|
|
default y
|
|
|
|
help
|
|
|
|
Enable the ethernet driver for the management
|
|
|
|
port on Cavium Networks' Octeon CN57XX, CN56XX, CN55XX,
|
|
|
|
CN54XX, CN52XX, and CN6XXX chips.
|
|
|
|
|
2016-11-29 08:54:34 +08:00
|
|
|
config LIQUIDIO_VF
|
|
|
|
tristate "Cavium LiquidIO VF support"
|
|
|
|
depends on 64BIT && PCI_MSI
|
2017-01-04 02:57:00 +08:00
|
|
|
imply PTP_1588_CLOCK
|
2016-11-29 08:54:34 +08:00
|
|
|
---help---
|
|
|
|
This driver supports Cavium LiquidIO Intelligent Server Adapter
|
|
|
|
based on CN23XX chips.
|
|
|
|
|
|
|
|
To compile this driver as a module, choose M here: The module
|
|
|
|
will be called liquidio_vf. MSI-X interrupt support is required
|
|
|
|
for this driver to work correctly
|
|
|
|
|
2015-05-27 10:20:15 +08:00
|
|
|
endif # NET_VENDOR_CAVIUM
|