Module Name: src Committed By: riastradh Date: Thu Mar 3 05:56:51 UTC 2022
Modified Files: src/sys/dev/usb: usbnet.h Log Message: usbnet: Update some comments. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 src/sys/dev/usb/usbnet.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/usbnet.h diff -u src/sys/dev/usb/usbnet.h:1.32 src/sys/dev/usb/usbnet.h:1.33 --- src/sys/dev/usb/usbnet.h:1.32 Thu Mar 3 05:56:36 2022 +++ src/sys/dev/usb/usbnet.h Thu Mar 3 05:56:51 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: usbnet.h,v 1.32 2022/03/03 05:56:36 riastradh Exp $ */ +/* $NetBSD: usbnet.h,v 1.33 2022/03/03 05:56:51 riastradh Exp $ */ /* * Copyright (c) 2019 Matthew R. Green @@ -58,19 +58,12 @@ * cases), but provides a normal handler with callback to handle * ENETRESET conditions that should be sufficient for most users * - start uses usbnet transmit prepare callback (uno_tx_prepare) - * - interface init and stop have helper functions - * - device specific init should use usbnet_init_rx_tx() to open pipes - * to the device and setup the rx/tx chains for use after any device - * specific setup - * - usbnet_stop() must be called with the un_lock held, and will - * call the device-specific usbnet stop callback, which enables the - * standard init calls stop idiom. * - interrupt handling: - * - for rx, usbnet_init_rx_tx() will enable the receive pipes and + * - for rx, usbnet will enable the receive pipes and * call the rx_loop callback to handle device specific processing of * packets, which can use usbnet_enqueue() to provide data to the * higher layers - * - for tx, usbnet_start (if_start) will pull entries out of the + * - for tx, usbnet will pull entries out of the * transmit queue and use the transmit prepare callback (uno_tx_prepare) * for the given mbuf. the usb callback will use usbnet_txeof() for * the transmit completion function (internal to usbnet) @@ -175,8 +168,7 @@ typedef void (*usbnet_intr_cb)(struct us * Note that the IFNET_LOCK **may not be held** for the ioctl commands * SIOCADDMULTI/SIOCDELMULTI. These commands are only passed * explicitly to uno_override_ioctl; for all other devices, they are - * handled inside usbnet by scheduling a task to asynchronously call - * uno_mcast with IFNET_LOCK held. + * handled by uno_mcast (also without IFNET_LOCK). */ struct usbnet_ops { usbnet_stop_cb uno_stop; /* C */ @@ -297,10 +289,20 @@ bool usbnet_isdying(struct usbnet *); /* * Endpoint / rx/tx chain management: * - * usbnet_attach() initialises usbnet and allocates rx and tx chains - * usbnet_init_rx_tx() open pipes, initialises the rx/tx chains for use - * usbnet_stop() stops pipes, cleans (not frees) rx/tx chains, locked - * version assumes un_lock is held + * 1. usbnet_attach() initialises usbnet and allocates rx and tx chains + * + * 2. On if_init, usbnet: + * - calls uno_init to initialize hardware + * - open pipes + * - initialises the rx/tx chains for use + * - calls uno_mcast to program hardware multicast filter + * + * 3. On if_stop, usbnet: + * - stops pipes + * - calls uno_stop to stop hardware (unless we're detaching anyway) + * - cleans (not frees) rx/tx chains + * - closes pipes + * * usbnet_detach() frees the rx/tx chains * * Setup un_ed[] with valid end points before calling usbnet_attach().