# SPDX-License-Identifier: GPL-2.0-only
#
# Configuration for 802.1Q VLAN support
#

config VLAN_8021Q
	tristate "802.1Q/802.1ad VLAN Support"
	help
	  Select this and you will be able to create 802.1Q VLAN interfaces
	  on your Ethernet interfaces. 802.1Q VLAN supports almost
	  everything a regular Ethernet interface does, including
	  firewalling, bridging, and of course IP traffic. You will need
	  the 'ip' utility in order to effectively use VLANs.
	  See the VLAN web page for more information:
	  <http://www.candelatech.com/~greear/vlan.html>

	  To compile this code as a module, choose M here: the module
	  will be called 8021q.

	  If unsure, say N.

config VLAN_8021Q_GVRP
	bool "GVRP (GARP VLAN Registration Protocol) support"
	depends on VLAN_8021Q
	select GARP
	help
	  Select this to enable GVRP end-system support. GVRP is used for
	  automatic propagation of registered VLANs to switches.

	  If unsure, say N.

config VLAN_8021Q_MVRP
	bool "MVRP (Multiple VLAN Registration Protocol) support"
	depends on VLAN_8021Q
	select MRP
	help
	  Select this to enable MVRP end-system support. MVRP is used for
	  automatic propagation of registered VLANs to switches; it
	  supersedes GVRP and is not backwards-compatible.

	  If unsure, say N.
