162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci# Copyright (C) B.A.T.M.A.N. contributors:
362306a36Sopenharmony_ci#
462306a36Sopenharmony_ci# Marek Lindner, Simon Wunderlich
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#
762306a36Sopenharmony_ci# B.A.T.M.A.N meshing protocol
862306a36Sopenharmony_ci#
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciconfig BATMAN_ADV
1162306a36Sopenharmony_ci	tristate "B.A.T.M.A.N. Advanced Meshing Protocol"
1262306a36Sopenharmony_ci	select LIBCRC32C
1362306a36Sopenharmony_ci	help
1462306a36Sopenharmony_ci	  B.A.T.M.A.N. (better approach to mobile ad-hoc networking) is
1562306a36Sopenharmony_ci	  a routing protocol for multi-hop ad-hoc mesh networks. The
1662306a36Sopenharmony_ci	  networks may be wired or wireless. See
1762306a36Sopenharmony_ci	  https://www.open-mesh.org/ for more information and user space
1862306a36Sopenharmony_ci	  tools.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciconfig BATMAN_ADV_BATMAN_V
2162306a36Sopenharmony_ci	bool "B.A.T.M.A.N. V protocol"
2262306a36Sopenharmony_ci	depends on BATMAN_ADV && !(CFG80211=m && BATMAN_ADV=y)
2362306a36Sopenharmony_ci	default y
2462306a36Sopenharmony_ci	help
2562306a36Sopenharmony_ci	  This option enables the B.A.T.M.A.N. V protocol, the successor
2662306a36Sopenharmony_ci	  of the currently used B.A.T.M.A.N. IV protocol. The main
2762306a36Sopenharmony_ci	  changes include splitting of the OGM protocol into a neighbor
2862306a36Sopenharmony_ci	  discovery protocol (Echo Location Protocol, ELP) and a new OGM
2962306a36Sopenharmony_ci	  Protocol OGMv2 for flooding protocol information through the
3062306a36Sopenharmony_ci	  network, as well as a throughput based metric.
3162306a36Sopenharmony_ci	  B.A.T.M.A.N. V is currently considered experimental and not
3262306a36Sopenharmony_ci	  compatible to B.A.T.M.A.N. IV networks.
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciconfig BATMAN_ADV_BLA
3562306a36Sopenharmony_ci	bool "Bridge Loop Avoidance"
3662306a36Sopenharmony_ci	depends on BATMAN_ADV && INET
3762306a36Sopenharmony_ci	select CRC16
3862306a36Sopenharmony_ci	default y
3962306a36Sopenharmony_ci	help
4062306a36Sopenharmony_ci	  This option enables BLA (Bridge Loop Avoidance), a mechanism
4162306a36Sopenharmony_ci	  to avoid Ethernet frames looping when mesh nodes are connected
4262306a36Sopenharmony_ci	  to both the same LAN and the same mesh. If you will never use
4362306a36Sopenharmony_ci	  more than one mesh node in the same LAN, you can safely remove
4462306a36Sopenharmony_ci	  this feature and save some space.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciconfig BATMAN_ADV_DAT
4762306a36Sopenharmony_ci	bool "Distributed ARP Table"
4862306a36Sopenharmony_ci	depends on BATMAN_ADV && INET
4962306a36Sopenharmony_ci	default y
5062306a36Sopenharmony_ci	help
5162306a36Sopenharmony_ci	  This option enables DAT (Distributed ARP Table), a DHT based
5262306a36Sopenharmony_ci	  mechanism that increases ARP reliability on sparse wireless
5362306a36Sopenharmony_ci	  mesh networks. If you think that your network does not need
5462306a36Sopenharmony_ci	  this option you can safely remove it and save some space.
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ciconfig BATMAN_ADV_NC
5762306a36Sopenharmony_ci	bool "Network Coding"
5862306a36Sopenharmony_ci	depends on BATMAN_ADV
5962306a36Sopenharmony_ci	help
6062306a36Sopenharmony_ci	  This option enables network coding, a mechanism that aims to
6162306a36Sopenharmony_ci	  increase the overall network throughput by fusing multiple
6262306a36Sopenharmony_ci	  packets in one transmission.
6362306a36Sopenharmony_ci	  Note that interfaces controlled by batman-adv must be manually
6462306a36Sopenharmony_ci	  configured to have promiscuous mode enabled in order to make
6562306a36Sopenharmony_ci	  network coding work.
6662306a36Sopenharmony_ci	  If you think that your network does not need this feature you
6762306a36Sopenharmony_ci	  can safely disable it and save some space.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciconfig BATMAN_ADV_MCAST
7062306a36Sopenharmony_ci	bool "Multicast optimisation"
7162306a36Sopenharmony_ci	depends on BATMAN_ADV && INET && !(BRIDGE=m && BATMAN_ADV=y)
7262306a36Sopenharmony_ci	default y
7362306a36Sopenharmony_ci	help
7462306a36Sopenharmony_ci	  This option enables the multicast optimisation which aims to
7562306a36Sopenharmony_ci	  reduce the air overhead while improving the reliability of
7662306a36Sopenharmony_ci	  multicast messages.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciconfig BATMAN_ADV_DEBUG
7962306a36Sopenharmony_ci	bool "B.A.T.M.A.N. debugging"
8062306a36Sopenharmony_ci	depends on BATMAN_ADV
8162306a36Sopenharmony_ci	help
8262306a36Sopenharmony_ci	  This is an option for use by developers; most people should
8362306a36Sopenharmony_ci	  say N here. This enables compilation of support for
8462306a36Sopenharmony_ci	  outputting debugging information to the tracing buffer. The output is
8562306a36Sopenharmony_ci	  controlled via the batadv netdev specific log_level setting.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ciconfig BATMAN_ADV_TRACING
8862306a36Sopenharmony_ci	bool "B.A.T.M.A.N. tracing support"
8962306a36Sopenharmony_ci	depends on BATMAN_ADV
9062306a36Sopenharmony_ci	depends on EVENT_TRACING
9162306a36Sopenharmony_ci	help
9262306a36Sopenharmony_ci	  This is an option for use by developers; most people should
9362306a36Sopenharmony_ci	  say N here. Select this option to gather traces like the debug
9462306a36Sopenharmony_ci	  messages using the generic tracing infrastructure of the kernel.
9562306a36Sopenharmony_ci	  BATMAN_ADV_DEBUG must also be selected to get trace events for
9662306a36Sopenharmony_ci	  batadv_dbg.
97