Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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