Lines Matching refs:vdev

283 			switch (dum->vdev[rhport].speed) {  in vhci_hub_control()
339 if (dum->vdev[rhport].ud.status == in vhci_hub_control()
344 dum->vdev[rhport].ud.status); in vhci_hub_control()
419 if (the_controller->vdev[i].udev == udev) in get_vdev()
427 struct vhci_device *vdev = get_vdev(urb->dev); in vhci_tx_urb() local
430 if (!vdev) { in vhci_tx_urb()
437 usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_MALLOC); in vhci_tx_urb()
441 spin_lock(&vdev->priv_lock); in vhci_tx_urb()
447 priv->vdev = vdev; in vhci_tx_urb()
452 list_add_tail(&priv->list, &vdev->priv_tx); in vhci_tx_urb()
454 wake_up(&vdev->waitq_tx); in vhci_tx_urb()
455 spin_unlock(&vdev->priv_lock); in vhci_tx_urb()
463 struct vhci_device *vdev; in vhci_urb_enqueue() local
479 vdev = port_to_vdev(urb->dev->portnum-1); in vhci_urb_enqueue()
482 spin_lock(&vdev->ud.lock); in vhci_urb_enqueue()
483 if (vdev->ud.status == VDEV_ST_NULL || in vhci_urb_enqueue()
484 vdev->ud.status == VDEV_ST_ERROR) { in vhci_urb_enqueue()
485 dev_err(dev, "enqueue for inactive port %d\n", vdev->rhport); in vhci_urb_enqueue()
486 spin_unlock(&vdev->ud.lock); in vhci_urb_enqueue()
490 spin_unlock(&vdev->ud.lock); in vhci_urb_enqueue()
520 ctrlreq->wValue, vdev->rhport); in vhci_urb_enqueue()
522 usb_put_dev(vdev->udev); in vhci_urb_enqueue()
523 vdev->udev = usb_get_dev(urb->dev); in vhci_urb_enqueue()
525 spin_lock(&vdev->ud.lock); in vhci_urb_enqueue()
526 vdev->ud.status = VDEV_ST_USED; in vhci_urb_enqueue()
527 spin_unlock(&vdev->ud.lock); in vhci_urb_enqueue()
542 usb_put_dev(vdev->udev); in vhci_urb_enqueue()
543 vdev->udev = usb_get_dev(urb->dev); in vhci_urb_enqueue()
623 struct vhci_device *vdev; in vhci_urb_dequeue() local
648 vdev = priv->vdev; in vhci_urb_dequeue()
650 if (!vdev->ud.tcp_socket) { in vhci_urb_dequeue()
652 spin_lock(&vdev->priv_lock); in vhci_urb_dequeue()
654 pr_info("device %p seems to be disconnected\n", vdev); in vhci_urb_dequeue()
659 spin_unlock(&vdev->priv_lock); in vhci_urb_dequeue()
679 spin_lock(&vdev->priv_lock); in vhci_urb_dequeue()
684 spin_unlock(&vdev->priv_lock); in vhci_urb_dequeue()
686 usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_MALLOC); in vhci_urb_dequeue()
696 pr_info("device %p seems to be still connected\n", vdev); in vhci_urb_dequeue()
700 list_add_tail(&unlink->list, &vdev->unlink_tx); in vhci_urb_dequeue()
701 wake_up(&vdev->waitq_tx); in vhci_urb_dequeue()
703 spin_unlock(&vdev->priv_lock); in vhci_urb_dequeue()
712 static void vhci_device_unlink_cleanup(struct vhci_device *vdev) in vhci_device_unlink_cleanup() argument
717 spin_lock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
719 list_for_each_entry_safe(unlink, tmp, &vdev->unlink_tx, list) { in vhci_device_unlink_cleanup()
725 while (!list_empty(&vdev->unlink_rx)) { in vhci_device_unlink_cleanup()
728 unlink = list_first_entry(&vdev->unlink_rx, struct vhci_unlink, in vhci_device_unlink_cleanup()
734 urb = pickup_urb_and_free_priv(vdev, unlink->unlink_seqnum); in vhci_device_unlink_cleanup()
749 spin_unlock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
756 spin_lock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
761 spin_unlock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
772 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud); in vhci_shutdown_connection() local
781 if (vdev->ud.tcp_rx) { in vhci_shutdown_connection()
782 kthread_stop_put(vdev->ud.tcp_rx); in vhci_shutdown_connection()
783 vdev->ud.tcp_rx = NULL; in vhci_shutdown_connection()
785 if (vdev->ud.tcp_tx) { in vhci_shutdown_connection()
786 kthread_stop_put(vdev->ud.tcp_tx); in vhci_shutdown_connection()
787 vdev->ud.tcp_tx = NULL; in vhci_shutdown_connection()
792 if (vdev->ud.tcp_socket) { in vhci_shutdown_connection()
793 sockfd_put(vdev->ud.tcp_socket); in vhci_shutdown_connection()
794 vdev->ud.tcp_socket = NULL; in vhci_shutdown_connection()
798 vhci_device_unlink_cleanup(vdev); in vhci_shutdown_connection()
820 rh_port_disconnect(vdev->rhport); in vhci_shutdown_connection()
828 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud); in vhci_device_reset() local
832 vdev->speed = 0; in vhci_device_reset()
833 vdev->devid = 0; in vhci_device_reset()
835 usb_put_dev(vdev->udev); in vhci_device_reset()
836 vdev->udev = NULL; in vhci_device_reset()
854 static void vhci_device_init(struct vhci_device *vdev) in vhci_device_init() argument
856 memset(vdev, 0, sizeof(*vdev)); in vhci_device_init()
858 vdev->ud.side = USBIP_VHCI; in vhci_device_init()
859 vdev->ud.status = VDEV_ST_NULL; in vhci_device_init()
860 spin_lock_init(&vdev->ud.lock); in vhci_device_init()
862 INIT_LIST_HEAD(&vdev->priv_rx); in vhci_device_init()
863 INIT_LIST_HEAD(&vdev->priv_tx); in vhci_device_init()
864 INIT_LIST_HEAD(&vdev->unlink_tx); in vhci_device_init()
865 INIT_LIST_HEAD(&vdev->unlink_rx); in vhci_device_init()
866 spin_lock_init(&vdev->priv_lock); in vhci_device_init()
868 init_waitqueue_head(&vdev->waitq_tx); in vhci_device_init()
870 vdev->ud.eh_ops.shutdown = vhci_shutdown_connection; in vhci_device_init()
871 vdev->ud.eh_ops.reset = vhci_device_reset; in vhci_device_init()
872 vdev->ud.eh_ops.unusable = vhci_device_unusable; in vhci_device_init()
874 usbip_start_eh(&vdev->ud); in vhci_device_init()
888 struct vhci_device *vdev = &vhci->vdev[rhport]; in vhci_start() local
890 vhci_device_init(vdev); in vhci_start()
891 vdev->rhport = rhport; in vhci_start()
922 struct vhci_device *vdev = &vhci->vdev[rhport]; in vhci_stop() local
924 usbip_event_add(&vdev->ud, VDEV_EVENT_REMOVED); in vhci_stop()
925 usbip_stop_eh(&vdev->ud); in vhci_stop()