# Net stack configuration options

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

menu "Networking"

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

if NET_BUF

config NET_BUF_USER_DATA_SIZE
	int "Size of user_data available in every network buffer (DEPRECATED)"
	default 0
	help
	  User data size is now set on a per-pool basis at declaration point

config NET_BUF_LOG
	bool "Network buffer logging"
	select LOG
	help
	  Enable logs and checks for the generic network buffers.

module = NET_BUF
module-str = net_buf
source "subsys/logging/Kconfig.template.log_config"

if NET_BUF_LOG

config NET_BUF_WARN_ALLOC_INTERVAL
	int "Interval of Network buffer allocation warnings"
	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"
	select LOG
	help
	  Enable extra debug logs and checks for the generic network buffers.

endif # NET_BUF_LOG

config NET_BUF_POOL_USAGE
	bool "Network buffer pool usage tracking"
	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

endif # NET_BUF

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

if NETWORKING

# Such option should not be configured manually but by device drivers
# which supports PM properly.
config NET_POWER_MANAGEMENT
	bool
	depends on PM_DEVICE

source "subsys/net/Kconfig.hostname"

source "subsys/net/l2/Kconfig"

source "subsys/net/ip/Kconfig"

source "subsys/net/pkt_filter/Kconfig"

source "subsys/net/lib/Kconfig"

endif

endmenu
