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