svn commit: r351942 - in stable/12: share/man/man4 sys/conf sys/dev/usb sys/dev/usb/net sys/dev/usb/template sys/modules/usb sys/modules/usb/cdceem sys/modules/usb/template
Edward Tomasz Napierala
trasz at FreeBSD.org
Fri Sep 6 17:54:55 UTC 2019
Author: trasz
Date: Fri Sep 6 17:54:51 2019
New Revision: 351942
URL: https://svnweb.freebsd.org/changeset/base/351942
Log:
MFC r350685:
Add cdceem(4) driver, for virtual ethernet devices compliant
with Communication Device Class Ethernet Emulation Model (CDC EEM).
The driver supports both the device, and host side operation; there
is a new USB template (#11) for the former.
This enables communication with virtual USB NIC provided by iLO 5,
as found in new HPE Proliant servers.
Reviewed by: hselasky
Relnotes: yes
Sponsored by: Hewlett Packard Enterprise
Added:
stable/12/share/man/man4/cdceem.4
- copied unchanged from r350685, head/share/man/man4/cdceem.4
stable/12/sys/dev/usb/net/if_cdceem.c
- copied, changed from r350685, head/sys/dev/usb/net/if_cdceem.c
stable/12/sys/dev/usb/template/usb_template_cdceem.c
- copied unchanged from r350685, head/sys/dev/usb/template/usb_template_cdceem.c
stable/12/sys/modules/usb/cdceem/
- copied from r350685, head/sys/modules/usb/cdceem/
Modified:
stable/12/share/man/man4/Makefile
stable/12/share/man/man4/cdce.4
stable/12/share/man/man4/ipheth.4
stable/12/share/man/man4/urndis.4
stable/12/share/man/man4/usb_template.4
stable/12/sys/conf/files
stable/12/sys/dev/usb/template/usb_template.c
stable/12/sys/dev/usb/template/usb_template.h
stable/12/sys/dev/usb/usb.h
stable/12/sys/dev/usb/usb_ioctl.h
stable/12/sys/modules/usb/Makefile
stable/12/sys/modules/usb/template/Makefile
Directory Properties:
stable/12/ (props changed)
Modified: stable/12/share/man/man4/Makefile
==============================================================================
--- stable/12/share/man/man4/Makefile Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/share/man/man4/Makefile Fri Sep 6 17:54:51 2019 (r351942)
@@ -109,6 +109,7 @@ MAN= aac.4 \
ccr.4 \
cd.4 \
cdce.4 \
+ cdceem.4 \
cfi.4 \
cfumass.4 \
ch.4 \
Modified: stable/12/share/man/man4/cdce.4
==============================================================================
--- stable/12/share/man/man4/cdce.4 Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/share/man/man4/cdce.4 Fri Sep 6 17:54:51 2019 (r351942)
@@ -117,6 +117,7 @@ is running low on mbufs.
.El
.Sh SEE ALSO
.Xr arp 4 ,
+.Xr cdceem 4 ,
.Xr intro 4 ,
.Xr ipheth 4 ,
.Xr netintro 4 ,
Copied: stable/12/share/man/man4/cdceem.4 (from r350685, head/share/man/man4/cdceem.4)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/12/share/man/man4/cdceem.4 Fri Sep 6 17:54:51 2019 (r351942, copy of r350685, head/share/man/man4/cdceem.4)
@@ -0,0 +1,119 @@
+.\" Copyright (c) 2019 Edward Tomasz Napierala <trasz at FreeBSD.org>
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.Dd August 7, 2019
+.Dt CDCEEM 4
+.Os
+.Sh NAME
+.Nm cdceem
+.Nd "USB Communication Device Class Ethernet Emulation Model (CDC EEM) driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device miibus"
+.Cd "device uether"
+.Cd "device cdceem"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cdceem_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB devices based on the USB Communication
+Device Class Ethernet Emulation Model (CDC EEM) specification.
+.Pp
+The driver works on both host, and device-side; see
+.Xr usb_template 4
+for details.
+.Pp
+The USB device appears as a regular network interface on both sides,
+transporting Ethernet frames.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+The
+.Nm
+driver does not support different media types or options.
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va hw.usb.cdceem.debug
+Verbosity level for log messages from the
+.Nm
+driver.
+Set to 0 to disable logging or 1 to warn about potential problems.
+Larger values enable debugging output.
+Defaults to 1.
+.It Va hw.usb.cdceem.send_echoes
+If set to 1, the driver will send an Echo EEM packet when the
+interface is brought up.
+While responding to Echo is mandatory, some devices cannot handle it.
+Only use for debugging.
+Defaults to 0.
+.It Va hw.usb.cdceem.send_fake_crc
+If set to 1, the driver will use 0xdeadbeef as the CRC value
+for outgoing Data EEM packets.
+Only use for debugging.
+Defaults to 0.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr cdce 4 ,
+.Xr intro 4 ,
+.Xr ipheth 4 ,
+.Xr netintro 4 ,
+.Xr urndis 4 ,
+.Xr usb 4 ,
+.Xr usb_template 4 ,
+.Xr ifconfig 8
+.Rs
+.%T "Universal Serial Bus Communications Class Subclass Specification for Ethernet Emulation Model Devices"
+.%U https://usb.org/sites/default/files/CDC_EEM10.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 13.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Edward Tomasz Napierala Aq Mt trasz at FreeBSD.org
+under sponsorship from Hewlett Packard Enterprise.
Modified: stable/12/share/man/man4/ipheth.4
==============================================================================
--- stable/12/share/man/man4/ipheth.4 Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/share/man/man4/ipheth.4 Fri Sep 6 17:54:51 2019 (r351942)
@@ -78,6 +78,7 @@ Apple iPad tethering (all models)
.Sh SEE ALSO
.Xr arp 4 ,
.Xr cdce 4 ,
+.Xr cdceem 4 ,
.Xr intro 4 ,
.Xr netintro 4 ,
.Xr urndis 4 ,
Modified: stable/12/share/man/man4/urndis.4
==============================================================================
--- stable/12/share/man/man4/urndis.4 Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/share/man/man4/urndis.4 Fri Sep 6 17:54:51 2019 (r351942)
@@ -79,6 +79,7 @@ functionality of many Android devices.
.Sh SEE ALSO
.Xr arp 4 ,
.Xr cdce 4 ,
+.Xr cdceem 4 ,
.Xr ipheth 4 ,
.Xr netintro 4 ,
.Xr usb 4 ,
Modified: stable/12/share/man/man4/usb_template.4
==============================================================================
--- stable/12/share/man/man4/usb_template.4 Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/share/man/man4/usb_template.4 Fri Sep 6 17:54:51 2019 (r351942)
@@ -23,7 +23,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd May 24, 2018
+.Dd August 7, 2019
.Dt USB_TEMPLATE 4
.Os
.
@@ -88,6 +88,8 @@ Available templates are:
.It Dv 8 Ta CDC Ethernet and serial port
.It Dv 9 Ta USB MIDI
.It Dv 10 Ta CDC Ethernet, serial port, and storage
+.It Dv 11 Ta CDC Ethernet Emulation Model, see
+.Xr cdceem 4
.El
.
.Sh SYSCTL VARIABLES
Modified: stable/12/sys/conf/files
==============================================================================
--- stable/12/sys/conf/files Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/sys/conf/files Fri Sep 6 17:54:51 2019 (r351942)
@@ -3338,6 +3338,7 @@ dev/usb/net/if_aue.c optional aue
dev/usb/net/if_axe.c optional axe
dev/usb/net/if_axge.c optional axge
dev/usb/net/if_cdce.c optional cdce
+dev/usb/net/if_cdceem.c optional cdceem
dev/usb/net/if_cue.c optional cue
dev/usb/net/if_ipheth.c optional ipheth
dev/usb/net/if_kue.c optional kue
@@ -3351,8 +3352,8 @@ dev/usb/net/if_usie.c optional usie
dev/usb/net/if_urndis.c optional urndis
dev/usb/net/ruephy.c optional rue
dev/usb/net/usb_ethernet.c optional uether | aue | axe | axge | cdce | \
- cue | ipheth | kue | mos | rue | \
- smsc | udav | ure | urndis
+ cdceem | cue | ipheth | kue | mos | \
+ rue | smsc | udav | ure | urndis
dev/usb/net/uhso.c optional uhso
#
# USB WLAN drivers
@@ -3457,6 +3458,7 @@ dev/usb/template/usb_template_phone.c optional usb_tem
dev/usb/template/usb_template_serialnet.c optional usb_template
dev/usb/template/usb_template_midi.c optional usb_template
dev/usb/template/usb_template_multi.c optional usb_template
+dev/usb/template/usb_template_cdceem.c optional usb_template
#
# USB video drivers
#
Copied and modified: stable/12/sys/dev/usb/net/if_cdceem.c (from r350685, head/sys/dev/usb/net/if_cdceem.c)
==============================================================================
--- head/sys/dev/usb/net/if_cdceem.c Wed Aug 7 18:14:45 2019 (r350685, copy source)
+++ stable/12/sys/dev/usb/net/if_cdceem.c Fri Sep 6 17:54:51 2019 (r351942)
@@ -40,7 +40,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#include <sys/gsb_crc32.h>
+#include <sys/param.h>
#include <sys/eventhandler.h>
#include <sys/stdint.h>
#include <sys/stddef.h>
Modified: stable/12/sys/dev/usb/template/usb_template.c
==============================================================================
--- stable/12/sys/dev/usb/template/usb_template.c Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/sys/dev/usb/template/usb_template.c Fri Sep 6 17:54:51 2019 (r351942)
@@ -1464,6 +1464,9 @@ usb_temp_setup_by_index(struct usb_device *udev, uint1
case USB_TEMP_MULTI:
err = usb_temp_setup(udev, &usb_template_multi);
break;
+ case USB_TEMP_CDCEEM:
+ err = usb_temp_setup(udev, &usb_template_cdceem);
+ break;
default:
return (USB_ERR_INVAL);
}
Modified: stable/12/sys/dev/usb/template/usb_template.h
==============================================================================
--- stable/12/sys/dev/usb/template/usb_template.h Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/sys/dev/usb/template/usb_template.h Fri Sep 6 17:54:51 2019 (r351942)
@@ -116,7 +116,7 @@ extern struct usb_temp_device_desc usb_template_phone;
extern struct usb_temp_device_desc usb_template_serialnet;
extern struct usb_temp_device_desc usb_template_midi;
extern struct usb_temp_device_desc usb_template_multi;
-
+extern struct usb_temp_device_desc usb_template_cdceem;
void usb_decode_str_desc(struct usb_string_descriptor *sd,
char *buf, size_t buflen);
Copied: stable/12/sys/dev/usb/template/usb_template_cdceem.c (from r350685, head/sys/dev/usb/template/usb_template_cdceem.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ stable/12/sys/dev/usb/template/usb_template_cdceem.c Fri Sep 6 17:54:51 2019 (r351942, copy of r350685, head/sys/dev/usb/template/usb_template_cdceem.c)
@@ -0,0 +1,263 @@
+/* $FreeBSD$ */
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2008 Hans Petter Selasky <hselasky at FreeBSD.org>
+ * Copyright (c) 2018 The FreeBSD Foundation
+ * Copyright (c) 2019 Edward Tomasz Napierala <trasz at FreeBSD.org>
+ * All rights reserved.
+ *
+ * Portions of this software were developed by Edward Tomasz Napierala
+ * under sponsorship from the FreeBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * This file contains the USB templates for an USB Mass Storage Device.
+ */
+
+#ifdef USB_GLOBAL_INCLUDE_FILE
+#include USB_GLOBAL_INCLUDE_FILE
+#else
+#include <sys/stdint.h>
+#include <sys/stddef.h>
+#include <sys/param.h>
+#include <sys/queue.h>
+#include <sys/types.h>
+#include <sys/systm.h>
+#include <sys/kernel.h>
+#include <sys/bus.h>
+#include <sys/module.h>
+#include <sys/lock.h>
+#include <sys/mutex.h>
+#include <sys/condvar.h>
+#include <sys/sysctl.h>
+#include <sys/sx.h>
+#include <sys/unistd.h>
+#include <sys/callout.h>
+#include <sys/malloc.h>
+#include <sys/priv.h>
+
+#include <dev/usb/usb.h>
+#include <dev/usb/usbdi.h>
+#include <dev/usb/usb_core.h>
+#include <dev/usb/usb_ioctl.h>
+#include <dev/usb/usb_util.h>
+
+#include <dev/usb/template/usb_template.h>
+#endif /* USB_GLOBAL_INCLUDE_FILE */
+
+enum {
+ CDCEEM_LANG_INDEX,
+ CDCEEM_INTERFACE_INDEX,
+ CDCEEM_CONFIGURATION_INDEX,
+ CDCEEM_MANUFACTURER_INDEX,
+ CDCEEM_PRODUCT_INDEX,
+ CDCEEM_SERIAL_NUMBER_INDEX,
+ CDCEEM_MAX_INDEX,
+};
+
+#define CDCEEM_DEFAULT_VENDOR_ID USB_TEMPLATE_VENDOR
+#define CDCEEM_DEFAULT_PRODUCT_ID 0x27df
+#define CDCEEM_DEFAULT_INTERFACE "USB CDC EEM Interface"
+#define CDCEEM_DEFAULT_CONFIGURATION "Default Config"
+#define CDCEEM_DEFAULT_MANUFACTURER USB_TEMPLATE_MANUFACTURER
+#define CDCEEM_DEFAULT_PRODUCT "CDC EEM"
+#define CDCEEM_DEFAULT_SERIAL_NUMBER "March 2008"
+
+static struct usb_string_descriptor cdceem_interface;
+static struct usb_string_descriptor cdceem_configuration;
+static struct usb_string_descriptor cdceem_manufacturer;
+static struct usb_string_descriptor cdceem_product;
+static struct usb_string_descriptor cdceem_serial_number;
+
+static struct sysctl_ctx_list cdceem_ctx_list;
+
+/* prototypes */
+
+static usb_temp_get_string_desc_t cdceem_get_string_desc;
+
+static const struct usb_temp_packet_size bulk_mps = {
+ .mps[USB_SPEED_FULL] = 64,
+ .mps[USB_SPEED_HIGH] = 512,
+};
+
+static const struct usb_temp_endpoint_desc bulk_in_ep = {
+ .pPacketSize = &bulk_mps,
+#ifdef USB_HIP_IN_EP_0
+ .bEndpointAddress = USB_HIP_IN_EP_0,
+#else
+ .bEndpointAddress = UE_DIR_IN,
+#endif
+ .bmAttributes = UE_BULK,
+};
+
+static const struct usb_temp_endpoint_desc bulk_out_ep = {
+ .pPacketSize = &bulk_mps,
+#ifdef USB_HIP_OUT_EP_0
+ .bEndpointAddress = USB_HIP_OUT_EP_0,
+#else
+ .bEndpointAddress = UE_DIR_OUT,
+#endif
+ .bmAttributes = UE_BULK,
+};
+
+static const struct usb_temp_endpoint_desc *cdceem_data_endpoints[] = {
+ &bulk_in_ep,
+ &bulk_out_ep,
+ NULL,
+};
+
+static const struct usb_temp_interface_desc cdceem_data_interface = {
+ .ppEndpoints = cdceem_data_endpoints,
+ .bInterfaceClass = UICLASS_CDC,
+ .bInterfaceSubClass = UISUBCLASS_ETHERNET_EMULATION_MODEL,
+ .bInterfaceProtocol = UIPROTO_CDC_EEM,
+ .iInterface = CDCEEM_INTERFACE_INDEX,
+};
+
+static const struct usb_temp_interface_desc *cdceem_interfaces[] = {
+ &cdceem_data_interface,
+ NULL,
+};
+
+static const struct usb_temp_config_desc cdceem_config_desc = {
+ .ppIfaceDesc = cdceem_interfaces,
+ .bmAttributes = 0,
+ .bMaxPower = 0,
+ .iConfiguration = CDCEEM_CONFIGURATION_INDEX,
+};
+
+static const struct usb_temp_config_desc *cdceem_configs[] = {
+ &cdceem_config_desc,
+ NULL,
+};
+
+struct usb_temp_device_desc usb_template_cdceem = {
+ .getStringDesc = &cdceem_get_string_desc,
+ .ppConfigDesc = cdceem_configs,
+ .idVendor = CDCEEM_DEFAULT_VENDOR_ID,
+ .idProduct = CDCEEM_DEFAULT_PRODUCT_ID,
+ .bcdDevice = 0x0100,
+ .bDeviceClass = UDCLASS_COMM,
+ .bDeviceSubClass = 0,
+ .bDeviceProtocol = 0,
+ .iManufacturer = CDCEEM_MANUFACTURER_INDEX,
+ .iProduct = CDCEEM_PRODUCT_INDEX,
+ .iSerialNumber = CDCEEM_SERIAL_NUMBER_INDEX,
+};
+
+/*------------------------------------------------------------------------*
+ * cdceem_get_string_desc
+ *
+ * Return values:
+ * NULL: Failure. No such string.
+ * Else: Success. Pointer to string descriptor is returned.
+ *------------------------------------------------------------------------*/
+static const void *
+cdceem_get_string_desc(uint16_t lang_id, uint8_t string_index)
+{
+ static const void *ptr[CDCEEM_MAX_INDEX] = {
+ [CDCEEM_LANG_INDEX] = &usb_string_lang_en,
+ [CDCEEM_INTERFACE_INDEX] = &cdceem_interface,
+ [CDCEEM_CONFIGURATION_INDEX] = &cdceem_configuration,
+ [CDCEEM_MANUFACTURER_INDEX] = &cdceem_manufacturer,
+ [CDCEEM_PRODUCT_INDEX] = &cdceem_product,
+ [CDCEEM_SERIAL_NUMBER_INDEX] = &cdceem_serial_number,
+ };
+
+ if (string_index == 0) {
+ return (&usb_string_lang_en);
+ }
+ if (lang_id != 0x0409) {
+ return (NULL);
+ }
+ if (string_index < CDCEEM_MAX_INDEX) {
+ return (ptr[string_index]);
+ }
+ return (NULL);
+}
+
+static void
+cdceem_init(void *arg __unused)
+{
+ struct sysctl_oid *parent;
+ char parent_name[3];
+
+ usb_make_str_desc(&cdceem_interface, sizeof(cdceem_interface),
+ CDCEEM_DEFAULT_INTERFACE);
+ usb_make_str_desc(&cdceem_configuration, sizeof(cdceem_configuration),
+ CDCEEM_DEFAULT_CONFIGURATION);
+ usb_make_str_desc(&cdceem_manufacturer, sizeof(cdceem_manufacturer),
+ CDCEEM_DEFAULT_MANUFACTURER);
+ usb_make_str_desc(&cdceem_product, sizeof(cdceem_product),
+ CDCEEM_DEFAULT_PRODUCT);
+ usb_make_str_desc(&cdceem_serial_number, sizeof(cdceem_serial_number),
+ CDCEEM_DEFAULT_SERIAL_NUMBER);
+
+ snprintf(parent_name, sizeof(parent_name), "%d", USB_TEMP_CDCEEM);
+ sysctl_ctx_init(&cdceem_ctx_list);
+
+ parent = SYSCTL_ADD_NODE(&cdceem_ctx_list,
+ SYSCTL_STATIC_CHILDREN(_hw_usb_templates), OID_AUTO,
+ parent_name, CTLFLAG_RW,
+ 0, "USB CDC EEM device side template");
+ SYSCTL_ADD_U16(&cdceem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+ "vendor_id", CTLFLAG_RWTUN,
+ &usb_template_cdceem.idVendor, 1, "Vendor identifier");
+ SYSCTL_ADD_U16(&cdceem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+ "product_id", CTLFLAG_RWTUN,
+ &usb_template_cdceem.idProduct, 1, "Product identifier");
+#if 0
+ SYSCTL_ADD_PROC(&cdceem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+ "interface", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+ &cdceem_interface, sizeof(cdceem_interface), usb_temp_sysctl,
+ "A", "Interface string");
+ SYSCTL_ADD_PROC(&cdceem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+ "configuration", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+ &cdceem_configuration, sizeof(cdceem_configuration), usb_temp_sysctl,
+ "A", "Configuration string");
+#endif
+ SYSCTL_ADD_PROC(&cdceem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+ "manufacturer", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+ &cdceem_manufacturer, sizeof(cdceem_manufacturer), usb_temp_sysctl,
+ "A", "Manufacturer string");
+ SYSCTL_ADD_PROC(&cdceem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+ "product", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+ &cdceem_product, sizeof(cdceem_product), usb_temp_sysctl,
+ "A", "Product string");
+ SYSCTL_ADD_PROC(&cdceem_ctx_list, SYSCTL_CHILDREN(parent), OID_AUTO,
+ "serial_number", CTLTYPE_STRING | CTLFLAG_RWTUN | CTLFLAG_MPSAFE,
+ &cdceem_serial_number, sizeof(cdceem_serial_number), usb_temp_sysctl,
+ "A", "Serial number string");
+}
+
+static void
+cdceem_uninit(void *arg __unused)
+{
+
+ sysctl_ctx_free(&cdceem_ctx_list);
+}
+
+SYSINIT(cdceem_init, SI_SUB_LOCK, SI_ORDER_FIRST, cdceem_init, NULL);
+SYSUNINIT(cdceem_uninit, SI_SUB_LOCK, SI_ORDER_FIRST, cdceem_uninit, NULL);
Modified: stable/12/sys/dev/usb/usb.h
==============================================================================
--- stable/12/sys/dev/usb/usb.h Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/sys/dev/usb/usb.h Fri Sep 6 17:54:51 2019 (r351942)
@@ -444,6 +444,7 @@ typedef struct usb_interface_assoc_descriptor usb_inte
#define UIPROTO_CDC_NONE 0
#define UIPROTO_CDC_AT 1
+#define UIPROTO_CDC_EEM 7
#define UICLASS_HID 0x03
#define UISUBCLASS_BOOT 1
Modified: stable/12/sys/dev/usb/usb_ioctl.h
==============================================================================
--- stable/12/sys/dev/usb/usb_ioctl.h Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/sys/dev/usb/usb_ioctl.h Fri Sep 6 17:54:51 2019 (r351942)
@@ -70,6 +70,7 @@ enum {
USB_TEMP_SERIALNET, /* USB CDC Ethernet and Modem */
USB_TEMP_MIDI, /* USB MIDI */
USB_TEMP_MULTI, /* USB Ethernet, serial, and storage */
+ USB_TEMP_CDCEEM, /* USB Ethernet Emulation Model */
USB_TEMP_MAX,
};
Modified: stable/12/sys/modules/usb/Makefile
==============================================================================
--- stable/12/sys/modules/usb/Makefile Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/sys/modules/usb/Makefile Fri Sep 6 17:54:51 2019 (r351942)
@@ -51,7 +51,8 @@ SUBDIR += atp cfumass uhid uhid_snes ukbd ums udbp ufm
SUBDIR += ucom u3g uark ubsa ubser uchcom ucycom ufoma uftdi ugensa uipaq ulpt \
umct umcs umodem umoscom uplcom uslcom uvisor uvscom
SUBDIR += udl
-SUBDIR += uether aue axe axge cdce cue ${_kue} mos rue smsc udav uhso ipheth
+SUBDIR += uether aue axe axge cdce cdceem cue ${_kue} mos rue smsc udav uhso \
+ ipheth
SUBDIR += muge
SUBDIR += ure urndis
SUBDIR += usfs umass urio
Modified: stable/12/sys/modules/usb/template/Makefile
==============================================================================
--- stable/12/sys/modules/usb/template/Makefile Fri Sep 6 17:43:00 2019 (r351941)
+++ stable/12/sys/modules/usb/template/Makefile Fri Sep 6 17:54:51 2019 (r351942)
@@ -42,6 +42,7 @@ SRCS= opt_bus.h opt_usb.h device_if.h bus_if.h usb_if.
usb_template_phone.c \
usb_template_serialnet.c \
usb_template_midi.c \
- usb_template_multi.c
+ usb_template_multi.c \
+ usb_template_cdceem.c
.include <bsd.kmod.mk>
More information about the svn-src-all
mailing list