Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-9]: src/sys/modules/usbnet Pull up following revision(s) (request...
details: https://anonhg.NetBSD.org/src/rev/84c07ab90578
branches: netbsd-9
changeset: 962899:84c07ab90578
user: martin <martin%NetBSD.org@localhost>
date: Sun Sep 01 13:00:36 2019 +0000
description:
Pull up following revision(s) (requested by mrg in ticket #135):
distrib/sets/lists/comp/mi 1.2279
distrib/sets/lists/modules/mi 1.123
share/man/man9/Makefile 1.438
share/man/man9/usbnet.9 1.1-1.9
sys/dev/ic/rndisreg.h 1.3
sys/dev/usb/TODO 1.47-1.52
sys/dev/usb/TODO.usbmp 1.15,1.16
sys/dev/usb/files.usb 1.157-1.167
sys/dev/usb/if_aue.c 1.155-1.161
sys/dev/usb/if_auereg.h 1.30-1.32
sys/dev/usb/if_axe.c 1.103-1.119
sys/dev/usb/if_axen.c 1.51-1.53,1.55-1.67
sys/dev/usb/if_axenreg.h 1.15
sys/dev/usb/if_cdce.c 1.54-1.67
sys/dev/usb/if_cue.c 1.85,1.86
sys/dev/usb/if_cuereg.h 1.23
sys/dev/usb/if_kue.c 1.97-1.100
sys/dev/usb/if_kuereg.h 1.23,1.24
sys/dev/usb/if_mue.c 1.51-1.55
sys/dev/usb/if_muereg.h 1.6
sys/dev/usb/if_muevar.h 1.9
sys/dev/usb/if_smsc.c 1.46-1.61
sys/dev/usb/if_smscreg.h 1.6
sys/dev/usb/if_smscvar.h delete
sys/dev/usb/if_udav.c 1.60-1.71
sys/dev/usb/if_udavreg.h 1.14,1.15
sys/dev/usb/if_upl.c 1.65,1.66
sys/dev/usb/if_ure.c 1.15-1.31
sys/dev/usb/if_urevar.h 1.4,1.5
sys/dev/usb/if_url.c 1.67-1.70
sys/dev/usb/if_urlreg.h 1.14
sys/dev/usb/if_urndis.c 1.22-1.33
sys/dev/usb/if_urtwn.c 1.72
sys/dev/usb/ohci.c 1.290
sys/dev/usb/uhub.c 1.143
sys/dev/usb/usb.c 1.180
sys/dev/usb/usb.h 1.118
sys/dev/usb/usb_mem.c 1.71
sys/dev/usb/usb_subr.c 1.238,1.239
sys/dev/usb/usbdevs 1.772
sys/dev/usb/usbdi.c 1.183,1.186
sys/dev/usb/usbdi.h 1.97
sys/dev/usb/usbdi_util.c 1.75
sys/dev/usb/usbhist.h 1.5,1.6
sys/dev/usb/usbnet.c 1.1-1.24
sys/dev/usb/usbnet.h 1.1-1.14
sys/dev/usb/usbroothub.c 1.9
sys/dev/usb/xhci.c 1.109,1.110
sys/modules/Makefile 1.223
sys/modules/usbnet/Makefile 1.1
usbnet(9): Add common framework for USB network devices.
This bring various safety fixes to all updated drivers,
and includes locking clean up, detach safety when being
used or not, separate rx/tx locks to improve performance,
porting to NET_MPSAFE, many edge/error case bugs in
drivers fixed, as well as resovling PRs 54303 and 54308.
These drivers are converted: axe(4), axen(4), aue(4),
cdce(4), cue(4), kue(4), mue(4), smsc(4), udav(4),
upl(4), ure(4), url(4), and urndis(4).
diffstat:
distrib/sets/lists/comp/mi | 5 +-
distrib/sets/lists/modules/mi | 4 +-
share/man/man9/Makefile | 15 +-
share/man/man9/usbnet.9 | 894 +++++++++++++++++++++++
sys/dev/ic/rndisreg.h | 11 +-
sys/dev/usb/TODO | 28 +-
sys/dev/usb/TODO.usbmp | 44 +-
sys/dev/usb/files.usb | 32 +-
sys/dev/usb/if_auereg.h | 78 +-
sys/dev/usb/if_axe.c | 1376 ++++++-----------------------------
sys/dev/usb/if_axen.c | 1571 ++++++++--------------------------------
sys/dev/usb/if_axenreg.h | 11 +-
sys/dev/usb/if_cdce.c | 876 ++--------------------
sys/dev/usb/if_cue.c | 1125 ++++++----------------------
sys/dev/usb/if_cuereg.h | 73 +-
sys/dev/usb/if_kue.c | 903 +++++------------------
sys/dev/usb/if_kuereg.h | 67 +-
sys/dev/usb/if_mue.c | 1524 +++++++++++----------------------------
sys/dev/usb/if_muereg.h | 6 +-
sys/dev/usb/if_muevar.h | 67 +-
sys/dev/usb/if_smsc.c | 1440 ++++++++++---------------------------
sys/dev/usb/if_smscreg.h | 8 +-
sys/dev/usb/if_smscvar.h | 106 --
sys/dev/usb/if_udav.c | 1418 ++++++++----------------------------
sys/dev/usb/if_udavreg.h | 62 +-
sys/dev/usb/if_upl.c | 909 ++--------------------
sys/dev/usb/if_ure.c | 1362 +++++++++--------------------------
sys/dev/usb/if_urevar.h | 75 +-
sys/dev/usb/if_url.c | 1354 +++++++---------------------------
sys/dev/usb/if_urlreg.h | 60 +-
sys/dev/usb/if_urndis.c | 971 ++++++-------------------
sys/dev/usb/if_urtwn.c | 11 +-
sys/dev/usb/ohci.c | 6 +-
sys/dev/usb/uhub.c | 24 +-
sys/dev/usb/usb.c | 19 +-
sys/dev/usb/usb.h | 23 +-
sys/dev/usb/usb_mem.c | 12 +-
sys/dev/usb/usb_subr.c | 173 ++-
sys/dev/usb/usbdi.c | 98 +-
sys/dev/usb/usbdi.h | 5 +-
sys/dev/usb/usbdi_util.c | 130 +-
sys/dev/usb/usbhist.h | 14 +-
sys/dev/usb/usbnet.c | 1566 ++++++++++++++++++++++++++++++++++++++++
sys/dev/usb/usbnet.h | 397 ++++++++++
sys/dev/usb/usbroothub.c | 19 +-
sys/dev/usb/xhci.c | 9 +-
sys/modules/Makefile | 3 +-
sys/modules/usbnet/Makefile | 12 +
48 files changed, 6594 insertions(+), 12402 deletions(-)
diffs (truncated from 25915 to 300 lines):
diff -r 735ea9d218b0 -r 84c07ab90578 distrib/sets/lists/comp/mi
--- a/distrib/sets/lists/comp/mi Sun Sep 01 11:12:45 2019 +0000
+++ b/distrib/sets/lists/comp/mi Sun Sep 01 13:00:36 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.2278.2.3 2019/08/16 19:28:26 martin Exp $
+# $NetBSD: mi,v 1.2278.2.4 2019/09/01 13:00:37 martin Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
./etc/mtree/set.comp comp-sys-root
@@ -11967,6 +11967,7 @@
./usr/share/man/cat9/uprintf.0 comp-sys-catman .cat
./usr/share/man/cat9/usbd_status.0 comp-sys-catman .cat
./usr/share/man/cat9/usbdi.0 comp-sys-catman .cat
+./usr/share/man/cat9/usbnet.0 comp-sys-catman .cat
./usr/share/man/cat9/useracc.0 comp-obsolete obsolete
./usr/share/man/cat9/userret.0 comp-sys-catman .cat
./usr/share/man/cat9/ustore.0 comp-sys-catman .cat
@@ -19854,6 +19855,7 @@
./usr/share/man/html9/uprintf.html comp-sys-htmlman html
./usr/share/man/html9/usbd_status.html comp-sys-htmlman html
./usr/share/man/html9/usbdi.html comp-sys-htmlman html
+./usr/share/man/html9/usbnet.html comp-sys-htmlman html
./usr/share/man/html9/userret.html comp-sys-htmlman html
./usr/share/man/html9/ustore.html comp-sys-htmlman html
./usr/share/man/html9/ustore_16.html comp-sys-htmlman html
@@ -27948,6 +27950,7 @@
./usr/share/man/man9/uprintf.9 comp-sys-man .man
./usr/share/man/man9/usbd_status.9 comp-sys-man .man
./usr/share/man/man9/usbdi.9 comp-sys-man .man
+./usr/share/man/man9/usbnet.9 comp-sys-man .man
./usr/share/man/man9/useracc.9 comp-obsolete obsolete
./usr/share/man/man9/userret.9 comp-sys-man .man
./usr/share/man/man9/ustore.9 comp-sys-man .man
diff -r 735ea9d218b0 -r 84c07ab90578 distrib/sets/lists/modules/mi
--- a/distrib/sets/lists/modules/mi Sun Sep 01 11:12:45 2019 +0000
+++ b/distrib/sets/lists/modules/mi Sun Sep 01 13:00:36 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.122 2019/06/20 03:31:55 pgoyette Exp $
+# $NetBSD: mi,v 1.122.2.1 2019/09/01 13:00:37 martin Exp $
#
# Note: don't delete entries from here - mark them as "obsolete" instead.
#
@@ -440,6 +440,8 @@
./@MODULEDIR@/umap/umap.kmod base-kernel-modules kmod
./@MODULEDIR@/union base-kernel-modules kmod
./@MODULEDIR@/union/union.kmod base-kernel-modules kmod
+./@MODULEDIR@/usbnet base-kernel-modules kmod
+./@MODULEDIR@/usbnet/usbnet.kmod base-kernel-modules kmod
./@MODULEDIR@/usbverbose base-kernel-modules kmod
./@MODULEDIR@/usbverbose/usbverbose.kmod base-kernel-modules kmod
./@MODULEDIR@/v7fs base-kernel-modules kmod
diff -r 735ea9d218b0 -r 84c07ab90578 share/man/man9/Makefile
--- a/share/man/man9/Makefile Sun Sep 01 11:12:45 2019 +0000
+++ b/share/man/man9/Makefile Sun Sep 01 13:00:36 2019 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.437 2019/05/08 14:25:39 isaki Exp $
+# $NetBSD: Makefile,v 1.437.2.1 2019/09/01 13:00:37 martin Exp $
# Makefile for section 9 (kernel function and variable) manual pages.
@@ -53,17 +53,18 @@
SET.9 setbit.9 setjmp.9 shutdownhook_establish.9 \
signal.9 skpc.9 sockopt.9 softintr.9 spl.9 specificdata.9 \
spi.9 splraiseipl.9 \
+ store.9 \
suspendsched.9 \
sysctl.9 sysmon_envsys.9 sysmon_pswitch.9 sysmon_taskq.9 tc.9 \
tcp_congctl.9 threadpool.9 timecounter.9 time_second.9 todr.9 \
ts2timo.9 tvtohz.9 \
- ucas.9 uiomove.9 ucom.9 userret.9 \
+ ubc.9 ucas.9 ucom.9 ufetch.9 uiomove.9 \
+ usbd_status.9 usbdi.9 usbnet.9 \
+ userret.9 \
+ uvm.9 uvm_hotplug.9 uvm_km.9 uvm_map.9 \
vattr.9 veriexec.9 vcons.9 vfs.9 vfs_hooks.9 vfsops.9 vfssubr.9 \
- video.9 vme.9 \
- vnfileops.9 vnode.9 vnodeops.9 vnsubr.9 \
- ubc.9 ufetch.9 usbd_status.9 usbdi.9 ustore.9 uvm.9 uvm_hotplug.9 \
- uvm_km.9 uvm_map.9 \
- vmem.9 wapbl.9 wdc.9 workqueue.9 \
+ video.9 vme.9 vnfileops.9 vnode.9 vnodeops.9 vnsubr.9 vmem.9 \
+ wapbl.9 wdc.9 workqueue.9 \
wsbell.9 wscons.9 wsdisplay.9 wsfont.9 wskbd.9 wsmouse.9 \
xcall.9
diff -r 735ea9d218b0 -r 84c07ab90578 share/man/man9/usbnet.9
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/man/man9/usbnet.9 Sun Sep 01 13:00:36 2019 +0000
@@ -0,0 +1,894 @@
+.\" $NetBSD: usbnet.9,v 1.9.2.2 2019/09/01 13:00:37 martin Exp $
+.\"
+.\" Copyright (c) 2019 Matthew R. Green
+.\" All rights reserved.
+.\"
+.\" 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.
+.\" 3. The name of the author may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
+.\"
+.Dd August 22, 2019
+.Dt USBNET 9
+.Os
+.Sh NAME
+.Nm usbnet
+.Nd common USB Ethernet driver framework
+.Sh SYNOPSIS
+.In dev/usb/usbnet.h
+.Ss Functions offered by usbnet.h
+.Ft void
+.Fn usbnet_set_link "struct usbnet *un" "bool link"
+.Ft void
+.Fn usbnet_set_dying "struct usbnet *un" "bool dying"
+.Ft struct ifnet *
+.Fn usbnet_ifp "struct usbnet *un"
+.Ft struct ethercom *
+.Fn usbnet_ec "struct usbnet *un"
+.Ft struct mii_data *
+.Fn usbnet_mii "struct usbnet *un"
+.Ft krndsource_t *
+.Fn usbnet_rndsrc "struct usbnet *un"
+.Ft void *
+.Fn usbnet_softc "struct usbnet *un"
+.Ft bool
+.Fn usbnet_havelink "struct usbnet *un"
+.Ft bool
+.Fn usbnet_isdying "struct usbnet *un"
+.Ft void
+.Fn usbnet_lock "struct usbnet *un"
+.Ft void
+.Fn usbnet_unlock "struct usbnet *un"
+.Ft kmutex_t *
+.Fn usbnet_mutex "struct usbnet *un"
+.Ft void
+.Fn usbnet_isowned "struct usbnet *un"
+.Ft void
+.Fn usbnet_lock_rx "struct usbnet *un"
+.Ft void
+.Fn usbnet_unlock_rx "struct usbnet *un"
+.Ft kmutex_t *
+.Fn usbnet_mutex_rx "struct usbnet *un"
+.Ft void
+.Fn usbnet_isowned_rx "struct usbnet *un"
+.Ft void
+.Fn usbnet_lock_tx "struct usbnet *un"
+.Ft void
+.Fn usbnet_unlock_tx "struct usbnet *un"
+.Ft kmutex_t *
+.Fn usbnet_mutex_tx "struct usbnet *un"
+.Ft void
+.Fn usbnet_isowned_tx "struct usbnet *un"
+.Ft int
+.Fn usbnet_init_rx_tx "struct usbnet *un" "unsigned rxflags" "unsigned txflags"
+.Ft void
+.Fn usbnet_lock_mii "struct usbnet *un"
+.Ft void
+.Fn usbnet_lock_mii_un_locked "struct usbnet *un"
+.Ft void
+.Fn usbnet_unlock_mii "struct usbnet *un"
+.Ft void
+.Fn usbnet_unlock_mii_un_locked "struct usbnet *un"
+.Ft kmutex_t *
+.Fn usbnet_mutex_mii "struct usbnet *un"
+.Ft void
+.Fn usbnet_isowned_mii "struct usbnet *un"
+.Ft int
+.Fn usbnet_miibus_readreg "device_t dev" "int phy" "int reg" "uint16_t *val"
+.Ft int
+.Fn usbnet_miibus_writereg "device_t dev" "int phy" "int reg" "uint16_t val"
+.Ft void
+.Fn usbnet_miibus_statchg "struct ifnet *"
+.Ft void
+.Fn usbnet_enqueue "struct usbnet *un" "uint8_t *buf" "size_t buflen" "int csum_flags" "uint32_t csum_data" "int mbuf_flags"
+.Ft void
+.Fn usbnet_input "struct usbnet *un" "uint8_t *buf" "size_t buflen"
+.Ft void
+.Fn usbnet_attach "struct usbnet *un" "const char *detname"
+.Ft void
+.Fn usbnet_attach_ifp "struct usbnet *un" "unsigned if_flags" "unsigned if_extflags" "const struct usbnet_mii *unm"
+.Ft int
+.Fn usbnet_detach "device_t dev" "int flags"
+.Ft int
+.Fn usbnet_activate "device_t dev" "devact_t act"
+.Ft void
+.Fn usbnet_stop "struct usbnet *un" "struct ifnet *ifp" "int disable"
+.Sh DESCRIPTION
+The
+.Nm
+framework provides methods usable for USB Ethernet drivers.
+The framework has support for these features:
+.Bl -bullet -offset 8n
+.It
+Partial autoconf handling
+.It
+USB endpoint pipe handling
+.It
+Rx and Tx chain handling
+.It
+Generic handlers or support for several struct ifnet callbacks
+.It
+MII bus locking
+.It
+Interrupt handling
+.El
+.Pp
+.Nm
+provides many or all of the traditional
+.Dq softc
+members inside
+.Va struct usbnet ,
+which can be used directly as the device softc structure if
+no additional storage is required.
+A structure exists for receive and transmit chain management,
+.Va struct usbnet_chain ,
+that tracks the metadata for each transfer descriptor available,
+minimum of one each for Rx and Tx slot, and will be passed
+to the Rx and Tx callbacks.
+.Pp
+There is a
+.Va struct usbnet_ops
+structure that provides a number of optional and required callbacks
+that will be described below.
+.Pp
+For autoconfiguration the device attach routine is expected to
+ensure that this device's
+.Va struct usbnet
+is the first member of the device softc, if it can not be used directly
+as the device softc, as well as set up the necessary structure members,
+find end-points, find the Ethernet address if relevant, call
+.Fn usbnet_attach ,
+set up interface, Ethernet, and MII capabilities, and finally call
+.Fn usbnet_attach_ifp .
+The device detach routine should free any resources allocated
+by attach and then call
+.Fn usbnet_detach ,
+possibly directly using
+.Fn usbnet_detach
+as most consumers have no additional resources not owned and
+released by the
+.Nm
+framework itself.
+The device activate function should be set to
+.Fn usbnet_activate .
+.Pp
+To manage all Rx and Tx chains the
+.Dq uno_init
+callback of
+.Va struct usbnet_ops
+should perform any device specific initialization and then call
+.Fn usbnet_init_rx_tx
+which will allocate chains, set up and open pipes, and start the
+Rx transfers so that packets can arrived.
+These allocations and pipes can be closed and destroyed by calling
+.Fn usbnet_stop .
+Both of
+.Fn usbnet_init_rx_tx
+and
+.Fn usbnet_stop
+must be called with the
+.Nm
+lock held, see
+.Fn usbnet_lock
+and
+.Fn usbnet_unlock .
+See the
+.Sx RECEIVE AND SEND
+section for details on using the chains.
+.Pp
+The interface init, ioctl, start, and stop, routines are handled by the
+framework with callbacks for device-specific handling.
+For interface init (i.e., when bringing the interface up), the
+.Dq uno_init
+callback should perform any device specific initialization and then call
+.Fn usbnet_init_rx_tx
+to finalize Rx and Tx queue initialization.
+For interface ioctl, most of the handling is in the framework and the
+optional
+.Dq uno_ioctl
+callback should be used to program special settings
+like multicast filters or offload handling.
+If ioctl handling requires capturing device-specific ioctls then the
+.Dq uno_override_ioctl
+callback may be used instead to replace the framework's
Home |
Main Index |
Thread Index |
Old Index