# SPDX-License-Identifier: GPL-2.0-only
#
# Ethernet LAN device configuration
#

menuconfig ETHERNET
	bool "Ethernet driver support"
	depends on NET
	default y
	---help---
	  This section contains all the Ethernet device drivers.

if ETHERNET

config MDIO
	tristate

config SUNGEM_PHY
	tristate

source "drivers/net/ethernet/3com/Kconfig"
source "drivers/net/ethernet/adaptec/Kconfig"
source "drivers/net/ethernet/aeroflex/Kconfig"
source "drivers/net/ethernet/agere/Kconfig"
source "drivers/net/ethernet/alacritech/Kconfig"
source "drivers/net/ethernet/allwinner/Kconfig"
source "drivers/net/ethernet/alteon/Kconfig"
source "drivers/net/ethernet/altera/Kconfig"
source "drivers/net/ethernet/amazon/Kconfig"
source "drivers/net/ethernet/amd/Kconfig"
source "drivers/net/ethernet/apm/Kconfig"
source "drivers/net/ethernet/apple/Kconfig"
source "drivers/net/ethernet/aquantia/Kconfig"
source "drivers/net/ethernet/arc/Kconfig"
source "drivers/net/ethernet/atheros/Kconfig"
source "drivers/net/ethernet/aurora/Kconfig"
source "drivers/net/ethernet/broadcom/Kconfig"
source "drivers/net/ethernet/brocade/Kconfig"
source "drivers/net/ethernet/cadence/Kconfig"
source "drivers/net/ethernet/calxeda/Kconfig"
source "drivers/net/ethernet/cavium/Kconfig"
source "drivers/net/ethernet/chelsio/Kconfig"
source "drivers/net/ethernet/cirrus/Kconfig"
source "drivers/net/ethernet/cisco/Kconfig"
source "drivers/net/ethernet/cortina/Kconfig"

config CX_ECAT
	tristate "Beckhoff CX5020 EtherCAT master support"
	depends on PCI
	depends on X86 || COMPILE_TEST
	---help---
	  Driver for EtherCAT master module located on CCAT FPGA
	  that can be found on Beckhoff CX5020, and possibly other of CX
	  Beckhoff CX series industrial PCs.

	  To compile this driver as a module, choose M here. The module
	  will be called ec_bhf.

source "drivers/net/ethernet/davicom/Kconfig"

config DNET
	tristate "Dave ethernet support (DNET)"
	depends on HAS_IOMEM
	select PHYLIB
	---help---
	  The Dave ethernet interface (DNET) is found on Qong Board FPGA.
	  Say Y to include support for the DNET chip.

	  To compile this driver as a module, choose M here: the module
	  will be called dnet.

source "drivers/net/ethernet/dec/Kconfig"
source "drivers/net/ethernet/dlink/Kconfig"
source "drivers/net/ethernet/emulex/Kconfig"
source "drivers/net/ethernet/ezchip/Kconfig"
source "drivers/net/ethernet/faraday/Kconfig"
source "drivers/net/ethernet/freescale/Kconfig"
source "drivers/net/ethernet/fujitsu/Kconfig"
source "drivers/net/ethernet/google/Kconfig"
source "drivers/net/ethernet/hisilicon/Kconfig"
source "drivers/net/ethernet/huawei/Kconfig"
source "drivers/net/ethernet/i825xx/Kconfig"
source "drivers/net/ethernet/ibm/Kconfig"
source "drivers/net/ethernet/intel/Kconfig"
source "drivers/net/ethernet/xscale/Kconfig"

config JME
	tristate "JMicron(R) PCI-Express Gigabit Ethernet support"
	depends on PCI
	select CRC32
	select MII
	---help---
	  This driver supports the PCI-Express gigabit ethernet adapters
	  based on JMicron JMC250 chipset.

	  To compile this driver as a module, choose M here. The module
	  will be called jme.

config KORINA
	tristate "Korina (IDT RC32434) Ethernet support"
	depends on MIKROTIK_RB532
	---help---
	  If you have a Mikrotik RouterBoard 500 or IDT RC32434
	  based system say Y. Otherwise say N.

config LANTIQ_ETOP
	tristate "Lantiq SoC ETOP driver"
	depends on SOC_TYPE_XWAY
	---help---
	  Support for the MII0 inside the Lantiq SoC

config LANTIQ_XRX200
	tristate "Lantiq / Intel xRX200 PMAC network driver"
	depends on SOC_TYPE_XWAY
	---help---
	  Support for the PMAC of the Gigabit switch (GSWIP) inside the
	  Lantiq / Intel VRX200 VDSL SoC

source "drivers/net/ethernet/marvell/Kconfig"
source "drivers/net/ethernet/mediatek/Kconfig"
source "drivers/net/ethernet/mellanox/Kconfig"
source "drivers/net/ethernet/micrel/Kconfig"
source "drivers/net/ethernet/microchip/Kconfig"
source "drivers/net/ethernet/moxa/Kconfig"
source "drivers/net/ethernet/mscc/Kconfig"
source "drivers/net/ethernet/myricom/Kconfig"

config FEALNX
	tristate "Myson MTD-8xx PCI Ethernet support"
	depends on PCI
	select CRC32
	select MII
	---help---
	  Say Y here to support the Myson MTD-800 family of PCI-based Ethernet
	  cards. <http://www.myson.com.tw/>

source "drivers/net/ethernet/natsemi/Kconfig"
source "drivers/net/ethernet/neterion/Kconfig"
source "drivers/net/ethernet/netronome/Kconfig"
source "drivers/net/ethernet/ni/Kconfig"
source "drivers/net/ethernet/8390/Kconfig"
source "drivers/net/ethernet/nvidia/Kconfig"
source "drivers/net/ethernet/nxp/Kconfig"
source "drivers/net/ethernet/oki-semi/Kconfig"

config ETHOC
	tristate "OpenCores 10/100 Mbps Ethernet MAC support"
	depends on HAS_IOMEM && HAS_DMA
	select MII
	select PHYLIB
	select CRC32
	select BITREVERSE
	---help---
	  Say Y here if you want to use the OpenCores 10/100 Mbps Ethernet MAC.

source "drivers/net/ethernet/packetengines/Kconfig"
source "drivers/net/ethernet/pasemi/Kconfig"
source "drivers/net/ethernet/pensando/Kconfig"
source "drivers/net/ethernet/qlogic/Kconfig"
source "drivers/net/ethernet/qualcomm/Kconfig"
source "drivers/net/ethernet/rdc/Kconfig"
source "drivers/net/ethernet/realtek/Kconfig"
source "drivers/net/ethernet/renesas/Kconfig"
source "drivers/net/ethernet/rocker/Kconfig"
source "drivers/net/ethernet/samsung/Kconfig"
source "drivers/net/ethernet/seeq/Kconfig"
source "drivers/net/ethernet/sfc/Kconfig"
source "drivers/net/ethernet/sgi/Kconfig"
source "drivers/net/ethernet/silan/Kconfig"
source "drivers/net/ethernet/sis/Kconfig"
source "drivers/net/ethernet/smsc/Kconfig"
source "drivers/net/ethernet/socionext/Kconfig"
source "drivers/net/ethernet/stmicro/Kconfig"
source "drivers/net/ethernet/sun/Kconfig"
source "drivers/net/ethernet/synopsys/Kconfig"
source "drivers/net/ethernet/tehuti/Kconfig"
source "drivers/net/ethernet/ti/Kconfig"
source "drivers/net/ethernet/toshiba/Kconfig"
source "drivers/net/ethernet/tundra/Kconfig"
source "drivers/net/ethernet/via/Kconfig"
source "drivers/net/ethernet/wiznet/Kconfig"
source "drivers/net/ethernet/xilinx/Kconfig"
source "drivers/net/ethernet/xircom/Kconfig"

endif # ETHERNET
