# Kconfig - netusb configuration options

#
# Copyright (c) 2017 Intel Corp.
#
# SPDX-License-Identifier: Apache-2.0
#

menu "USB Device Networking support"
	depends on USB_DEVICE_STACK

config USB_DEVICE_NETWORK
	bool
	default n
	select NET_L2_ETHERNET

config USB_DEVICE_NETWORK_ECM
	bool
	prompt "USB Ethernet Control Model (ECM) Networking device"
	select USB_DEVICE_NETWORK
	default n
	help
	  Ethernet Control Model (ECM) is a part of  Communications Device
	  Class (CDC) USB protocol specified by USB-IF.

config USB_DEVICE_NETWORK_RNDIS
	bool
	prompt "USB Remote NDIS (RNDIS) Networking device"
	select USB_DEVICE_NETWORK
	select USB_COMPOSITE_DEVICE
	default n
	help
	  Remote NDIS (RNDIS) is commonly used Microsoft vendor protocol with
	  Specification available from Microsoft web site.

if USB_DEVICE_NETWORK_ECM

config CDC_ECM_INT_EP_ADDR
	hex "CDC ECM Interrupt Endpoint address"
	default 0x83
	range 0x81 0x8F
	help
	  CDC ECM class interrupt endpoint address

config CDC_ECM_IN_EP_ADDR
	hex "CDC ECM BULK IN Endpoint address"
	default 0x82
	range 0x81 0x8F
	help
	  CDC ECM class IN endpoint address

config CDC_ECM_OUT_EP_ADDR
	hex "CDC ECM BULK OUT Endpoint address"
	default 0x01
	range 0x01 0x0F
	help
	  CDC ECM class OUT endpoint address

config CDC_ECM_INTERRUPT_EP_MPS
	int
	default 16
	help
	  CDC ECM class interrupt endpoint size

config CDC_ECM_BULK_EP_MPS
	int
	default 64
	help
	  CDC ECM class bulk endpoint size

config USB_DEVICE_NETWORK_ECM_MAC
	string
	default "00005E005301"
	help
	  MAC Host OS Address string.
	  MAC Address which would be assigned to network device, created in
	  the Host's Operating System. Use RFC 7042 Documentation values as
	  default MAC.

endif # USB_DEVICE_NETWORK_ECM

if USB_DEVICE_NETWORK_RNDIS

config RNDIS_INT_EP_ADDR
	hex "RNDIS Interrupt Endpoint address"
	default 0x83
	range 0x81 0x8F
	help
	  RNDIS interrupt endpoint address

config RNDIS_IN_EP_ADDR
	hex "RNDIS BULK IN Endpoint address"
	default 0x82
	range 0x81 0x8F
	help
	  RNDIS bulk IN endpoint address

config RNDIS_OUT_EP_ADDR
	hex "RNDIS BULK OUT Endpoint address"
	default 0x01
	range 0x01 0x0F
	help
	  RNDIS bulk OUT endpoint address

config RNDIS_INTERRUPT_EP_MPS
	int
	default 16
	help
	  RNDIS interrupt endpoint size

config RNDIS_BULK_EP_MPS
	int
	default 64
	help
	  RNDIS bulk endpoint size

endif # USB_DEVICE_NETWORK_RNDIS

if USB_DEVICE_NETWORK

config SYS_LOG_USB_DEVICE_NETWORK_DEBUG_LEVEL
	int
	prompt "USB Device Network debug log level"
	default 1
	help
	  Sets log level for USB Device Network class

	  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

endif # USB_DEVICE_NETWORK

endmenu # USB Device Networking support
