FreeBSD kernel usb device Code
|
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/eventhandler.h>
#include <sys/systm.h>
#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/kernel.h>
#include <sys/bus.h>
#include <sys/module.h>
#include <sys/sockio.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/condvar.h>
#include <sys/sysctl.h>
#include <sys/malloc.h>
#include <sys/taskqueue.h>
#include <net/if.h>
#include <net/if_var.h>
#include <machine/bus.h>
#include <net/if_types.h>
#include <net/netisr.h>
#include <net/bpf.h>
#include <net/ethernet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip6.h>
#include <netinet/udp.h>
#include <net80211/ieee80211_ioctl.h>
#include <dev/usb/usb.h>
#include <dev/usb/usbdi.h>
#include <dev/usb/usbdi_util.h>
#include <dev/usb/usb_cdc.h>
#include "usbdevs.h"
#include <dev/usb/usb_debug.h>
#include <dev/usb/usb_process.h>
#include <dev/usb/usb_msctest.h>
#include <dev/usb/serial/usb_serial.h>
#include <dev/usb/net/if_usievar.h>
Go to the source code of this file.
Macros | |
#define | USB_DEBUG_VAR usie_debug |
#define | USIE_DEV(v, d) |
Functions | |
__FBSDID ("$FreeBSD$") | |
static void | usie_free_softc (struct usie_softc *) |
static void | usie_free (struct ucom_softc *) |
static void | usie_uc_update_line_state (struct ucom_softc *, uint8_t) |
static void | usie_uc_cfg_get_status (struct ucom_softc *, uint8_t *, uint8_t *) |
static void | usie_uc_cfg_set_dtr (struct ucom_softc *, uint8_t) |
static void | usie_uc_cfg_set_rts (struct ucom_softc *, uint8_t) |
static void | usie_uc_cfg_open (struct ucom_softc *) |
static void | usie_uc_cfg_close (struct ucom_softc *) |
static void | usie_uc_start_read (struct ucom_softc *) |
static void | usie_uc_stop_read (struct ucom_softc *) |
static void | usie_uc_start_write (struct ucom_softc *) |
static void | usie_uc_stop_write (struct ucom_softc *) |
static void | usie_if_sync_to (void *) |
static void | usie_if_sync_cb (void *, int) |
static void | usie_if_status_cb (void *, int) |
static void | usie_if_start (struct ifnet *) |
static int | usie_if_output (struct ifnet *, struct mbuf *, const struct sockaddr *, struct route *) |
static void | usie_if_init (void *) |
static void | usie_if_stop (struct usie_softc *) |
static int | usie_if_ioctl (struct ifnet *, u_long, caddr_t) |
static int | usie_do_request (struct usie_softc *, struct usb_device_request *, void *) |
static int | usie_if_cmd (struct usie_softc *, uint8_t) |
static void | usie_cns_req (struct usie_softc *, uint32_t, uint16_t) |
static void | usie_cns_rsp (struct usie_softc *, struct usie_cns *) |
static void | usie_hip_rsp (struct usie_softc *, uint8_t *, uint32_t) |
static int | usie_driver_loaded (struct module *, int, void *) |
DRIVER_MODULE (usie, uhub, usie_driver, usie_devclass, usie_driver_loaded, 0) | |
MODULE_DEPEND (usie, ucom, 1, 1, 1) | |
MODULE_DEPEND (usie, usb, 1, 1, 1) | |
MODULE_VERSION (usie, 1) | |
USB_PNP_HOST_INFO (usie_devs) | |
static void | usie_autoinst (void *arg, struct usb_device *udev, struct usb_attach_arg *uaa) |
static int | usie_probe (device_t self) |
static int | usie_attach (device_t self) |
static int | usie_detach (device_t self) |
UCOM_UNLOAD_DRAIN (usie) | |
static void | usie_uc_rx_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | usie_uc_tx_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | usie_uc_status_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | usie_if_rx_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | usie_if_tx_callback (struct usb_xfer *xfer, usb_error_t error) |
static void | usie_if_status_callback (struct usb_xfer *xfer, usb_error_t error) |
Variables | |
static const STRUCT_USB_HOST_ID | usie_devs [] |
static device_probe_t | usie_probe |
static device_attach_t | usie_attach |
static device_detach_t | usie_detach |
static usb_callback_t | usie_uc_tx_callback |
static usb_callback_t | usie_uc_rx_callback |
static usb_callback_t | usie_uc_status_callback |
static usb_callback_t | usie_if_tx_callback |
static usb_callback_t | usie_if_rx_callback |
static usb_callback_t | usie_if_status_callback |
static const struct usb_config | usie_uc_config [USIE_UC_N_XFER] |
static const struct usb_config | usie_if_config [USIE_IF_N_XFER] |
static device_method_t | usie_methods [] |
static driver_t | usie_driver |
static devclass_t | usie_devclass |
static eventhandler_tag | usie_etag |
static const struct ucom_callback | usie_uc_callback |
#define USIE_DEV | ( | v, | |
d | |||
) |
__FBSDID | ( | "$FreeBSD$" | ) |
DRIVER_MODULE | ( | usie | , |
uhub | , | ||
usie_driver | , | ||
usie_devclass | , | ||
usie_driver_loaded | , | ||
0 | |||
) |
MODULE_DEPEND | ( | usie | , |
ucom | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_DEPEND | ( | usie | , |
usb | , | ||
1 | , | ||
1 | , | ||
1 | |||
) |
MODULE_VERSION | ( | usie | , |
1 | |||
) |
UCOM_UNLOAD_DRAIN | ( | usie | ) |
USB_PNP_HOST_INFO | ( | usie_devs | ) |
|
static |
Definition at line 295 of file if_usie.c.
References usbd_lookup_info::bIfaceIndex, usb_attach_arg::device, device_set_usb_desc(), DPRINTF, id, usb_attach_arg::info, req, usie_softc::sc_dev, usie_softc::sc_if_ifnum, usie_softc::sc_if_status_task, usie_softc::sc_if_sync_ch, usie_softc::sc_if_sync_task, usie_softc::sc_if_xfer, usie_softc::sc_ifp, usie_softc::sc_mtx, usie_softc::sc_nucom, usie_softc::sc_super_ucom, usie_softc::sc_uc_ifnum, usie_softc::sc_uc_xfer, usie_softc::sc_ucom, usie_softc::sc_udev, start, ucom_attach(), ucom_ref(), UICLASS_VENDOR, usb_callout_init_mtx, USB_POWER_MODE_ON, USB_POWER_MODE_SAVE, usbd_errstr(), usbd_get_iface(), usbd_get_interface_descriptor(), usbd_set_parent_iface(), usbd_set_power_mode(), usbd_transfer_setup(), usbd_xfer_set_stall(), USETW, usie_detach, usie_do_request(), USIE_FW_ATTR, USIE_FW_DHCP, usie_if_config, usie_if_init(), usie_if_ioctl(), USIE_IF_N_XFER, usie_if_output(), usie_if_start(), usie_if_status_cb(), usie_if_sync_cb(), USIE_IFACE_MAX, USIE_MTU_MAX, USIE_PM_AUTO, USIE_POWER, usie_uc_callback, usie_uc_config, USIE_UC_N_XFER, USIE_UCOM_MAX, UT_READ_VENDOR_DEVICE, and UT_WRITE_VENDOR_DEVICE.
|
static |
Definition at line 235 of file if_usie.c.
References usb_attach_arg::dev_state, DPRINTF, id, usb_interface::idesc, req, UAA_DEV_EJECTING, UAA_DEV_READY, UF_DEVICE_REMOTE_WAKEUP, UHF_PORT_CONNECTION, UICLASS_MASS, UR_SET_INTERFACE, usb_get_manufacturer(), usb_get_product(), usbd_do_request_flags(), usbd_get_iface(), usbd_lookup_id_by_uaa(), USETW, usie_devs, and UT_VENDOR.
Referenced by usie_driver_loaded().
|
static |
Definition at line 1389 of file if_usie.c.
References DPRINTF, usie_hip::id, usie_cns::id, usie_hip::len, usie_cns::len, usie_cns::obj, usie_cns::op, param, usie_hip::param, usie_cns::rsv0, usie_cns::rsv1, usie_softc::sc_ifp, usie_softc::sc_net, usie_softc::sc_uc_xfer, usbd_transfer_start(), usbd_xfer_get_priv(), usbd_xfer_set_priv(), USIE_CNS_ID_INIT, USIE_CNS_OB_LINK_UPDATE, USIE_CNS_OB_PROF_WRITE, USIE_CNS_OB_RSSI, USIE_CNS_OP_REQ, USIE_CNS_OP_SET, USIE_HIP_CNS2M, USIE_HIP_FRM_CHR, USIE_HIP_IF, USIE_HIPCNS_MIN, and USIE_UC_TX.
Referenced by usie_if_init(), usie_if_ioctl(), usie_if_status_cb(), and usie_if_stop().
|
static |
Definition at line 1471 of file if_usie.c.
References DPRINTF, usie_cns::id, usie_cns::obj, usie_softc::sc_dev, usie_softc::sc_ifp, usie_softc::sc_rssi, USIE_CNS_ID_INIT, USIE_CNS_ID_STOP, USIE_CNS_OB_LINK_UPDATE, USIE_CNS_OB_PDP_READ, USIE_CNS_OB_PROF_WRITE, USIE_CNS_OB_RSSI, and usie_if_sync_to().
Referenced by usie_hip_rsp().
|
static |
Definition at line 475 of file if_usie.c.
References usie_softc::sc_if_xfer, usie_softc::sc_ifp, usie_softc::sc_nucom, usie_softc::sc_super_ucom, usie_softc::sc_uc_xfer, usie_softc::sc_ucom, ucom_detach(), usbd_transfer_unsetup(), usie_free_softc(), USIE_IF_N_XFER, usie_if_stop(), USIE_UC_N_XFER, and USIE_UCOM_MAX.
|
static |
Definition at line 1345 of file if_usie.c.
References data, DPRINTF, req, usie_softc::sc_mtx, usie_softc::sc_udev, USB_MS_TO_TICKS, usb_pause_mtx(), usbd_do_request, and usbd_errstr().
Referenced by usie_attach(), usie_if_cmd(), and usie_uc_update_line_state().
|
static |
Definition at line 1601 of file if_usie.c.
References usie_autoinst(), and usie_etag.
|
static |
Definition at line 518 of file if_usie.c.
References ucom_softc::sc_parent, and usie_free_softc().
|
static |
Definition at line 509 of file if_usie.c.
References usie_softc::sc_mtx, usie_softc::sc_super_ucom, and ucom_unref().
Referenced by usie_detach(), and usie_free().
|
static |
Definition at line 1512 of file if_usie.c.
References __aligned, DPRINTF, usie_hip::id, usie_cns::id, len, usie_hip::len, usie_cns::len, usie_cns::obj, usie_cns::op, pad, usie_hip::param, usie_cns::rsv0, usie_cns::rsv1, USIE_CNS_OP_ERR, usie_cns_rsp(), USIE_HIP_CNS2H, USIE_HIP_ESC_CHR, USIE_HIP_FRM_CHR, USIE_HIP_MASK, USIE_HIP_PAD, USIE_HIPCNS_MAX, and USIE_HIPCNS_MIN.
Referenced by usie_uc_rx_callback().
|
static |
Definition at line 1368 of file if_usie.c.
References DPRINTF, usie_hip::id, usie_hip::len, usie_hip::param, req, usie_softc::sc_if_ifnum, UCDC_SEND_ENCAPSULATED_COMMAND, USETW, usie_do_request(), and UT_WRITE_CLASS_INTERFACE.
Referenced by usie_if_status_cb(), usie_if_stop(), and usie_if_sync_cb().
|
static |
Definition at line 1231 of file if_usie.c.
References usie_desc::desc_type, DPRINTF, usie_desc::hip, usie_hip::id, usie_hip::param, usie_softc::sc_if_xfer, usie_softc::sc_ifp, usie_softc::sc_mtx, usie_softc::sc_txd, usie_softc::sc_uc_xfer, usbd_transfer_start(), usbd_xfer_set_stall(), USIE_CNS_ID_INIT, USIE_CNS_OB_LINK_UPDATE, usie_cns_req(), USIE_HIP_CTX, USIE_HIP_IF, USIE_IF_N_XFER, USIE_IF_RX, USIE_IF_STATUS, USIE_IP_TX, and USIE_UC_RX.
Referenced by usie_attach(), and usie_if_ioctl().
|
static |
Definition at line 1281 of file if_usie.c.
References data, DPRINTF, usie_softc::sc_dev, usie_softc::sc_mtx, usie_softc::sc_rssi, USIE_CNS_ID_RSSI, USIE_CNS_OB_RSSI, usie_cns_req(), usie_if_init(), and usie_if_stop().
Referenced by usie_attach().
|
static |
Definition at line 1194 of file if_usie.c.
References DPRINTF.
Referenced by usie_attach().
|
static |
Definition at line 772 of file if_usie.c.
References usie_desc::desc_type, DPRINTF, error, usie_desc::ethhdr, usie_desc::hip, usie_hip::id, len, usie_hip::len, pad, usie_softc::sc_ifp, usie_softc::sc_mtx, usie_softc::sc_rxm, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_errstr(), usbd_transfer_submit(), usbd_xfer_set_frame_data(), usbd_xfer_set_frames(), usbd_xfer_set_stall(), usbd_xfer_softc(), usbd_xfer_status(), USIE_HIP_IP, USIE_HIP_IP_LEN_MASK, USIE_HIP_MASK, USIE_HIP_PAD, USIE_IP_RX, USIE_RXSZ_MAX, and USIE_TYPE_MASK.
|
static |
Definition at line 1178 of file if_usie.c.
References DPRINTF, usie_softc::sc_if_xfer, usie_softc::sc_mtx, usbd_transfer_start(), and USIE_IF_TX.
Referenced by usie_attach().
|
static |
Definition at line 994 of file if_usie.c.
References usb_cdc_notification::bNotification, DPRINTF, error, usie_softc::sc_if_status_task, UCDC_N_RESPONSE_AVAILABLE, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_copy_out(), usbd_errstr(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_max_len(), usbd_xfer_set_frame_len(), usbd_xfer_set_stall(), usbd_xfer_softc(), and usbd_xfer_status().
|
static |
Definition at line 1065 of file if_usie.c.
References usie_net_info::addr_len, usie_lsi::area, usie_lsi::dns1_addr, usie_net_info::dns1_addr, usie_lsi::dns2_addr, usie_net_info::dns2_addr, DPRINTF, usie_lsi::gw_addr, usie_net_info::gw_addr, usie_desc::hip, usie_hip::id, usie_hip::len, usie_lsi::len, pad, usie_hip::param, usie_lsi::pdp_addr, usie_net_info::pdp_addr, usie_lsi::pdp_addr_len, usie_lsi::proto, req, usie_softc::sc_dev, usie_softc::sc_if_ifnum, usie_softc::sc_if_sync_ch, usie_softc::sc_ifp, usie_softc::sc_mtx, usie_softc::sc_net, usie_softc::sc_txd, usie_softc::sc_udev, usie_lsi::state, UCDC_GET_ENCAPSULATED_RESPONSE, usb_callout_stop, USB_DEFAULT_TIMEOUT, USB_MS_TO_TICKS, usb_pause_mtx(), USB_SHORT_XFER_OK, usbd_do_request_flags(), usbd_errstr(), USETW, USIE_CNS_ID_RSSI, USIE_CNS_OB_RSSI, usie_cns_req(), USIE_HIP_MASK, USIE_HIP_PAD, USIE_HIP_RCGI, USIE_HIP_RESTR, USIE_HIP_SYNC2H, USIE_HIP_SYNC2M, USIE_HIP_UMTS, usie_if_cmd(), USIE_LSI_AREA_NO, USIE_LSI_AREA_NODATA, USIE_LSI_STATE_IDLE, USIE_LSI_UMTS, and UT_READ_CLASS_INTERFACE.
Referenced by usie_attach().
|
static |
Definition at line 1261 of file if_usie.c.
References usie_softc::sc_if_sync_ch, usie_softc::sc_if_xfer, usie_softc::sc_mtx, usb_callout_drain, usbd_transfer_stop(), USIE_CNS_ID_STOP, USIE_CNS_OB_LINK_UPDATE, usie_cns_req(), USIE_HIP_DOWN, usie_if_cmd(), USIE_IF_RX, USIE_IF_STATUS, and USIE_IF_TX.
Referenced by usie_detach(), and usie_if_ioctl().
|
static |
Definition at line 1049 of file if_usie.c.
References usie_softc::sc_if_sync_ch, usie_softc::sc_mtx, usb_callout_reset, USIE_HIP_SYNC2M, usie_if_cmd(), and usie_if_sync_to().
Referenced by usie_attach().
|
static |
Definition at line 1041 of file if_usie.c.
References usie_softc::sc_if_sync_task.
Referenced by usie_cns_rsp(), and usie_if_sync_cb().
|
static |
Definition at line 930 of file if_usie.c.
References DPRINTF, error, usie_desc::hip, usie_hip::len, usie_softc::sc_ifp, usie_softc::sc_txd, size, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_copy_in(), usbd_errstr(), usbd_m_copy_in(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_set_frame_len(), usbd_xfer_set_stall(), and usbd_xfer_softc().
|
static |
Definition at line 278 of file if_usie.c.
References usbd_lookup_info::bConfigIndex, usbd_lookup_info::bIfaceIndex, usbd_lookup_info::bInterfaceClass, usb_attach_arg::info, UICLASS_VENDOR, usb_attach_arg::usb_mode, USB_MODE_HOST, usbd_lookup_id_by_uaa(), USIE_CNFG_INDEX, usie_devs, and USIE_IFACE_INDEX.
|
static |
Definition at line 581 of file if_usie.c.
References ucom_softc::sc_parent, ucom_softc::sc_subunit, usie_softc::sc_uc_xfer, usbd_transfer_stop(), and USIE_UC_STATUS.
|
static |
Definition at line 544 of file if_usie.c.
References usie_softc::sc_lsr, usie_softc::sc_msr, and ucom_softc::sc_parent.
|
static |
Definition at line 571 of file if_usie.c.
References ucom_softc::sc_parent, ucom_softc::sc_subunit, usie_softc::sc_uc_xfer, usbd_transfer_start(), and USIE_UC_STATUS.
|
static |
Definition at line 553 of file if_usie.c.
References USIE_LS_DTR, and usie_uc_update_line_state().
|
static |
Definition at line 562 of file if_usie.c.
References USIE_LS_RTS, and usie_uc_update_line_state().
|
static |
Definition at line 621 of file if_usie.c.
References DPRINTF, error, ucom_softc::sc_parent, usie_softc::sc_ucom, ucom_put_data(), USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_copy_out(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_max_len(), usbd_xfer_set_frame_len(), usbd_xfer_set_stall(), usbd_xfer_softc(), usbd_xfer_status(), USIE_BUFSIZE, USIE_HIP_FRM_CHR, usie_hip_rsp(), and USIE_HIPCNS_MIN.
|
static |
Definition at line 589 of file if_usie.c.
References ucom_softc::sc_parent, ucom_softc::sc_subunit, usie_softc::sc_uc_xfer, usbd_transfer_start(), and USIE_UC_RX.
|
static |
Definition at line 605 of file if_usie.c.
References ucom_softc::sc_parent, ucom_softc::sc_subunit, usie_softc::sc_uc_xfer, usbd_transfer_start(), and USIE_UC_TX.
|
static |
Definition at line 715 of file if_usie.c.
References DPRINTF, error, param, req, usie_softc::sc_lsr, usie_softc::sc_msr, ucom_softc::sc_parent, USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_copy_out(), usbd_errstr(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_max_len(), usbd_xfer_set_frame_len(), usbd_xfer_set_stall(), usbd_xfer_softc(), usbd_xfer_status(), USIE_CTS, USIE_DCD, USIE_DSR, USIE_DTR, USIE_RI, and USIE_RTS.
|
static |
Definition at line 597 of file if_usie.c.
References ucom_softc::sc_parent, ucom_softc::sc_subunit, usie_softc::sc_uc_xfer, usbd_transfer_stop(), and USIE_UC_RX.
|
static |
Definition at line 613 of file if_usie.c.
References ucom_softc::sc_parent, ucom_softc::sc_subunit, usie_softc::sc_uc_xfer, usbd_transfer_stop(), and USIE_UC_TX.
|
static |
Definition at line 675 of file if_usie.c.
References error, ucom_get_data(), USB_ERR_CANCELLED, USB_GET_STATE, USB_ST_SETUP, USB_ST_TRANSFERRED, usbd_m_copy_in(), usbd_transfer_submit(), usbd_xfer_get_frame(), usbd_xfer_get_priv(), usbd_xfer_set_frame_len(), usbd_xfer_set_priv(), usbd_xfer_set_stall(), usbd_xfer_softc(), and USIE_BUFSIZE.
|
static |
Definition at line 524 of file if_usie.c.
References DPRINTF, req, ucom_softc::sc_parent, ucom_softc::sc_subunit, usie_softc::sc_uc_ifnum, usie_softc::sc_uc_xfer, USETW, usie_do_request(), USIE_LINK_STATE, USIE_UC_STATUS, and UT_WRITE_CLASS_INTERFACE.
Referenced by usie_uc_cfg_set_dtr(), and usie_uc_cfg_set_rts().
|
static |
Definition at line 105 of file if_usie.c.
Referenced by usie_attach().
|
static |
Definition at line 94 of file if_usie.c.
Referenced by usie_autoinst(), and usie_probe().
|
static |
|
static |
Definition at line 213 of file if_usie.c.
Referenced by usie_driver_loaded().
|
static |
Definition at line 172 of file if_usie.c.
Referenced by usie_attach().
|
static |
|
static |
|
static |
|
static |
|
static |
Definition at line 221 of file if_usie.c.
Referenced by usie_attach().
|
static |
Definition at line 145 of file if_usie.c.
Referenced by usie_attach().
|
static |
|
static |
|
static |