# 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_EEM
	bool
	prompt "USB Ethernet Emulation Model (EEM) Networking device"
	select USB_DEVICE_NETWORK
	default n
	help
	  Ethernet Emulation Model (EEM) is part of  Communications Device
	  Class (CDC) USB protocol and can be used to encapsulate Ethernet
	  frames for transport over USB.

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_EEM

config CDC_EEM_OUT_EP_ADDR
	hex "CDC EEM BULK OUT Endpoint address"
	default 0x01
	range 0x01 0x0F

config CDC_EEM_IN_EP_ADDR
	hex "CDC EEM BULK IN Endpoint address"
	default 0x82
	range 0x81 0x8F

config CDC_EEM_BULK_EP_MPS
	int
	default 64

endif #USB_DEVICE_NETWORK_EEM

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
