# Kconfig - Misc network drivers configuration options
# SPDX-License-Identifier: Apache-2.0
#
# SLIP options
#
menuconfig SLIP
	bool "SLIP driver"
	depends on (!QEMU_TARGET || NET_QEMU_SLIP)
	select UART_PIPE
	select UART_INTERRUPT_DRIVEN

if SLIP

config	SLIP_DRV_NAME
	string "SLIP Driver name"
	default "slip"
	help
	  This option sets the driver name

config	SLIP_MTU
	int "SLIP MTU"
	default 1500
	range 80 1500
	help
	  This option sets the MTU for the SLIP connection.
	  The value is only used when fragmenting the network
	  data into net_buf's. The actual SLIP connection
	  does not use this value.

module = SLIP
module-dep = LOG
module-str = Log level for slip driver
module-help = Sets log level for slip driver.
source "subsys/net/Kconfig.template.log_config.net"

config	SLIP_STATISTICS
	bool "SLIP network connection statistics"
	help
	  This option enables statistics support for SLIP driver.

config  SLIP_TAP
	bool "Use TAP interface to host"
	default y
	select NET_L2_ETHERNET
	help
	  In TAP the Ethernet frames are transferred over SLIP.


config	SLIP_MAC_ADDR
	string "MAC address for the interface"
	help
	  Specify a MAC address for the SLIP interface in the form of
	  six hex 8-bit chars separated by colons (e.g.:
	  aa:33:cc:22:e2:c0).  The default is an empty string, which
	  means the code will make 00:00:5E:00:53:XX, where XX will be
	  random.

endif

#
# Net loopback options
#
menuconfig NET_LOOPBACK
	bool "Net loopback driver"
	select NET_L2_DUMMY

if NET_LOOPBACK

module = NET_LOOPBACK
module-dep = LOG
module-str = Log level for network loopback driver
module-help = Sets log level for network loopback driver.
source "subsys/net/Kconfig.template.log_config.net"

endif
