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()
621 struct vhci_device *vdev; in vhci_urb_dequeue() local
646 vdev = priv->vdev; in vhci_urb_dequeue()
648 if (!vdev->ud.tcp_socket) { in vhci_urb_dequeue()
650 spin_lock(&vdev->priv_lock); in vhci_urb_dequeue()
652 pr_info("device %p seems to be disconnected\n", vdev); in vhci_urb_dequeue()
657 spin_unlock(&vdev->priv_lock); in vhci_urb_dequeue()
677 spin_lock(&vdev->priv_lock); in vhci_urb_dequeue()
682 spin_unlock(&vdev->priv_lock); in vhci_urb_dequeue()
684 usbip_event_add(&vdev->ud, VDEV_EVENT_ERROR_MALLOC); in vhci_urb_dequeue()
694 pr_info("device %p seems to be still connected\n", vdev); in vhci_urb_dequeue()
698 list_add_tail(&unlink->list, &vdev->unlink_tx); in vhci_urb_dequeue()
699 wake_up(&vdev->waitq_tx); in vhci_urb_dequeue()
701 spin_unlock(&vdev->priv_lock); in vhci_urb_dequeue()
710 static void vhci_device_unlink_cleanup(struct vhci_device *vdev) in vhci_device_unlink_cleanup() argument
715 spin_lock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
717 list_for_each_entry_safe(unlink, tmp, &vdev->unlink_tx, list) { in vhci_device_unlink_cleanup()
723 while (!list_empty(&vdev->unlink_rx)) { in vhci_device_unlink_cleanup()
726 unlink = list_first_entry(&vdev->unlink_rx, struct vhci_unlink, in vhci_device_unlink_cleanup()
732 urb = pickup_urb_and_free_priv(vdev, unlink->unlink_seqnum); in vhci_device_unlink_cleanup()
747 spin_unlock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
754 spin_lock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
759 spin_unlock(&vdev->priv_lock); in vhci_device_unlink_cleanup()
770 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud); in vhci_shutdown_connection() local
779 if (vdev->ud.tcp_rx) { in vhci_shutdown_connection()
780 kthread_stop_put(vdev->ud.tcp_rx); in vhci_shutdown_connection()
781 vdev->ud.tcp_rx = NULL; in vhci_shutdown_connection()
783 if (vdev->ud.tcp_tx) { in vhci_shutdown_connection()
784 kthread_stop_put(vdev->ud.tcp_tx); in vhci_shutdown_connection()
785 vdev->ud.tcp_tx = NULL; in vhci_shutdown_connection()
790 if (vdev->ud.tcp_socket) { in vhci_shutdown_connection()
791 sockfd_put(vdev->ud.tcp_socket); in vhci_shutdown_connection()
792 vdev->ud.tcp_socket = NULL; in vhci_shutdown_connection()
796 vhci_device_unlink_cleanup(vdev); in vhci_shutdown_connection()
818 rh_port_disconnect(vdev->rhport); in vhci_shutdown_connection()
826 struct vhci_device *vdev = container_of(ud, struct vhci_device, ud); in vhci_device_reset() local
830 vdev->speed = 0; in vhci_device_reset()
831 vdev->devid = 0; in vhci_device_reset()
833 usb_put_dev(vdev->udev); in vhci_device_reset()
834 vdev->udev = NULL; in vhci_device_reset()
852 static void vhci_device_init(struct vhci_device *vdev) in vhci_device_init() argument
854 memset(vdev, 0, sizeof(*vdev)); in vhci_device_init()
856 vdev->ud.side = USBIP_VHCI; in vhci_device_init()
857 vdev->ud.status = VDEV_ST_NULL; in vhci_device_init()
858 spin_lock_init(&vdev->ud.lock); in vhci_device_init()
860 INIT_LIST_HEAD(&vdev->priv_rx); in vhci_device_init()
861 INIT_LIST_HEAD(&vdev->priv_tx); in vhci_device_init()
862 INIT_LIST_HEAD(&vdev->unlink_tx); in vhci_device_init()
863 INIT_LIST_HEAD(&vdev->unlink_rx); in vhci_device_init()
864 spin_lock_init(&vdev->priv_lock); in vhci_device_init()
866 init_waitqueue_head(&vdev->waitq_tx); in vhci_device_init()
868 vdev->ud.eh_ops.shutdown = vhci_shutdown_connection; in vhci_device_init()
869 vdev->ud.eh_ops.reset = vhci_device_reset; in vhci_device_init()
870 vdev->ud.eh_ops.unusable = vhci_device_unusable; in vhci_device_init()
872 usbip_start_eh(&vdev->ud); in vhci_device_init()
886 struct vhci_device *vdev = &vhci->vdev[rhport]; in vhci_start() local
888 vhci_device_init(vdev); in vhci_start()
889 vdev->rhport = rhport; in vhci_start()
920 struct vhci_device *vdev = &vhci->vdev[rhport]; in vhci_stop() local
922 usbip_event_add(&vdev->ud, VDEV_EVENT_REMOVED); in vhci_stop()
923 usbip_stop_eh(&vdev->ud); in vhci_stop()