Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Feb 2014 13:20:08 +0000 (UTC)
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r262362 - in stable/9/sys: conf dev/usb dev/usb/net modules/usb modules/usb/urndis
Message-ID:  <201402231320.s1NDK8wh039322@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hselasky
Date: Sun Feb 23 13:20:08 2014
New Revision: 262362
URL: http://svnweb.freebsd.org/changeset/base/262362

Log:
  MFC r261541, r261543 and r261544:
  Import USB RNDIS driver to FreeBSD from OpenBSD.
  Useful for so-called USB tethering.
  - Imported code from OpenBSD
  - Adapted code to FreeBSD
  - Removed some unused functions
  - Fixed some buffer encoding and decoding issues
  - Optimised data transport path a bit, by sending multiple packets at a time
  - Increased receive buffer to 16K

Added:
  stable/9/sys/dev/usb/net/if_urndis.c
     - copied, changed from r261541, head/sys/dev/usb/net/if_urndis.c
  stable/9/sys/dev/usb/net/if_urndisreg.h
     - copied, changed from r261541, head/sys/dev/usb/net/if_urndisreg.h
  stable/9/sys/modules/usb/urndis/
     - copied from r261541, head/sys/modules/usb/urndis/
Modified:
  stable/9/sys/conf/NOTES
  stable/9/sys/conf/files
  stable/9/sys/dev/usb/usb.h
  stable/9/sys/modules/usb/Makefile
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/conf/   (props changed)
  stable/9/sys/dev/   (props changed)
  stable/9/sys/modules/   (props changed)

Modified: stable/9/sys/conf/NOTES
==============================================================================
--- stable/9/sys/conf/NOTES	Sun Feb 23 13:13:59 2014	(r262361)
+++ stable/9/sys/conf/NOTES	Sun Feb 23 13:20:08 2014	(r262362)
@@ -2751,6 +2751,8 @@ device		upgt
 # Ralink Technology RT2500USB wireless driver
 device		ural
 #
+# RNDIS USB ethernet driver
+device		urndis
 # Realtek RTL8187B/L wireless driver
 device		urtw
 #

Modified: stable/9/sys/conf/files
==============================================================================
--- stable/9/sys/conf/files	Sun Feb 23 13:13:59 2014	(r262361)
+++ stable/9/sys/conf/files	Sun Feb 23 13:20:08 2014	(r262362)
@@ -2028,9 +2028,10 @@ dev/usb/net/if_mos.c		optional mos
 dev/usb/net/if_rue.c		optional rue
 dev/usb/net/if_udav.c		optional udav
 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 aue | axe | axge | cdce | cue | kue | \
-					 mos | rue | udav | ipheth
+					 mos | rue | udav | ipheth | urndis
 dev/usb/net/uhso.c		optional uhso
 #
 # USB WLAN drivers

Copied and modified: stable/9/sys/dev/usb/net/if_urndis.c (from r261541, head/sys/dev/usb/net/if_urndis.c)
==============================================================================
--- head/sys/dev/usb/net/if_urndis.c	Thu Feb  6 08:47:14 2014	(r261541, copy source)
+++ stable/9/sys/dev/usb/net/if_urndis.c	Sun Feb 23 13:20:08 2014	(r262362)
@@ -170,8 +170,11 @@ static const struct usb_ether_methods ur
 };
 
 static const STRUCT_USB_HOST_ID urndis_host_devs[] = {
+#if 0
+	/* XXX this entry has a conflict an entry the umodem driver XXX */
 	{USB_IFACE_CLASS(UICLASS_CDC), USB_IFACE_SUBCLASS(UISUBCLASS_ABSTRACT_CONTROL_MODEL),
 	USB_IFACE_PROTOCOL(0xff)},
+#endif
 	{USB_IFACE_CLASS(UICLASS_WIRELESS), USB_IFACE_SUBCLASS(UISUBCLASS_RF),
 	USB_IFACE_PROTOCOL(UIPROTO_RNDIS)},
 	{USB_IFACE_CLASS(UICLASS_IAD), USB_IFACE_SUBCLASS(UISUBCLASS_SYNC),
@@ -838,7 +841,7 @@ urndis_bulk_read_callback(struct usb_xfe
 				DPRINTF("invalid dataoffset %u larger than %u\n",
 				    msg.rm_dataoffset + msg.rm_datalen +
 				    (uint32_t)__offsetof(struct urndis_packet_msg,
-				    rm_dataoffset));
+				    rm_dataoffset), actlen);
 				goto tr_setup;
 			} else if (msg.rm_datalen < (uint32_t)sizeof(struct ether_header)) {
 				ifp->if_ierrors++;

Copied and modified: stable/9/sys/dev/usb/net/if_urndisreg.h (from r261541, head/sys/dev/usb/net/if_urndisreg.h)
==============================================================================
--- head/sys/dev/usb/net/if_urndisreg.h	Thu Feb  6 08:47:14 2014	(r261541, copy source)
+++ stable/9/sys/dev/usb/net/if_urndisreg.h	Sun Feb 23 13:20:08 2014	(r262362)
@@ -53,7 +53,7 @@ struct urndis_softc {
 
 #define	URNDIS_LOCK(sc) mtx_lock(&(sc)->sc_mtx)
 #define	URNDIS_UNLOCK(sc) mtx_unlock(&(sc)->sc_mtx)
-#define	URNDIS_LOCK_ASSERT(sc, what) mtx_assert(&(sc)->sc_mtx, (x))
+#define	URNDIS_LOCK_ASSERT(sc, what) mtx_assert(&(sc)->sc_mtx, (what))
 
 #define	RNDIS_STATUS_BUFFER_OVERFLOW 	0x80000005L
 #define	RNDIS_STATUS_FAILURE 		0xC0000001L

Modified: stable/9/sys/dev/usb/usb.h
==============================================================================
--- stable/9/sys/dev/usb/usb.h	Sun Feb 23 13:13:59 2014	(r262361)
+++ stable/9/sys/dev/usb/usb.h	Sun Feb 23 13:20:08 2014	(r262362)
@@ -493,8 +493,11 @@ typedef struct usb_interface_assoc_descr
 #define	UICLASS_WIRELESS	0xe0
 #define	UISUBCLASS_RF			0x01
 #define	UIPROTO_BLUETOOTH		0x01
+#define	UIPROTO_RNDIS			0x03
 
 #define	UICLASS_IAD		0xEF	/* Interface Association Descriptor */
+#define	UISUBCLASS_SYNC			0x01
+#define	UIPROTO_ACTIVESYNC		0x01
 
 #define	UICLASS_APPL_SPEC	0xfe
 #define	UISUBCLASS_FIRMWARE_DOWNLOAD	1

Modified: stable/9/sys/modules/usb/Makefile
==============================================================================
--- stable/9/sys/modules/usb/Makefile	Sun Feb 23 13:13:59 2014	(r262361)
+++ stable/9/sys/modules/usb/Makefile	Sun Feb 23 13:20:08 2014	(r262362)
@@ -37,6 +37,7 @@ SUBDIR += atp uhid ukbd ums udbp ufm uep
 SUBDIR += ucom u3g uark ubsa ubser uchcom ucycom ufoma uftdi ugensa uipaq ulpt \
 	  umct umcs umodem umoscom uplcom uslcom uvisor uvscom
 SUBDIR += uether aue axe axge cdce cue ${_kue} mos rue udav uhso ipheth
+SUBDIR += urndis
 SUBDIR += usfs umass urio
 SUBDIR += quirk template
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402231320.s1NDK8wh039322>