0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # Network device configuration
0004 #
0005
0006 menuconfig NETDEVICES
0007 default y if UML
0008 depends on NET
0009 bool "Network device support"
0010 help
0011 You can say N here if you don't intend to connect your Linux box to
0012 any other computer at all.
0013
0014 You'll have to say Y if your computer contains a network card that
0015 you want to use under Linux. If you are going to run SLIP or PPP over
0016 telephone line or null modem cable you need say Y here. Connecting
0017 two machines with parallel ports using PLIP needs this, as well as
0018 AX.25/KISS for sending Internet traffic over amateur radio links.
0019
0020 See also "The Linux Network Administrator's Guide" by Olaf Kirch and
0021 Terry Dawson. Available at <http://www.tldp.org/guides.html>.
0022
0023 If unsure, say Y.
0024
0025 # All the following symbols are dependent on NETDEVICES - do not repeat
0026 # that for each of the symbols.
0027 if NETDEVICES
0028
0029 config MII
0030 tristate
0031
0032 config NET_CORE
0033 default y
0034 bool "Network core driver support"
0035 help
0036 You can say N here if you do not intend to use any of the
0037 networking core drivers (i.e. VLAN, bridging, bonding, etc.)
0038
0039 if NET_CORE
0040
0041 config BONDING
0042 tristate "Bonding driver support"
0043 depends on INET
0044 depends on IPV6 || IPV6=n
0045 depends on TLS || TLS_DEVICE=n
0046 help
0047 Say 'Y' or 'M' if you wish to be able to 'bond' multiple Ethernet
0048 Channels together. This is called 'Etherchannel' by Cisco,
0049 'Trunking' by Sun, 802.3ad by the IEEE, and 'Bonding' in Linux.
0050
0051 The driver supports multiple bonding modes to allow for both high
0052 performance and high availability operation.
0053
0054 Refer to <file:Documentation/networking/bonding.rst> for more
0055 information.
0056
0057 To compile this driver as a module, choose M here: the module
0058 will be called bonding.
0059
0060 config DUMMY
0061 tristate "Dummy net driver support"
0062 help
0063 This is essentially a bit-bucket device (i.e. traffic you send to
0064 this device is consigned into oblivion) with a configurable IP
0065 address. It is most commonly used in order to make your currently
0066 inactive SLIP address seem like a real address for local programs.
0067 If you use SLIP or PPP, you might want to say Y here. It won't
0068 enlarge your kernel. What a deal. Read about it in the Network
0069 Administrator's Guide, available from
0070 <http://www.tldp.org/docs.html#guide>.
0071
0072 To compile this driver as a module, choose M here: the module
0073 will be called dummy.
0074
0075 config WIREGUARD
0076 tristate "WireGuard secure network tunnel"
0077 depends on NET && INET
0078 depends on IPV6 || !IPV6
0079 select NET_UDP_TUNNEL
0080 select DST_CACHE
0081 select CRYPTO
0082 select CRYPTO_LIB_CURVE25519
0083 select CRYPTO_LIB_CHACHA20POLY1305
0084 select CRYPTO_CHACHA20_X86_64 if X86 && 64BIT
0085 select CRYPTO_POLY1305_X86_64 if X86 && 64BIT
0086 select CRYPTO_BLAKE2S_X86 if X86 && 64BIT
0087 select CRYPTO_CURVE25519_X86 if X86 && 64BIT
0088 select ARM_CRYPTO if ARM
0089 select ARM64_CRYPTO if ARM64
0090 select CRYPTO_CHACHA20_NEON if ARM || (ARM64 && KERNEL_MODE_NEON)
0091 select CRYPTO_POLY1305_NEON if ARM64 && KERNEL_MODE_NEON
0092 select CRYPTO_POLY1305_ARM if ARM
0093 select CRYPTO_BLAKE2S_ARM if ARM
0094 select CRYPTO_CURVE25519_NEON if ARM && KERNEL_MODE_NEON
0095 select CRYPTO_CHACHA_MIPS if CPU_MIPS32_R2
0096 select CRYPTO_POLY1305_MIPS if MIPS
0097 select CRYPTO_CHACHA_S390 if S390
0098 help
0099 WireGuard is a secure, fast, and easy to use replacement for IPSec
0100 that uses modern cryptography and clever networking tricks. It's
0101 designed to be fairly general purpose and abstract enough to fit most
0102 use cases, while at the same time remaining extremely simple to
0103 configure. See www.wireguard.com for more info.
0104
0105 It's safe to say Y or M here, as the driver is very lightweight and
0106 is only in use when an administrator chooses to add an interface.
0107
0108 config WIREGUARD_DEBUG
0109 bool "Debugging checks and verbose messages"
0110 depends on WIREGUARD
0111 help
0112 This will write log messages for handshake and other events
0113 that occur for a WireGuard interface. It will also perform some
0114 extra validation checks and unit tests at various points. This is
0115 only useful for debugging.
0116
0117 Say N here unless you know what you're doing.
0118
0119 config EQUALIZER
0120 tristate "EQL (serial line load balancing) support"
0121 help
0122 If you have two serial connections to some other computer (this
0123 usually requires two modems and two telephone lines) and you use
0124 SLIP (the protocol for sending Internet traffic over telephone
0125 lines) or PPP (a better SLIP) on them, you can make them behave like
0126 one double speed connection using this driver. Naturally, this has
0127 to be supported at the other end as well, either with a similar EQL
0128 Linux driver or with a Livingston Portmaster 2e.
0129
0130 Say Y if you want this and read
0131 <file:Documentation/networking/eql.rst>. You may also want to read
0132 section 6.2 of the NET-3-HOWTO, available from
0133 <http://www.tldp.org/docs.html#howto>.
0134
0135 To compile this driver as a module, choose M here: the module
0136 will be called eql. If unsure, say N.
0137
0138 config NET_FC
0139 bool "Fibre Channel driver support"
0140 depends on SCSI && PCI
0141 help
0142 Fibre Channel is a high speed serial protocol mainly used to connect
0143 large storage devices to the computer; it is compatible with and
0144 intended to replace SCSI.
0145
0146 If you intend to use Fibre Channel, you need to have a Fibre channel
0147 adaptor card in your computer; say Y here and to the driver for your
0148 adaptor below. You also should have said Y to "SCSI support" and
0149 "SCSI generic support".
0150
0151 config IFB
0152 tristate "Intermediate Functional Block support"
0153 depends on NET_ACT_MIRRED || NFT_FWD_NETDEV
0154 select NET_REDIRECT
0155 help
0156 This is an intermediate driver that allows sharing of
0157 resources.
0158 To compile this driver as a module, choose M here: the module
0159 will be called ifb. If you want to use more than one ifb
0160 device at a time, you need to compile this driver as a module.
0161 Instead of 'ifb', the devices will then be called 'ifb0',
0162 'ifb1' etc.
0163 Look at the iproute2 documentation directory for usage etc
0164
0165 source "drivers/net/team/Kconfig"
0166
0167 config MACVLAN
0168 tristate "MAC-VLAN support"
0169 help
0170 This allows one to create virtual interfaces that map packets to
0171 or from specific MAC addresses to a particular interface.
0172
0173 Macvlan devices can be added using the "ip" command from the
0174 iproute2 package starting with the iproute2-2.6.23 release:
0175
0176 "ip link add link <real dev> [ address MAC ] [ NAME ] type macvlan"
0177
0178 To compile this driver as a module, choose M here: the module
0179 will be called macvlan.
0180
0181 config MACVTAP
0182 tristate "MAC-VLAN based tap driver"
0183 depends on MACVLAN
0184 depends on INET
0185 select TAP
0186 help
0187 This adds a specialized tap character device driver that is based
0188 on the MAC-VLAN network interface, called macvtap. A macvtap device
0189 can be added in the same way as a macvlan device, using 'type
0190 macvtap', and then be accessed through the tap user space interface.
0191
0192 To compile this driver as a module, choose M here: the module
0193 will be called macvtap.
0194
0195 config IPVLAN_L3S
0196 depends on NETFILTER
0197 depends on IPVLAN
0198 def_bool y
0199 select NET_L3_MASTER_DEV
0200
0201 config IPVLAN
0202 tristate "IP-VLAN support"
0203 depends on INET
0204 depends on IPV6 || !IPV6
0205 help
0206 This allows one to create virtual devices off of a main interface
0207 and packets will be delivered based on the dest L3 (IPv6/IPv4 addr)
0208 on packets. All interfaces (including the main interface) share L2
0209 making it transparent to the connected L2 switch.
0210
0211 Ipvlan devices can be added using the "ip" command from the
0212 iproute2 package starting with the iproute2-3.19 release:
0213
0214 "ip link add link <main-dev> [ NAME ] type ipvlan"
0215
0216 To compile this driver as a module, choose M here: the module
0217 will be called ipvlan.
0218
0219 config IPVTAP
0220 tristate "IP-VLAN based tap driver"
0221 depends on IPVLAN
0222 depends on INET
0223 select TAP
0224 help
0225 This adds a specialized tap character device driver that is based
0226 on the IP-VLAN network interface, called ipvtap. An ipvtap device
0227 can be added in the same way as a ipvlan device, using 'type
0228 ipvtap', and then be accessed through the tap user space interface.
0229
0230 To compile this driver as a module, choose M here: the module
0231 will be called ipvtap.
0232
0233 config VXLAN
0234 tristate "Virtual eXtensible Local Area Network (VXLAN)"
0235 depends on INET
0236 select NET_UDP_TUNNEL
0237 select GRO_CELLS
0238 help
0239 This allows one to create vxlan virtual interfaces that provide
0240 Layer 2 Networks over Layer 3 Networks. VXLAN is often used
0241 to tunnel virtual network infrastructure in virtualized environments.
0242 For more information see:
0243 http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02
0244
0245 To compile this driver as a module, choose M here: the module
0246 will be called vxlan.
0247
0248 config GENEVE
0249 tristate "Generic Network Virtualization Encapsulation"
0250 depends on INET
0251 depends on IPV6 || !IPV6
0252 select NET_UDP_TUNNEL
0253 select GRO_CELLS
0254 help
0255 This allows one to create geneve virtual interfaces that provide
0256 Layer 2 Networks over Layer 3 Networks. GENEVE is often used
0257 to tunnel virtual network infrastructure in virtualized environments.
0258 For more information see:
0259 http://tools.ietf.org/html/draft-gross-geneve-02
0260
0261 To compile this driver as a module, choose M here: the module
0262 will be called geneve.
0263
0264 config BAREUDP
0265 tristate "Bare UDP Encapsulation"
0266 depends on INET
0267 depends on IPV6 || !IPV6
0268 select NET_UDP_TUNNEL
0269 select GRO_CELLS
0270 help
0271 This adds a bare UDP tunnel module for tunnelling different
0272 kinds of traffic like MPLS, IP, etc. inside a UDP tunnel.
0273
0274 To compile this driver as a module, choose M here: the module
0275 will be called bareudp.
0276
0277 config GTP
0278 tristate "GPRS Tunneling Protocol datapath (GTP-U)"
0279 depends on INET
0280 select NET_UDP_TUNNEL
0281 help
0282 This allows one to create gtp virtual interfaces that provide
0283 the GPRS Tunneling Protocol datapath (GTP-U). This tunneling protocol
0284 is used to prevent subscribers from accessing mobile carrier core
0285 network infrastructure. This driver requires a userspace software that
0286 implements the signaling protocol (GTP-C) to update its PDP context
0287 base, such as OpenGGSN <http://git.osmocom.org/openggsn/). This
0288 tunneling protocol is implemented according to the GSM TS 09.60 and
0289 3GPP TS 29.060 standards.
0290
0291 To compile this drivers as a module, choose M here: the module
0292 will be called gtp.
0293
0294 config AMT
0295 tristate "Automatic Multicast Tunneling (AMT)"
0296 depends on INET && IP_MULTICAST
0297 depends on IPV6 || !IPV6
0298 select NET_UDP_TUNNEL
0299 help
0300 This allows one to create AMT(Automatic Multicast Tunneling)
0301 virtual interfaces that provide multicast tunneling.
0302 There are two roles, Gateway, and Relay.
0303 Gateway Encapsulates IGMP/MLD traffic from listeners to the Relay.
0304 Gateway Decapsulates multicast traffic from the Relay to Listeners.
0305 Relay Encapsulates multicast traffic from Sources to Gateway.
0306 Relay Decapsulates IGMP/MLD traffic from Gateway.
0307
0308 To compile this drivers as a module, choose M here: the module
0309 will be called amt.
0310
0311 config MACSEC
0312 tristate "IEEE 802.1AE MAC-level encryption (MACsec)"
0313 select CRYPTO
0314 select CRYPTO_AES
0315 select CRYPTO_GCM
0316 select GRO_CELLS
0317 help
0318 MACsec is an encryption standard for Ethernet.
0319
0320 config NETCONSOLE
0321 tristate "Network console logging support"
0322 help
0323 If you want to log kernel messages over the network, enable this.
0324 See <file:Documentation/networking/netconsole.rst> for details.
0325
0326 config NETCONSOLE_DYNAMIC
0327 bool "Dynamic reconfiguration of logging targets"
0328 depends on NETCONSOLE && SYSFS && CONFIGFS_FS && \
0329 !(NETCONSOLE=y && CONFIGFS_FS=m)
0330 help
0331 This option enables the ability to dynamically reconfigure target
0332 parameters (interface, IP addresses, port numbers, MAC addresses)
0333 at runtime through a userspace interface exported using configfs.
0334 See <file:Documentation/networking/netconsole.rst> for details.
0335
0336 config NETPOLL
0337 def_bool NETCONSOLE
0338 select SRCU
0339
0340 config NET_POLL_CONTROLLER
0341 def_bool NETPOLL
0342
0343 config NTB_NETDEV
0344 tristate "Virtual Ethernet over NTB Transport"
0345 depends on NTB_TRANSPORT
0346
0347 config RIONET
0348 tristate "RapidIO Ethernet over messaging driver support"
0349 depends on RAPIDIO
0350
0351 config RIONET_TX_SIZE
0352 int "Number of outbound queue entries"
0353 depends on RIONET
0354 default "128"
0355
0356 config RIONET_RX_SIZE
0357 int "Number of inbound queue entries"
0358 depends on RIONET
0359 default "128"
0360
0361 config TUN
0362 tristate "Universal TUN/TAP device driver support"
0363 depends on INET
0364 select CRC32
0365 help
0366 TUN/TAP provides packet reception and transmission for user space
0367 programs. It can be viewed as a simple Point-to-Point or Ethernet
0368 device, which instead of receiving packets from a physical media,
0369 receives them from user space program and instead of sending packets
0370 via physical media writes them to the user space program.
0371
0372 When a program opens /dev/net/tun, driver creates and registers
0373 corresponding net device tunX or tapX. After a program closed above
0374 devices, driver will automatically delete tunXX or tapXX device and
0375 all routes corresponding to it.
0376
0377 Please read <file:Documentation/networking/tuntap.rst> for more
0378 information.
0379
0380 To compile this driver as a module, choose M here: the module
0381 will be called tun.
0382
0383 If you don't know what to use this for, you don't need it.
0384
0385 config TAP
0386 tristate
0387 help
0388 This option is selected by any driver implementing tap user space
0389 interface for a virtual interface to re-use core tap functionality.
0390
0391 config TUN_VNET_CROSS_LE
0392 bool "Support for cross-endian vnet headers on little-endian kernels"
0393 default n
0394 help
0395 This option allows TUN/TAP and MACVTAP device drivers in a
0396 little-endian kernel to parse vnet headers that come from a
0397 big-endian legacy virtio device.
0398
0399 Userspace programs can control the feature using the TUNSETVNETBE
0400 and TUNGETVNETBE ioctls.
0401
0402 Unless you have a little-endian system hosting a big-endian virtual
0403 machine with a legacy virtio NIC, you should say N.
0404
0405 config VETH
0406 tristate "Virtual ethernet pair device"
0407 help
0408 This device is a local ethernet tunnel. Devices are created in pairs.
0409 When one end receives the packet it appears on its pair and vice
0410 versa.
0411
0412 config VIRTIO_NET
0413 tristate "Virtio network driver"
0414 depends on VIRTIO
0415 select NET_FAILOVER
0416 help
0417 This is the virtual network driver for virtio. It can be used with
0418 QEMU based VMMs (like KVM or Xen). Say Y or M.
0419
0420 config NLMON
0421 tristate "Virtual netlink monitoring device"
0422 help
0423 This option enables a monitoring net device for netlink skbs. The
0424 purpose of this is to analyze netlink messages with packet sockets.
0425 Thus applications like tcpdump will be able to see local netlink
0426 messages if they tap into the netlink device, record pcaps for further
0427 diagnostics, etc. This is mostly intended for developers or support
0428 to debug netlink issues. If unsure, say N.
0429
0430 config NET_VRF
0431 tristate "Virtual Routing and Forwarding (Lite)"
0432 depends on IP_MULTIPLE_TABLES
0433 depends on NET_L3_MASTER_DEV
0434 depends on IPV6 || IPV6=n
0435 depends on IPV6_MULTIPLE_TABLES || IPV6=n
0436 help
0437 This option enables the support for mapping interfaces into VRF's. The
0438 support enables VRF devices.
0439
0440 config VSOCKMON
0441 tristate "Virtual vsock monitoring device"
0442 depends on VHOST_VSOCK
0443 help
0444 This option enables a monitoring net device for vsock sockets. It is
0445 mostly intended for developers or support to debug vsock issues. If
0446 unsure, say N.
0447
0448 config MHI_NET
0449 tristate "MHI network driver"
0450 depends on MHI_BUS
0451 help
0452 This is the network driver for MHI bus. It can be used with
0453 QCOM based WWAN modems for IP or QMAP/rmnet protocol (like SDX55).
0454 Say Y or M.
0455
0456 endif # NET_CORE
0457
0458 config SUNGEM_PHY
0459 tristate
0460
0461 source "drivers/net/arcnet/Kconfig"
0462
0463 source "drivers/atm/Kconfig"
0464
0465 source "drivers/net/caif/Kconfig"
0466
0467 source "drivers/net/dsa/Kconfig"
0468
0469 source "drivers/net/ethernet/Kconfig"
0470
0471 source "drivers/net/fddi/Kconfig"
0472
0473 source "drivers/net/hippi/Kconfig"
0474
0475 source "drivers/net/ipa/Kconfig"
0476
0477 config NET_SB1000
0478 tristate "General Instruments Surfboard 1000"
0479 depends on PNP
0480 help
0481 This is a driver for the General Instrument (also known as
0482 NextLevel) SURFboard 1000 internal
0483 cable modem. This is an ISA card which is used by a number of cable
0484 TV companies to provide cable modem access. It's a one-way
0485 downstream-only cable modem, meaning that your upstream net link is
0486 provided by your regular phone modem.
0487
0488 At present this driver only compiles as a module, so say M here if
0489 you have this card. The module will be called sb1000. Then read
0490 <file:Documentation/networking/device_drivers/cable/sb1000.rst> for
0491 information on how to use this module, as it needs special ppp
0492 scripts for establishing a connection. Further documentation
0493 and the necessary scripts can be found at:
0494
0495 <http://www.jacksonville.net/~fventuri/>
0496 <http://home.adelphia.net/~siglercm/sb1000.html>
0497 <http://linuxpower.cx/~cable/>
0498
0499 If you don't have this card, of course say N.
0500
0501 source "drivers/net/phy/Kconfig"
0502
0503 source "drivers/net/can/Kconfig"
0504
0505 source "drivers/net/mctp/Kconfig"
0506
0507 source "drivers/net/mdio/Kconfig"
0508
0509 source "drivers/net/pcs/Kconfig"
0510
0511 source "drivers/net/plip/Kconfig"
0512
0513 source "drivers/net/ppp/Kconfig"
0514
0515 source "drivers/net/slip/Kconfig"
0516
0517 source "drivers/s390/net/Kconfig"
0518
0519 source "drivers/net/usb/Kconfig"
0520
0521 source "drivers/net/wireless/Kconfig"
0522
0523 source "drivers/net/wan/Kconfig"
0524
0525 source "drivers/net/ieee802154/Kconfig"
0526
0527 source "drivers/net/wwan/Kconfig"
0528
0529 config XEN_NETDEV_FRONTEND
0530 tristate "Xen network device frontend driver"
0531 depends on XEN
0532 select XEN_XENBUS_FRONTEND
0533 select PAGE_POOL
0534 default y
0535 help
0536 This driver provides support for Xen paravirtual network
0537 devices exported by a Xen network driver domain (often
0538 domain 0).
0539
0540 The corresponding Linux backend driver is enabled by the
0541 CONFIG_XEN_NETDEV_BACKEND option.
0542
0543 If you are compiling a kernel for use as Xen guest, you
0544 should say Y here. To compile this driver as a module, chose
0545 M here: the module will be called xen-netfront.
0546
0547 config XEN_NETDEV_BACKEND
0548 tristate "Xen backend network device"
0549 depends on XEN_BACKEND
0550 help
0551 This driver allows the kernel to act as a Xen network driver
0552 domain which exports paravirtual network devices to other
0553 Xen domains. These devices can be accessed by any operating
0554 system that implements a compatible front end.
0555
0556 The corresponding Linux frontend driver is enabled by the
0557 CONFIG_XEN_NETDEV_FRONTEND configuration option.
0558
0559 The backend driver presents a standard network device
0560 endpoint for each paravirtual network device to the driver
0561 domain network stack. These can then be bridged or routed
0562 etc in order to provide full network connectivity.
0563
0564 If you are compiling a kernel to run in a Xen network driver
0565 domain (often this is domain 0) you should say Y here. To
0566 compile this driver as a module, chose M here: the module
0567 will be called xen-netback.
0568
0569 config VMXNET3
0570 tristate "VMware VMXNET3 ethernet driver"
0571 depends on PCI && INET
0572 depends on PAGE_SIZE_LESS_THAN_64KB
0573 help
0574 This driver supports VMware's vmxnet3 virtual ethernet NIC.
0575 To compile this driver as a module, choose M here: the
0576 module will be called vmxnet3.
0577
0578 config FUJITSU_ES
0579 tristate "FUJITSU Extended Socket Network Device driver"
0580 depends on ACPI
0581 help
0582 This driver provides support for Extended Socket network device
0583 on Extended Partitioning of FUJITSU PRIMEQUEST 2000 E2 series.
0584
0585 config USB4_NET
0586 tristate "Networking over USB4 and Thunderbolt cables"
0587 depends on USB4 && INET
0588 help
0589 Select this if you want to create network between two computers
0590 over a USB4 and Thunderbolt cables. The driver supports Apple
0591 ThunderboltIP protocol and allows communication with any host
0592 supporting the same protocol including Windows and macOS.
0593
0594 To compile this driver a module, choose M here. The module will be
0595 called thunderbolt-net.
0596
0597 source "drivers/net/hyperv/Kconfig"
0598
0599 config NETDEVSIM
0600 tristate "Simulated networking device"
0601 depends on DEBUG_FS
0602 depends on INET
0603 depends on IPV6 || IPV6=n
0604 depends on PSAMPLE || PSAMPLE=n
0605 select NET_DEVLINK
0606 help
0607 This driver is a developer testing tool and software model that can
0608 be used to test various control path networking APIs, especially
0609 HW-offload related.
0610
0611 To compile this driver as a module, choose M here: the module
0612 will be called netdevsim.
0613
0614 config NET_FAILOVER
0615 tristate "Failover driver"
0616 select FAILOVER
0617 help
0618 This provides an automated failover mechanism via APIs to create
0619 and destroy a failover master netdev and manages a primary and
0620 standby slave netdevs that get registered via the generic failover
0621 infrastructure. This can be used by paravirtual drivers to enable
0622 an alternate low latency datapath. It also enables live migration of
0623 a VM with direct attached VF by failing over to the paravirtual
0624 datapath when the VF is unplugged.
0625
0626 config NETDEV_LEGACY_INIT
0627 bool
0628 depends on ISA
0629 help
0630 Drivers that call netdev_boot_setup_check() should select this
0631 symbol, everything else no longer needs it.
0632
0633 endif # NETDEVICES