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

menuconfig NET_L2_PPP
	bool "Point-to-point (PPP) support"
	select NET_MGMT
	select NET_MGMT_EVENT
	help
	  Add support for PPP.

if NET_L2_PPP

config NET_L2_PPP_TIMEOUT
	int "Maximum timeout in ms for Configure-Req"
	default 3000
	range 1 $(UINT32_MAX)
	help
	  How long to wait Configure-Req.

config NET_L2_PPP_MAX_CONFIGURE_REQ_RETRANSMITS
	int "Maximum number of Configure-Req retransmits"
	default 10
	range 0 $(UINT32_MAX)
	help
	  How many times to resend Configure-Req messages before deciding the
	  link is not working properly.

config NET_L2_PPP_MAX_TERMINATE_REQ_RETRANSMITS
	int "Maximum number of Terminate-Req retransmits"
	default 2
	range 0 $(UINT32_MAX)
	help
	  How many times to resend Terminate-Req messages before terminating
	  the link.

config NET_L2_PPP_MAX_NACK_LOOPS
	int "Maximum number of NACK loops accepted"
	default 5
	range 0 $(UINT32_MAX)
	help
	  How many times to accept NACK loops.

config NET_L2_PPP_OPTION_DNS_USE
	bool "Use negotiated DNS servers"
	depends on DNS_RESOLVER
	help
	  Use the DNS servers negotiated in the IPCP configuration.

config NET_L2_PPP_AUTH_SUPPORT
	bool

config NET_L2_PPP_PAP
	bool "PAP authentication protocol"
	select NET_L2_PPP_AUTH_SUPPORT
	help
	  Enable support for PAP authentication protocol.

config NET_L2_PPP_OPTION_MRU
	bool "LCP MRU option support"
	help
	  Enable support for LCP MRU option.

config NET_L2_PPP_OPTION_MAX_MRU
	int "LCP MRU maximum size"
	default 1500
	help
	  Set the maximal MRU size which is allowed while negotiation with peer over LCP.
	  The default value is defined by RFC 1661.

config NET_L2_PPP_OPTION_SERVE_IP
	bool "Serve IP address to peer"
	help
	  Enable support for serving IP address to PPP peer.

config NET_L2_PPP_OPTION_SERVE_DNS
	bool "Serve DNS addresses to peer"
	help
	  Enable support for serving DNS addresses to PPP peer.

module = NET_L2_PPP
module-dep = NET_LOG
module-str = Log level for ppp L2 layer
module-help = Enables ppp L2 to output debug messages.
source "subsys/net/Kconfig.template.log_config.net"

config NET_L2_PPP_MGMT
	bool "Ppp network management interface"
	select NET_MGMT
	select NET_MGMT_EVENT
	help
	  Enable support net_mgmt ppp interface which can be used to
	  configure at run-time ppp drivers and L2 settings.

config NET_L2_PPP_TX_STACK_SIZE
	int "Stack size for TX handler"
	default 2048 if COVERAGE_GCOV
	default 1024
	help
	  Set the TX handler stack size.

config NET_L2_PPP_THREAD_PRIO
	int "Priority of the PPP TX thread"
	default 1
	help
	  Set the priority of the PPP TX thread, that handles all
	  transmission of PPP packets.
	  Value 0 = highest priortity.
	  When CONFIG_NET_TC_THREAD_COOPERATIVE = y, lowest priority is
	  CONFIG_NUM_COOP_PRIORITIES-1 else lowest priority is
	  CONFIG_NUM_PREEMPT_PRIORITIES-1.
	  When using PPP in combination with TCP, make sure the priority
	  is higher (or equal) than the TCP work queue, otherwise the
	  TCP stack will consume all net_bufs before transferring
	  execution to the lower layer network stack, with a high risk of
	  running out of net_bufs.

endif # NET_L2_PPP
