xref: /linux/drivers/net/Kconfig (revision 60325c27d3cfe13466f6d6aa882b11bdd1c58cc8)
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	select PRINTK_EXECUTION_CTX
345	help
346	  This option enables the ability to dynamically reconfigure target
347	  parameters (interface, IP addresses, port numbers, MAC addresses)
348	  at runtime through a userspace interface exported using configfs.
349	  See <file:Documentation/networking/netconsole.rst> for details.
350
351config NETCONSOLE_EXTENDED_LOG
352	bool "Set kernel extended message by default"
353	depends on NETCONSOLE
354	default n
355	help
356	  Set extended log support for netconsole message. If this option is
357	  set, log messages are transmitted with extended metadata header in a
358	  format similar to /dev/kmsg.  See
359	  <file:Documentation/networking/netconsole.rst> for details.
360
361config NETCONSOLE_PREPEND_RELEASE
362	bool "Prepend kernel release version in the message by default"
363	depends on NETCONSOLE_EXTENDED_LOG
364	default n
365	help
366	  Set kernel release to be prepended to each netconsole message by
367	  default. If this option is set, the kernel release is prepended into
368	  the first field of every netconsole message, so, the netconsole
369	  server/peer can easily identify what kernel release is logging each
370	  message.  See <file:Documentation/networking/netconsole.rst> for
371	  details.
372
373config NETPOLL
374	def_bool NETCONSOLE
375
376config NET_POLL_CONTROLLER
377	def_bool NETPOLL
378
379config NTB_NETDEV
380	tristate "Virtual Ethernet over NTB Transport"
381	depends on NTB_TRANSPORT
382
383config RIONET
384	tristate "RapidIO Ethernet over messaging driver support"
385	depends on RAPIDIO
386
387config RIONET_TX_SIZE
388	int "Number of outbound queue entries"
389	depends on RIONET
390	default "128"
391
392config RIONET_RX_SIZE
393	int "Number of inbound queue entries"
394	depends on RIONET
395	default "128"
396
397config TUN
398	tristate "Universal TUN/TAP device driver support"
399	depends on INET
400	select CRC32
401	help
402	  TUN/TAP provides packet reception and transmission for user space
403	  programs.  It can be viewed as a simple Point-to-Point or Ethernet
404	  device, which instead of receiving packets from a physical media,
405	  receives them from user space program and instead of sending packets
406	  via physical media writes them to the user space program.
407
408	  When a program opens /dev/net/tun, driver creates and registers
409	  corresponding net device tunX or tapX.  After a program closed above
410	  devices, driver will automatically delete tunXX or tapXX device and
411	  all routes corresponding to it.
412
413	  Please read <file:Documentation/networking/tuntap.rst> for more
414	  information.
415
416	  To compile this driver as a module, choose M here: the module
417	  will be called tun.
418
419	  If you don't know what to use this for, you don't need it.
420
421config TAP
422	tristate
423	help
424	  This option is selected by any driver implementing tap user space
425	  interface for a virtual interface to re-use core tap functionality.
426
427config TUN_VNET_CROSS_LE
428	bool "Support for cross-endian vnet headers on little-endian kernels"
429	default n
430	help
431	  This option allows TUN/TAP and MACVTAP device drivers in a
432	  little-endian kernel to parse vnet headers that come from a
433	  big-endian legacy virtio device.
434
435	  Userspace programs can control the feature using the TUNSETVNETBE
436	  and TUNGETVNETBE ioctls.
437
438	  Unless you have a little-endian system hosting a big-endian virtual
439	  machine with a legacy virtio NIC, you should say N.
440
441config VETH
442	tristate "Virtual ethernet pair device"
443	select PAGE_POOL
444	help
445	  This device is a local ethernet tunnel. Devices are created in pairs.
446	  When one end receives the packet it appears on its pair and vice
447	  versa.
448
449config VIRTIO_NET
450	tristate "Virtio network driver"
451	depends on VIRTIO
452	select NET_FAILOVER
453	select DIMLIB
454	help
455	  This is the virtual network driver for virtio.  It can be used with
456	  QEMU based VMMs (like KVM or Xen).  Say Y or M.
457
458config NLMON
459	tristate "Virtual netlink monitoring device"
460	help
461	  This option enables a monitoring net device for netlink skbs. The
462	  purpose of this is to analyze netlink messages with packet sockets.
463	  Thus applications like tcpdump will be able to see local netlink
464	  messages if they tap into the netlink device, record pcaps for further
465	  diagnostics, etc. This is mostly intended for developers or support
466	  to debug netlink issues. If unsure, say N.
467
468config NETKIT
469	bool "BPF-programmable network device"
470	depends on BPF_SYSCALL
471	help
472	  The netkit device is a virtual networking device where BPF programs
473	  can be attached to the device(s) transmission routine in order to
474	  implement the driver's internal logic. The device can be configured
475	  to operate in L3 or L2 mode. If unsure, say N.
476
477config NET_VRF
478	tristate "Virtual Routing and Forwarding (Lite)"
479	depends on IP_MULTIPLE_TABLES
480	depends on NET_L3_MASTER_DEV
481	depends on IPV6 || IPV6=n
482	depends on IPV6_MULTIPLE_TABLES || IPV6=n
483	help
484	  This option enables the support for mapping interfaces into VRF's. The
485	  support enables VRF devices.
486
487config VSOCKMON
488	tristate "Virtual vsock monitoring device"
489	depends on VHOST_VSOCK
490	help
491	  This option enables a monitoring net device for vsock sockets. It is
492	  mostly intended for developers or support to debug vsock issues. If
493	  unsure, say N.
494
495config MHI_NET
496	tristate "MHI network driver"
497	depends on MHI_BUS
498	help
499	  This is the network driver for MHI bus.  It can be used with
500	  QCOM based WWAN modems for IP or QMAP/rmnet protocol (like SDX55).
501	  Say Y or M.
502
503endif # NET_CORE
504
505config SUNGEM_PHY
506	tristate
507
508source "drivers/net/arcnet/Kconfig"
509
510source "drivers/atm/Kconfig"
511
512source "drivers/net/caif/Kconfig"
513
514source "drivers/net/dsa/Kconfig"
515
516source "drivers/net/ethernet/Kconfig"
517
518source "drivers/net/fddi/Kconfig"
519
520source "drivers/net/ipa/Kconfig"
521
522source "drivers/net/phy/Kconfig"
523
524source "drivers/net/pse-pd/Kconfig"
525
526source "drivers/net/can/Kconfig"
527
528source "drivers/net/mctp/Kconfig"
529
530source "drivers/net/mdio/Kconfig"
531
532source "drivers/net/pcs/Kconfig"
533
534source "drivers/net/plip/Kconfig"
535
536source "drivers/net/ppp/Kconfig"
537
538source "drivers/net/slip/Kconfig"
539
540source "drivers/s390/net/Kconfig"
541
542source "drivers/net/usb/Kconfig"
543
544source "drivers/net/wireless/Kconfig"
545
546source "drivers/net/wan/Kconfig"
547
548source "drivers/net/ieee802154/Kconfig"
549
550source "drivers/net/wwan/Kconfig"
551
552config XEN_NETDEV_FRONTEND
553	tristate "Xen network device frontend driver"
554	depends on XEN
555	select XEN_XENBUS_FRONTEND
556	select PAGE_POOL
557	default y
558	help
559	  This driver provides support for Xen paravirtual network
560	  devices exported by a Xen network driver domain (often
561	  domain 0).
562
563	  The corresponding Linux backend driver is enabled by the
564	  CONFIG_XEN_NETDEV_BACKEND option.
565
566	  If you are compiling a kernel for use as Xen guest, you
567	  should say Y here. To compile this driver as a module, chose
568	  M here: the module will be called xen-netfront.
569
570config XEN_NETDEV_BACKEND
571	tristate "Xen backend network device"
572	depends on XEN_BACKEND
573	help
574	  This driver allows the kernel to act as a Xen network driver
575	  domain which exports paravirtual network devices to other
576	  Xen domains. These devices can be accessed by any operating
577	  system that implements a compatible front end.
578
579	  The corresponding Linux frontend driver is enabled by the
580	  CONFIG_XEN_NETDEV_FRONTEND configuration option.
581
582	  The backend driver presents a standard network device
583	  endpoint for each paravirtual network device to the driver
584	  domain network stack. These can then be bridged or routed
585	  etc in order to provide full network connectivity.
586
587	  If you are compiling a kernel to run in a Xen network driver
588	  domain (often this is domain 0) you should say Y here. To
589	  compile this driver as a module, chose M here: the module
590	  will be called xen-netback.
591
592config VMXNET3
593	tristate "VMware VMXNET3 ethernet driver"
594	depends on PCI && INET
595	depends on PAGE_SIZE_LESS_THAN_64KB
596	select PAGE_POOL
597	help
598	  This driver supports VMware's vmxnet3 virtual ethernet NIC.
599	  To compile this driver as a module, choose M here: the
600	  module will be called vmxnet3.
601
602config FUJITSU_ES
603	tristate "FUJITSU Extended Socket Network Device driver"
604	depends on ACPI
605	help
606	  This driver provides support for Extended Socket network device
607	  on Extended Partitioning of FUJITSU PRIMEQUEST 2000 E2 series.
608
609source "drivers/net/thunderbolt/Kconfig"
610source "drivers/net/hyperv/Kconfig"
611
612config NETDEVSIM
613	tristate "Simulated networking device"
614	depends on DEBUG_FS
615	depends on INET
616	depends on IPV6 || IPV6=n
617	depends on PSAMPLE || PSAMPLE=n
618	depends on PTP_1588_CLOCK_MOCK || PTP_1588_CLOCK_MOCK=n
619	select NET_DEVLINK
620	select PAGE_POOL
621	select NET_SHAPER
622	help
623	  This driver is a developer testing tool and software model that can
624	  be used to test various control path networking APIs, especially
625	  HW-offload related.
626
627	  To compile this driver as a module, choose M here: the module
628	  will be called netdevsim.
629
630config NET_FAILOVER
631	tristate "Failover driver"
632	select FAILOVER
633	help
634	  This provides an automated failover mechanism via APIs to create
635	  and destroy a failover master netdev and manages a primary and
636	  standby slave netdevs that get registered via the generic failover
637	  infrastructure. This can be used by paravirtual drivers to enable
638	  an alternate low latency datapath. It also enables live migration of
639	  a VM with direct attached VF by failing over to the paravirtual
640	  datapath when the VF is unplugged.
641
642config NETDEV_LEGACY_INIT
643	bool
644	depends on ISA
645	help
646	  Drivers that call netdev_boot_setup_check() should select this
647	  symbol, everything else no longer needs it.
648
649endif # NETDEVICES
650