xref: /linux-6.15/drivers/net/Kconfig (revision 440fed95)
1# SPDX-License-Identifier: GPL-2.0-only
2#
3# Network device configuration
4#
5
6menuconfig NETDEVICES
7	default y if UML
8	depends on NET
9	bool "Network device support"
10	help
11	  You can say N here if you don't intend to connect your Linux box to
12	  any other computer at all.
13
14	  You'll have to say Y if your computer contains a network card that
15	  you want to use under Linux. If you are going to run SLIP or PPP over
16	  telephone line or null modem cable you need say Y here. Connecting
17	  two machines with parallel ports using PLIP needs this, as well as
18	  AX.25/KISS for sending Internet traffic over amateur radio links.
19
20	  See also "The Linux Network Administrator's Guide" by Olaf Kirch and
21	  Terry Dawson. Available at <http://www.tldp.org/guides.html>.
22
23	  If unsure, say Y.
24
25# All the following symbols are dependent on NETDEVICES - do not repeat
26# that for each of the symbols.
27if NETDEVICES
28
29config MII
30	tristate
31
32config NET_CORE
33	default y
34	bool "Network core driver support"
35	help
36	  You can say N here if you do not intend to use any of the
37	  networking core drivers (i.e. VLAN, bridging, bonding, etc.)
38
39if NET_CORE
40
41config BONDING
42	tristate "Bonding driver support"
43	depends on INET
44	depends on IPV6 || IPV6=n
45	depends on TLS || TLS_DEVICE=n
46	help
47	  Say 'Y' or 'M' if you wish to be able to 'bond' multiple Ethernet
48	  Channels together. This is called 'Etherchannel' by Cisco,
49	  'Trunking' by Sun, 802.3ad by the IEEE, and 'Bonding' in Linux.
50
51	  The driver supports multiple bonding modes to allow for both high
52	  performance and high availability operation.
53
54	  Refer to <file:Documentation/networking/bonding.rst> for more
55	  information.
56
57	  To compile this driver as a module, choose M here: the module
58	  will be called bonding.
59
60config DUMMY
61	tristate "Dummy net driver support"
62	help
63	  This is essentially a bit-bucket device (i.e. traffic you send to
64	  this device is consigned into oblivion) with a configurable IP
65	  address. It is most commonly used in order to make your currently
66	  inactive SLIP address seem like a real address for local programs.
67	  If you use SLIP or PPP, you might want to say Y here. It won't
68	  enlarge your kernel. What a deal. Read about it in the Network
69	  Administrator's Guide, available from
70	  <http://www.tldp.org/docs.html#guide>.
71
72	  To compile this driver as a module, choose M here: the module
73	  will be called dummy.
74
75config WIREGUARD
76	tristate "WireGuard secure network tunnel"
77	depends on NET && INET
78	depends on IPV6 || !IPV6
79	depends on !KMSAN # KMSAN doesn't support the crypto configs below
80	select NET_UDP_TUNNEL
81	select DST_CACHE
82	select CRYPTO
83	select CRYPTO_LIB_CURVE25519
84	select CRYPTO_LIB_CHACHA20POLY1305
85	select CRYPTO_CHACHA20_X86_64 if X86 && 64BIT
86	select CRYPTO_POLY1305_X86_64 if X86 && 64BIT
87	select CRYPTO_BLAKE2S_X86 if X86 && 64BIT
88	select CRYPTO_CURVE25519_X86 if X86 && 64BIT
89	select ARM_CRYPTO if ARM
90	select ARM64_CRYPTO if ARM64
91	select CRYPTO_CHACHA20_NEON if ARM || (ARM64 && KERNEL_MODE_NEON)
92	select CRYPTO_POLY1305_NEON if ARM64 && KERNEL_MODE_NEON
93	select CRYPTO_POLY1305_ARM if ARM
94	select CRYPTO_BLAKE2S_ARM if ARM
95	select CRYPTO_CURVE25519_NEON if ARM && KERNEL_MODE_NEON
96	select CRYPTO_CHACHA_MIPS if CPU_MIPS32_R2
97	select CRYPTO_POLY1305_MIPS if MIPS
98	select CRYPTO_CHACHA_S390 if S390
99	help
100	  WireGuard is a secure, fast, and easy to use replacement for IPSec
101	  that uses modern cryptography and clever networking tricks. It's
102	  designed to be fairly general purpose and abstract enough to fit most
103	  use cases, while at the same time remaining extremely simple to
104	  configure. See www.wireguard.com for more info.
105
106	  It's safe to say Y or M here, as the driver is very lightweight and
107	  is only in use when an administrator chooses to add an interface.
108
109config WIREGUARD_DEBUG
110	bool "Debugging checks and verbose messages"
111	depends on WIREGUARD
112	help
113	  This will write log messages for handshake and other events
114	  that occur for a WireGuard interface. It will also perform some
115	  extra validation checks and unit tests at various points. This is
116	  only useful for debugging.
117
118	  Say N here unless you know what you're doing.
119
120config EQUALIZER
121	tristate "EQL (serial line load balancing) support"
122	help
123	  If you have two serial connections to some other computer (this
124	  usually requires two modems and two telephone lines) and you use
125	  SLIP (the protocol for sending Internet traffic over telephone
126	  lines) or PPP (a better SLIP) on them, you can make them behave like
127	  one double speed connection using this driver.  Naturally, this has
128	  to be supported at the other end as well, either with a similar EQL
129	  Linux driver or with a Livingston Portmaster 2e.
130
131	  Say Y if you want this and read
132	  <file:Documentation/networking/eql.rst>.  You may also want to read
133	  section 6.2 of the NET-3-HOWTO, available from
134	  <http://www.tldp.org/docs.html#howto>.
135
136	  To compile this driver as a module, choose M here: the module
137	  will be called eql.  If unsure, say N.
138
139config NET_FC
140	bool "Fibre Channel driver support"
141	depends on SCSI && PCI
142	help
143	  Fibre Channel is a high speed serial protocol mainly used to connect
144	  large storage devices to the computer; it is compatible with and
145	  intended to replace SCSI.
146
147	  If you intend to use Fibre Channel, you need to have a Fibre channel
148	  adaptor card in your computer; say Y here and to the driver for your
149	  adaptor below. You also should have said Y to "SCSI support" and
150	  "SCSI generic support".
151
152config IFB
153	tristate "Intermediate Functional Block support"
154	depends on NET_ACT_MIRRED || NFT_FWD_NETDEV
155	select NET_REDIRECT
156	help
157	  This is an intermediate driver that allows sharing of
158	  resources.
159	  To compile this driver as a module, choose M here: the module
160	  will be called ifb.  If you want to use more than one ifb
161	  device at a time, you need to compile this driver as a module.
162	  Instead of 'ifb', the devices will then be called 'ifb0',
163	  'ifb1' etc.
164	  Look at the iproute2 documentation directory for usage etc
165
166source "drivers/net/team/Kconfig"
167
168config MACVLAN
169	tristate "MAC-VLAN support"
170	help
171	  This allows one to create virtual interfaces that map packets to
172	  or from specific MAC addresses to a particular interface.
173
174	  Macvlan devices can be added using the "ip" command from the
175	  iproute2 package starting with the iproute2-2.6.23 release:
176
177	  "ip link add link <real dev> [ address MAC ] [ NAME ] type macvlan"
178
179	  To compile this driver as a module, choose M here: the module
180	  will be called macvlan.
181
182config MACVTAP
183	tristate "MAC-VLAN based tap driver"
184	depends on MACVLAN
185	depends on INET
186	select TAP
187	help
188	  This adds a specialized tap character device driver that is based
189	  on the MAC-VLAN network interface, called macvtap. A macvtap device
190	  can be added in the same way as a macvlan device, using 'type
191	  macvtap', and then be accessed through the tap user space interface.
192
193	  To compile this driver as a module, choose M here: the module
194	  will be called macvtap.
195
196config IPVLAN_L3S
197	depends on NETFILTER
198	depends on IPVLAN
199	def_bool y
200	select NET_L3_MASTER_DEV
201
202config IPVLAN
203	tristate "IP-VLAN support"
204	depends on INET
205	depends on IPV6 || !IPV6
206	help
207	  This allows one to create virtual devices off of a main interface
208	  and packets will be delivered based on the dest L3 (IPv6/IPv4 addr)
209	  on packets. All interfaces (including the main interface) share L2
210	  making it transparent to the connected L2 switch.
211
212	  Ipvlan devices can be added using the "ip" command from the
213	  iproute2 package starting with the iproute2-3.19 release:
214
215	  "ip link add link <main-dev> [ NAME ] type ipvlan"
216
217	  To compile this driver as a module, choose M here: the module
218	  will be called ipvlan.
219
220config IPVTAP
221	tristate "IP-VLAN based tap driver"
222	depends on IPVLAN
223	depends on INET
224	select TAP
225	help
226	  This adds a specialized tap character device driver that is based
227	  on the IP-VLAN network interface, called ipvtap. An ipvtap device
228	  can be added in the same way as a ipvlan device, using 'type
229	  ipvtap', and then be accessed through the tap user space interface.
230
231	  To compile this driver as a module, choose M here: the module
232	  will be called ipvtap.
233
234config VXLAN
235	tristate "Virtual eXtensible Local Area Network (VXLAN)"
236	depends on INET
237	select NET_UDP_TUNNEL
238	select GRO_CELLS
239	help
240	  This allows one to create vxlan virtual interfaces that provide
241	  Layer 2 Networks over Layer 3 Networks. VXLAN is often used
242	  to tunnel virtual network infrastructure in virtualized environments.
243	  For more information see:
244	    http://tools.ietf.org/html/draft-mahalingam-dutt-dcops-vxlan-02
245
246	  To compile this driver as a module, choose M here: the module
247	  will be called vxlan.
248
249config GENEVE
250	tristate "Generic Network Virtualization Encapsulation"
251	depends on INET
252	depends on IPV6 || !IPV6
253	select NET_UDP_TUNNEL
254	select GRO_CELLS
255	help
256	  This allows one to create geneve virtual interfaces that provide
257	  Layer 2 Networks over Layer 3 Networks. GENEVE is often used
258	  to tunnel virtual network infrastructure in virtualized environments.
259	  For more information see:
260	    http://tools.ietf.org/html/draft-gross-geneve-02
261
262	  To compile this driver as a module, choose M here: the module
263	  will be called geneve.
264
265config BAREUDP
266	tristate "Bare UDP Encapsulation"
267	depends on INET
268	depends on IPV6 || !IPV6
269	select NET_UDP_TUNNEL
270	select GRO_CELLS
271	help
272	  This adds a bare UDP tunnel module for tunnelling different
273	  kinds of traffic like MPLS, IP, etc. inside a UDP tunnel.
274
275	  To compile this driver as a module, choose M here: the module
276	  will be called bareudp.
277
278config GTP
279	tristate "GPRS Tunneling Protocol datapath (GTP-U)"
280	depends on INET
281	select NET_UDP_TUNNEL
282	help
283	  This allows one to create gtp virtual interfaces that provide
284	  the GPRS Tunneling Protocol datapath (GTP-U). This tunneling protocol
285	  is used to prevent subscribers from accessing mobile carrier core
286	  network infrastructure. This driver requires a userspace software that
287	  implements the signaling protocol (GTP-C) to update its PDP context
288	  base, such as OpenGGSN <http://git.osmocom.org/openggsn/). This
289	  tunneling protocol is implemented according to the GSM TS 09.60 and
290	  3GPP TS 29.060 standards.
291
292	  To compile this drivers as a module, choose M here: the module
293	  will be called gtp.
294
295config AMT
296	tristate "Automatic Multicast Tunneling (AMT)"
297	depends on INET && IP_MULTICAST
298	depends on IPV6 || !IPV6
299	select NET_UDP_TUNNEL
300	help
301	  This allows one to create AMT(Automatic Multicast Tunneling)
302	  virtual interfaces that provide multicast tunneling.
303	  There are two roles, Gateway, and Relay.
304	  Gateway Encapsulates IGMP/MLD traffic from listeners to the Relay.
305	  Gateway Decapsulates multicast traffic from the Relay to Listeners.
306	  Relay Encapsulates multicast traffic from Sources to Gateway.
307	  Relay Decapsulates IGMP/MLD traffic from Gateway.
308
309	  To compile this drivers as a module, choose M here: the module
310	  will be called amt.
311
312config MACSEC
313	tristate "IEEE 802.1AE MAC-level encryption (MACsec)"
314	select CRYPTO
315	select CRYPTO_AES
316	select CRYPTO_GCM
317	select GRO_CELLS
318	help
319	   MACsec is an encryption standard for Ethernet.
320
321config NETCONSOLE
322	tristate "Network console logging support"
323	help
324	  If you want to log kernel messages over the network, enable this.
325	  See <file:Documentation/networking/netconsole.rst> for details.
326
327config NETCONSOLE_DYNAMIC
328	bool "Dynamic reconfiguration of logging targets"
329	depends on NETCONSOLE && SYSFS && CONFIGFS_FS && \
330			!(NETCONSOLE=y && CONFIGFS_FS=m)
331	help
332	  This option enables the ability to dynamically reconfigure target
333	  parameters (interface, IP addresses, port numbers, MAC addresses)
334	  at runtime through a userspace interface exported using configfs.
335	  See <file:Documentation/networking/netconsole.rst> for details.
336
337config NETPOLL
338	def_bool NETCONSOLE
339	select SRCU
340
341config NET_POLL_CONTROLLER
342	def_bool NETPOLL
343
344config NTB_NETDEV
345	tristate "Virtual Ethernet over NTB Transport"
346	depends on NTB_TRANSPORT
347
348config RIONET
349	tristate "RapidIO Ethernet over messaging driver support"
350	depends on RAPIDIO
351
352config RIONET_TX_SIZE
353	int "Number of outbound queue entries"
354	depends on RIONET
355	default "128"
356
357config RIONET_RX_SIZE
358	int "Number of inbound queue entries"
359	depends on RIONET
360	default "128"
361
362config TUN
363	tristate "Universal TUN/TAP device driver support"
364	depends on INET
365	select CRC32
366	help
367	  TUN/TAP provides packet reception and transmission for user space
368	  programs.  It can be viewed as a simple Point-to-Point or Ethernet
369	  device, which instead of receiving packets from a physical media,
370	  receives them from user space program and instead of sending packets
371	  via physical media writes them to the user space program.
372
373	  When a program opens /dev/net/tun, driver creates and registers
374	  corresponding net device tunX or tapX.  After a program closed above
375	  devices, driver will automatically delete tunXX or tapXX device and
376	  all routes corresponding to it.
377
378	  Please read <file:Documentation/networking/tuntap.rst> for more
379	  information.
380
381	  To compile this driver as a module, choose M here: the module
382	  will be called tun.
383
384	  If you don't know what to use this for, you don't need it.
385
386config TAP
387	tristate
388	help
389	  This option is selected by any driver implementing tap user space
390	  interface for a virtual interface to re-use core tap functionality.
391
392config TUN_VNET_CROSS_LE
393	bool "Support for cross-endian vnet headers on little-endian kernels"
394	default n
395	help
396	  This option allows TUN/TAP and MACVTAP device drivers in a
397	  little-endian kernel to parse vnet headers that come from a
398	  big-endian legacy virtio device.
399
400	  Userspace programs can control the feature using the TUNSETVNETBE
401	  and TUNGETVNETBE ioctls.
402
403	  Unless you have a little-endian system hosting a big-endian virtual
404	  machine with a legacy virtio NIC, you should say N.
405
406config VETH
407	tristate "Virtual ethernet pair device"
408	help
409	  This device is a local ethernet tunnel. Devices are created in pairs.
410	  When one end receives the packet it appears on its pair and vice
411	  versa.
412
413config VIRTIO_NET
414	tristate "Virtio network driver"
415	depends on VIRTIO
416	select NET_FAILOVER
417	help
418	  This is the virtual network driver for virtio.  It can be used with
419	  QEMU based VMMs (like KVM or Xen).  Say Y or M.
420
421config NLMON
422	tristate "Virtual netlink monitoring device"
423	help
424	  This option enables a monitoring net device for netlink skbs. The
425	  purpose of this is to analyze netlink messages with packet sockets.
426	  Thus applications like tcpdump will be able to see local netlink
427	  messages if they tap into the netlink device, record pcaps for further
428	  diagnostics, etc. This is mostly intended for developers or support
429	  to debug netlink issues. If unsure, say N.
430
431config NET_VRF
432	tristate "Virtual Routing and Forwarding (Lite)"
433	depends on IP_MULTIPLE_TABLES
434	depends on NET_L3_MASTER_DEV
435	depends on IPV6 || IPV6=n
436	depends on IPV6_MULTIPLE_TABLES || IPV6=n
437	help
438	  This option enables the support for mapping interfaces into VRF's. The
439	  support enables VRF devices.
440
441config VSOCKMON
442	tristate "Virtual vsock monitoring device"
443	depends on VHOST_VSOCK
444	help
445	  This option enables a monitoring net device for vsock sockets. It is
446	  mostly intended for developers or support to debug vsock issues. If
447	  unsure, say N.
448
449config MHI_NET
450	tristate "MHI network driver"
451	depends on MHI_BUS
452	help
453	  This is the network driver for MHI bus.  It can be used with
454	  QCOM based WWAN modems for IP or QMAP/rmnet protocol (like SDX55).
455	  Say Y or M.
456
457endif # NET_CORE
458
459config SUNGEM_PHY
460	tristate
461
462source "drivers/net/arcnet/Kconfig"
463
464source "drivers/atm/Kconfig"
465
466source "drivers/net/caif/Kconfig"
467
468source "drivers/net/dsa/Kconfig"
469
470source "drivers/net/ethernet/Kconfig"
471
472source "drivers/net/fddi/Kconfig"
473
474source "drivers/net/hippi/Kconfig"
475
476source "drivers/net/ipa/Kconfig"
477
478config NET_SB1000
479	tristate "General Instruments Surfboard 1000"
480	depends on PNP
481	help
482	  This is a driver for the General Instrument (also known as
483	  NextLevel) SURFboard 1000 internal
484	  cable modem. This is an ISA card which is used by a number of cable
485	  TV companies to provide cable modem access. It's a one-way
486	  downstream-only cable modem, meaning that your upstream net link is
487	  provided by your regular phone modem.
488
489	  At present this driver only compiles as a module, so say M here if
490	  you have this card. The module will be called sb1000. Then read
491	  <file:Documentation/networking/device_drivers/cable/sb1000.rst> for
492	  information on how to use this module, as it needs special ppp
493	  scripts for establishing a connection. Further documentation
494	  and the necessary scripts can be found at:
495
496	  <http://www.jacksonville.net/~fventuri/>
497	  <http://home.adelphia.net/~siglercm/sb1000.html>
498	  <http://linuxpower.cx/~cable/>
499
500	  If you don't have this card, of course say N.
501
502source "drivers/net/phy/Kconfig"
503
504source "drivers/net/can/Kconfig"
505
506source "drivers/net/mctp/Kconfig"
507
508source "drivers/net/mdio/Kconfig"
509
510source "drivers/net/pcs/Kconfig"
511
512source "drivers/net/plip/Kconfig"
513
514source "drivers/net/ppp/Kconfig"
515
516source "drivers/net/slip/Kconfig"
517
518source "drivers/s390/net/Kconfig"
519
520source "drivers/net/usb/Kconfig"
521
522source "drivers/net/wireless/Kconfig"
523
524source "drivers/net/wan/Kconfig"
525
526source "drivers/net/ieee802154/Kconfig"
527
528source "drivers/net/wwan/Kconfig"
529
530config XEN_NETDEV_FRONTEND
531	tristate "Xen network device frontend driver"
532	depends on XEN
533	select XEN_XENBUS_FRONTEND
534	select PAGE_POOL
535	default y
536	help
537	  This driver provides support for Xen paravirtual network
538	  devices exported by a Xen network driver domain (often
539	  domain 0).
540
541	  The corresponding Linux backend driver is enabled by the
542	  CONFIG_XEN_NETDEV_BACKEND option.
543
544	  If you are compiling a kernel for use as Xen guest, you
545	  should say Y here. To compile this driver as a module, chose
546	  M here: the module will be called xen-netfront.
547
548config XEN_NETDEV_BACKEND
549	tristate "Xen backend network device"
550	depends on XEN_BACKEND
551	help
552	  This driver allows the kernel to act as a Xen network driver
553	  domain which exports paravirtual network devices to other
554	  Xen domains. These devices can be accessed by any operating
555	  system that implements a compatible front end.
556
557	  The corresponding Linux frontend driver is enabled by the
558	  CONFIG_XEN_NETDEV_FRONTEND configuration option.
559
560	  The backend driver presents a standard network device
561	  endpoint for each paravirtual network device to the driver
562	  domain network stack. These can then be bridged or routed
563	  etc in order to provide full network connectivity.
564
565	  If you are compiling a kernel to run in a Xen network driver
566	  domain (often this is domain 0) you should say Y here. To
567	  compile this driver as a module, chose M here: the module
568	  will be called xen-netback.
569
570config VMXNET3
571	tristate "VMware VMXNET3 ethernet driver"
572	depends on PCI && INET
573	depends on PAGE_SIZE_LESS_THAN_64KB
574	help
575	  This driver supports VMware's vmxnet3 virtual ethernet NIC.
576	  To compile this driver as a module, choose M here: the
577	  module will be called vmxnet3.
578
579config FUJITSU_ES
580	tristate "FUJITSU Extended Socket Network Device driver"
581	depends on ACPI
582	help
583	  This driver provides support for Extended Socket network device
584	  on Extended Partitioning of FUJITSU PRIMEQUEST 2000 E2 series.
585
586config USB4_NET
587	tristate "Networking over USB4 and Thunderbolt cables"
588	depends on USB4 && INET
589	help
590	  Select this if you want to create network between two computers
591	  over a USB4 and Thunderbolt cables. The driver supports Apple
592	  ThunderboltIP protocol and allows communication with any host
593	  supporting the same protocol including Windows and macOS.
594
595	  To compile this driver a module, choose M here. The module will be
596	  called thunderbolt-net.
597
598source "drivers/net/hyperv/Kconfig"
599
600config NETDEVSIM
601	tristate "Simulated networking device"
602	depends on DEBUG_FS
603	depends on INET
604	depends on IPV6 || IPV6=n
605	depends on PSAMPLE || PSAMPLE=n
606	select NET_DEVLINK
607	help
608	  This driver is a developer testing tool and software model that can
609	  be used to test various control path networking APIs, especially
610	  HW-offload related.
611
612	  To compile this driver as a module, choose M here: the module
613	  will be called netdevsim.
614
615config NET_FAILOVER
616	tristate "Failover driver"
617	select FAILOVER
618	help
619	  This provides an automated failover mechanism via APIs to create
620	  and destroy a failover master netdev and manages a primary and
621	  standby slave netdevs that get registered via the generic failover
622	  infrastructure. This can be used by paravirtual drivers to enable
623	  an alternate low latency datapath. It also enables live migration of
624	  a VM with direct attached VF by failing over to the paravirtual
625	  datapath when the VF is unplugged.
626
627config NETDEV_LEGACY_INIT
628	bool
629	depends on ISA
630	help
631	  Drivers that call netdev_boot_setup_check() should select this
632	  symbol, everything else no longer needs it.
633
634endif # NETDEVICES
635