# Kconfig - net stack configuration options

#
# Copyright (c) 2015 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#

menu "Networking"

config NET_BUF
	bool "Network buffer support"
	default n
	help
	This option enables support for generic network protocol
	buffers.

config NET_BUF_LOG
	bool "Network buffer logging"
	depends on NET_BUF
	select STDOUT_CONSOLE
	select SYS_LOG
	default n
	help
	Enable logs and checks for the generic network buffers.

config SYS_LOG_NET_BUF_LEVEL
	int
	prompt "Network buffer Logging level"
	depends on NET_BUF_LOG && SYS_LOG
	default 1
	range 0 4
	help
	  Sets log level for network buffers.
	  Levels are:
	  0 OFF, do not write
	  1 ERROR, only write SYS_LOG_ERR
	  2 WARNING, write SYS_LOG_WRN in addition to previous level
	  3 INFO, write SYS_LOG_INF in addition to previous levels
	  4 DEBUG, write SYS_LOG_DBG in addition to previous levels

config NET_BUF_WARN_ALLOC_INTERVAL
	int
	prompt "Interval of Network buffer allocation warnings"
	depends on NET_BUF_LOG
	default 1
	range 0 60
	help
	Interval in seconds of Network buffer allocation warnings which are
	generated when a buffer cannot immediately be allocated with K_FOREVER
	which may lead to deadlocks. Setting it to 0 makes warnings to be
	printed only once per allocation.

config NET_BUF_SIMPLE_LOG
	bool "Network buffer memory debugging"
	depends on NET_BUF_LOG
	select STDOUT_CONSOLE
	select SYS_LOG
	default n
	help
	  Enable extra debug logs and checks for the generic network buffers.

config NET_BUF_POOL_USAGE
	bool "Network buffer pool usage tracking"
	depends on NET_BUF
	default n
	help
	Enable network buffer pool tracking. This means that:
	* amount of free buffers in the pool is remembered
	* total size of the pool is calculated
	* pool name is stored and can be shown in debugging prints

config  NETWORKING
	bool "Link layer and IP networking support"
	select NET_BUF
	select POLL
	select RANDOM_GENERATOR
	default n
	help
	This option enabled generic link layer and IP networking support.

if NETWORKING

source "subsys/net/Kconfig.hostname"

source "subsys/net/ip/Kconfig"

source "subsys/net/lib/Kconfig"

endif

endmenu
