xref: /linux/drivers/net/Kconfig (revision d8768fb12a14c30436bd0466b4fc28edeef45078)
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	select NET_UDP_TUNNEL
80	select DST_CACHE
81	select CRYPTO_LIB_CURVE25519
82	select CRYPTO_LIB_CHACHA20POLY1305
83	select CRYPTO_LIB_UTILS
84	help
85	  WireGuard is a secure, fast, and easy to use replacement for IPSec
86	  that uses modern cryptography and clever networking tricks. It's
87	  designed to be fairly general purpose and abstract enough to fit most
88	  use cases, while at the same time remaining extremely simple to
89	  configure. See www.wireguard.com for more info.
90
91	  It's safe to say Y or M here, as the driver is very lightweight and
92	  is only in use when an administrator chooses to add an interface.
93
94config WIREGUARD_DEBUG
95	bool "Debugging checks and verbose messages"
96	depends on WIREGUARD
97	help
98	  This will write log messages for handshake and other events
99	  that occur for a WireGuard interface. It will also perform some
100	  extra validation checks and unit tests at various points. This is
101	  only useful for debugging.
102
103	  Say N here unless you know what you're doing.
104
105config OVPN
106	tristate "OpenVPN data channel offload"
107	depends on NET && INET
108	depends on IPV6 || !IPV6
109	select DST_CACHE
110	select NET_UDP_TUNNEL
111	select CRYPTO
112	select CRYPTO_AES
113	select CRYPTO_GCM
114	select CRYPTO_CHACHA20POLY1305
115	select STREAM_PARSER
116	help
117	  This module enhances the performance of the OpenVPN userspace software
118	  by offloading the data channel processing to kernelspace.
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 PFCP
296	tristate "Packet Forwarding Control Protocol (PFCP)"
297	depends on INET
298	select NET_UDP_TUNNEL
299	help
300	  This allows one to create PFCP virtual interfaces that allows to
301	  set up software and hardware offload of PFCP packets.
302	  Note that this module does not support PFCP protocol in the kernel space.
303	  There is no support for parsing any PFCP messages.
304
305	  To compile this drivers as a module, choose M here: the module
306	  will be called pfcp.
307
308config AMT
309	tristate "Automatic Multicast Tunneling (AMT)"
310	depends on INET && IP_MULTICAST
311	depends on IPV6 || !IPV6
312	select NET_UDP_TUNNEL
313	help
314	  This allows one to create AMT(Automatic Multicast Tunneling)
315	  virtual interfaces that provide multicast tunneling.
316	  There are two roles, Gateway, and Relay.
317	  Gateway Encapsulates IGMP/MLD traffic from listeners to the Relay.
318	  Gateway Decapsulates multicast traffic from the Relay to Listeners.
319	  Relay Encapsulates multicast traffic from Sources to Gateway.
320	  Relay Decapsulates IGMP/MLD traffic from Gateway.
321
322	  To compile this drivers as a module, choose M here: the module
323	  will be called amt.
324
325config MACSEC
326	tristate "IEEE 802.1AE MAC-level encryption (MACsec)"
327	select CRYPTO
328	select CRYPTO_AES
329	select CRYPTO_GCM
330	select GRO_CELLS
331	help
332	   MACsec is an encryption standard for Ethernet.
333
334config NETCONSOLE
335	tristate "Network console logging support"
336	help
337	  If you want to log kernel messages over the network, enable this.
338	  See <file:Documentation/networking/netconsole.rst> for details.
339
340config NETCONSOLE_DYNAMIC
341	bool "Dynamic reconfiguration of logging targets"
342	depends on NETCONSOLE && SYSFS && CONFIGFS_FS && \
343			!(NETCONSOLE=y && CONFIGFS_FS=m)
344	help
345	  This option enables the ability to dynamically reconfigure target
346	  parameters (interface, IP addresses, port numbers, MAC addresses)
347	  at runtime through a userspace interface exported using configfs.
348	  See <file:Documentation/networking/netconsole.rst> for details.
349
350config NETCONSOLE_EXTENDED_LOG
351	bool "Set kernel extended message by default"
352	depends on NETCONSOLE
353	default n
354	help
355	  Set extended log support for netconsole message. If this option is
356	  set, log messages are transmitted with extended metadata header in a
357	  format similar to /dev/kmsg.  See
358	  <file:Documentation/networking/netconsole.rst> for details.
359
360config NETCONSOLE_PREPEND_RELEASE
361	bool "Prepend kernel release version in the message by default"
362	depends on NETCONSOLE_EXTENDED_LOG
363	default n
364	help
365	  Set kernel release to be prepended to each netconsole message by
366	  default. If this option is set, the kernel release is prepended into
367	  the first field of every netconsole message, so, the netconsole
368	  server/peer can easily identify what kernel release is logging each
369	  message.  See <file:Documentation/networking/netconsole.rst> for
370	  details.
371
372config NETPOLL
373	def_bool NETCONSOLE
374
375config NET_POLL_CONTROLLER
376	def_bool NETPOLL
377
378config NTB_NETDEV
379	tristate "Virtual Ethernet over NTB Transport"
380	depends on NTB_TRANSPORT
381
382config RIONET
383	tristate "RapidIO Ethernet over messaging driver support"
384	depends on RAPIDIO
385
386config RIONET_TX_SIZE
387	int "Number of outbound queue entries"
388	depends on RIONET
389	default "128"
390
391config RIONET_RX_SIZE
392	int "Number of inbound queue entries"
393	depends on RIONET
394	default "128"
395
396config TUN
397	tristate "Universal TUN/TAP device driver support"
398	depends on INET
399	select CRC32
400	help
401	  TUN/TAP provides packet reception and transmission for user space
402	  programs.  It can be viewed as a simple Point-to-Point or Ethernet
403	  device, which instead of receiving packets from a physical media,
404	  receives them from user space program and instead of sending packets
405	  via physical media writes them to the user space program.
406
407	  When a program opens /dev/net/tun, driver creates and registers
408	  corresponding net device tunX or tapX.  After a program closed above
409	  devices, driver will automatically delete tunXX or tapXX device and
410	  all routes corresponding to it.
411
412	  Please read <file:Documentation/networking/tuntap.rst> for more
413	  information.
414
415	  To compile this driver as a module, choose M here: the module
416	  will be called tun.
417
418	  If you don't know what to use this for, you don't need it.
419
420config TAP
421	tristate
422	help
423	  This option is selected by any driver implementing tap user space
424	  interface for a virtual interface to re-use core tap functionality.
425
426config TUN_VNET_CROSS_LE
427	bool "Support for cross-endian vnet headers on little-endian kernels"
428	default n
429	help
430	  This option allows TUN/TAP and MACVTAP device drivers in a
431	  little-endian kernel to parse vnet headers that come from a
432	  big-endian legacy virtio device.
433
434	  Userspace programs can control the feature using the TUNSETVNETBE
435	  and TUNGETVNETBE ioctls.
436
437	  Unless you have a little-endian system hosting a big-endian virtual
438	  machine with a legacy virtio NIC, you should say N.
439
440config VETH
441	tristate "Virtual ethernet pair device"
442	select PAGE_POOL
443	help
444	  This device is a local ethernet tunnel. Devices are created in pairs.
445	  When one end receives the packet it appears on its pair and vice
446	  versa.
447
448config VIRTIO_NET
449	tristate "Virtio network driver"
450	depends on VIRTIO
451	select NET_FAILOVER
452	select DIMLIB
453	help
454	  This is the virtual network driver for virtio.  It can be used with
455	  QEMU based VMMs (like KVM or Xen).  Say Y or M.
456
457config NLMON
458	tristate "Virtual netlink monitoring device"
459	help
460	  This option enables a monitoring net device for netlink skbs. The
461	  purpose of this is to analyze netlink messages with packet sockets.
462	  Thus applications like tcpdump will be able to see local netlink
463	  messages if they tap into the netlink device, record pcaps for further
464	  diagnostics, etc. This is mostly intended for developers or support
465	  to debug netlink issues. If unsure, say N.
466
467config NETKIT
468	bool "BPF-programmable network device"
469	depends on BPF_SYSCALL
470	help
471	  The netkit device is a virtual networking device where BPF programs
472	  can be attached to the device(s) transmission routine in order to
473	  implement the driver's internal logic. The device can be configured
474	  to operate in L3 or L2 mode. If unsure, say N.
475
476config NET_VRF
477	tristate "Virtual Routing and Forwarding (Lite)"
478	depends on IP_MULTIPLE_TABLES
479	depends on NET_L3_MASTER_DEV
480	depends on IPV6 || IPV6=n
481	depends on IPV6_MULTIPLE_TABLES || IPV6=n
482	help
483	  This option enables the support for mapping interfaces into VRF's. The
484	  support enables VRF devices.
485
486config VSOCKMON
487	tristate "Virtual vsock monitoring device"
488	depends on VHOST_VSOCK
489	help
490	  This option enables a monitoring net device for vsock sockets. It is
491	  mostly intended for developers or support to debug vsock issues. If
492	  unsure, say N.
493
494config MHI_NET
495	tristate "MHI network driver"
496	depends on MHI_BUS
497	help
498	  This is the network driver for MHI bus.  It can be used with
499	  QCOM based WWAN modems for IP or QMAP/rmnet protocol (like SDX55).
500	  Say Y or M.
501
502endif # NET_CORE
503
504config SUNGEM_PHY
505	tristate
506
507source "drivers/net/arcnet/Kconfig"
508
509source "drivers/atm/Kconfig"
510
511source "drivers/net/caif/Kconfig"
512
513source "drivers/net/dsa/Kconfig"
514
515source "drivers/net/ethernet/Kconfig"
516
517source "drivers/net/fddi/Kconfig"
518
519source "drivers/net/hippi/Kconfig"
520
521source "drivers/net/ipa/Kconfig"
522
523source "drivers/net/phy/Kconfig"
524
525source "drivers/net/pse-pd/Kconfig"
526
527source "drivers/net/can/Kconfig"
528
529source "drivers/net/mctp/Kconfig"
530
531source "drivers/net/mdio/Kconfig"
532
533source "drivers/net/pcs/Kconfig"
534
535source "drivers/net/plip/Kconfig"
536
537source "drivers/net/ppp/Kconfig"
538
539source "drivers/net/slip/Kconfig"
540
541source "drivers/s390/net/Kconfig"
542
543source "drivers/net/usb/Kconfig"
544
545source "drivers/net/wireless/Kconfig"
546
547source "drivers/net/wan/Kconfig"
548
549source "drivers/net/ieee802154/Kconfig"
550
551source "drivers/net/wwan/Kconfig"
552
553config XEN_NETDEV_FRONTEND
554	tristate "Xen network device frontend driver"
555	depends on XEN
556	select XEN_XENBUS_FRONTEND
557	select PAGE_POOL
558	default y
559	help
560	  This driver provides support for Xen paravirtual network
561	  devices exported by a Xen network driver domain (often
562	  domain 0).
563
564	  The corresponding Linux backend driver is enabled by the
565	  CONFIG_XEN_NETDEV_BACKEND option.
566
567	  If you are compiling a kernel for use as Xen guest, you
568	  should say Y here. To compile this driver as a module, chose
569	  M here: the module will be called xen-netfront.
570
571config XEN_NETDEV_BACKEND
572	tristate "Xen backend network device"
573	depends on XEN_BACKEND
574	help
575	  This driver allows the kernel to act as a Xen network driver
576	  domain which exports paravirtual network devices to other
577	  Xen domains. These devices can be accessed by any operating
578	  system that implements a compatible front end.
579
580	  The corresponding Linux frontend driver is enabled by the
581	  CONFIG_XEN_NETDEV_FRONTEND configuration option.
582
583	  The backend driver presents a standard network device
584	  endpoint for each paravirtual network device to the driver
585	  domain network stack. These can then be bridged or routed
586	  etc in order to provide full network connectivity.
587
588	  If you are compiling a kernel to run in a Xen network driver
589	  domain (often this is domain 0) you should say Y here. To
590	  compile this driver as a module, chose M here: the module
591	  will be called xen-netback.
592
593config VMXNET3
594	tristate "VMware VMXNET3 ethernet driver"
595	depends on PCI && INET
596	depends on PAGE_SIZE_LESS_THAN_64KB
597	select PAGE_POOL
598	help
599	  This driver supports VMware's vmxnet3 virtual ethernet NIC.
600	  To compile this driver as a module, choose M here: the
601	  module will be called vmxnet3.
602
603config FUJITSU_ES
604	tristate "FUJITSU Extended Socket Network Device driver"
605	depends on ACPI
606	help
607	  This driver provides support for Extended Socket network device
608	  on Extended Partitioning of FUJITSU PRIMEQUEST 2000 E2 series.
609
610source "drivers/net/thunderbolt/Kconfig"
611source "drivers/net/hyperv/Kconfig"
612
613config NETDEVSIM
614	tristate "Simulated networking device"
615	depends on DEBUG_FS
616	depends on INET
617	depends on IPV6 || IPV6=n
618	depends on PSAMPLE || PSAMPLE=n
619	depends on PTP_1588_CLOCK_MOCK || PTP_1588_CLOCK_MOCK=n
620	select NET_DEVLINK
621	select PAGE_POOL
622	select NET_SHAPER
623	help
624	  This driver is a developer testing tool and software model that can
625	  be used to test various control path networking APIs, especially
626	  HW-offload related.
627
628	  To compile this driver as a module, choose M here: the module
629	  will be called netdevsim.
630
631config NET_FAILOVER
632	tristate "Failover driver"
633	select FAILOVER
634	help
635	  This provides an automated failover mechanism via APIs to create
636	  and destroy a failover master netdev and manages a primary and
637	  standby slave netdevs that get registered via the generic failover
638	  infrastructure. This can be used by paravirtual drivers to enable
639	  an alternate low latency datapath. It also enables live migration of
640	  a VM with direct attached VF by failing over to the paravirtual
641	  datapath when the VF is unplugged.
642
643config NETDEV_LEGACY_INIT
644	bool
645	depends on ISA
646	help
647	  Drivers that call netdev_boot_setup_check() should select this
648	  symbol, everything else no longer needs it.
649
650endif # NETDEVICES
651