# netusb configuration options

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

menu "USB Device Networking support"

config USB_DEVICE_NETWORK
	bool
	select NET_L2_ETHERNET

config USB_DEVICE_NETWORK_ECM
	bool "USB Ethernet Control Model (ECM) Networking device"
	select USB_DEVICE_NETWORK
	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 "USB Ethernet Emulation Model (EEM) Networking device"
	select USB_DEVICE_NETWORK
	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 "USB Remote NDIS (RNDIS) Networking device"
	select USB_DEVICE_NETWORK
	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_INTERRUPT_EP_MPS
	int
	default 16
	help
	  CDC ECM class interrupt endpoint size

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

config USB_DEVICE_NETWORK_ECM_MAC
	string "USB ECM Host OS MAC Address"
	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

config CDC_EEM_BULK_EP_MPS
	int
	default 512 if USB_DC_HAS_HS_SUPPORT
	default 64
	depends on USB_DEVICE_NETWORK_EEM

if USB_DEVICE_NETWORK_RNDIS

config RNDIS_INTERRUPT_EP_MPS
	int
	default 16
	help
	  RNDIS interrupt endpoint size

config RNDIS_BULK_EP_MPS
	int
	default 512 if USB_DC_HAS_HS_SUPPORT
	default 64
	help
	  RNDIS bulk endpoint size

endif # USB_DEVICE_NETWORK_RNDIS

if USB_DEVICE_NETWORK

module = USB_DEVICE_NETWORK
module-dep = LOG
module-str = USB Device Network log level
source "subsys/net/Kconfig.template.log_config.net"

endif # USB_DEVICE_NETWORK

endmenu # USB Device Networking support
