vhci_rx.c (8c57a5e7b2820f349c95b8c8393fec1e0f4070d2) | vhci_rx.c (0775a9cbc694e8c7276688be3bbd2f386167ab54) |
---|---|
1/* 2 * Copyright (C) 2003-2008 Takahiro Hirofuchi 3 * 4 * This is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * --- 56 unchanged lines hidden (view full) --- 65 } 66 67 return urb; 68} 69 70static void vhci_recv_ret_submit(struct vhci_device *vdev, 71 struct usbip_header *pdu) 72{ | 1/* 2 * Copyright (C) 2003-2008 Takahiro Hirofuchi 3 * 4 * This is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * --- 56 unchanged lines hidden (view full) --- 65 } 66 67 return urb; 68} 69 70static void vhci_recv_ret_submit(struct vhci_device *vdev, 71 struct usbip_header *pdu) 72{ |
73 struct vhci_hcd *vhci = vdev_to_vhci(vdev); |
|
73 struct usbip_device *ud = &vdev->ud; 74 struct urb *urb; 75 unsigned long flags; 76 77 spin_lock_irqsave(&vdev->priv_lock, flags); 78 urb = pickup_urb_and_free_priv(vdev, pdu->base.seqnum); 79 spin_unlock_irqrestore(&vdev->priv_lock, flags); 80 81 if (!urb) { 82 pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum); 83 pr_info("max seqnum %d\n", | 74 struct usbip_device *ud = &vdev->ud; 75 struct urb *urb; 76 unsigned long flags; 77 78 spin_lock_irqsave(&vdev->priv_lock, flags); 79 urb = pickup_urb_and_free_priv(vdev, pdu->base.seqnum); 80 spin_unlock_irqrestore(&vdev->priv_lock, flags); 81 82 if (!urb) { 83 pr_err("cannot find a urb of seqnum %u\n", pdu->base.seqnum); 84 pr_info("max seqnum %d\n", |
84 atomic_read(&the_controller->seqnum)); | 85 atomic_read(&vhci->seqnum)); |
85 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP); 86 return; 87 } 88 89 /* unpack the pdu to a urb */ 90 usbip_pack_pdu(pdu, urb, USBIP_RET_SUBMIT, 0); 91 92 /* recv transfer buffer */ --- 7 unchanged lines hidden (view full) --- 100 /* restore the padding in iso packets */ 101 usbip_pad_iso(ud, urb); 102 103 if (usbip_dbg_flag_vhci_rx) 104 usbip_dump_urb(urb); 105 106 usbip_dbg_vhci_rx("now giveback urb %p\n", urb); 107 | 86 usbip_event_add(ud, VDEV_EVENT_ERROR_TCP); 87 return; 88 } 89 90 /* unpack the pdu to a urb */ 91 usbip_pack_pdu(pdu, urb, USBIP_RET_SUBMIT, 0); 92 93 /* recv transfer buffer */ --- 7 unchanged lines hidden (view full) --- 101 /* restore the padding in iso packets */ 102 usbip_pad_iso(ud, urb); 103 104 if (usbip_dbg_flag_vhci_rx) 105 usbip_dump_urb(urb); 106 107 usbip_dbg_vhci_rx("now giveback urb %p\n", urb); 108 |
108 spin_lock_irqsave(&the_controller->lock, flags); 109 usb_hcd_unlink_urb_from_ep(vhci_to_hcd(the_controller), urb); 110 spin_unlock_irqrestore(&the_controller->lock, flags); | 109 spin_lock_irqsave(&vhci->lock, flags); 110 usb_hcd_unlink_urb_from_ep(vhci_to_hcd(vhci), urb); 111 spin_unlock_irqrestore(&vhci->lock, flags); |
111 | 112 |
112 usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb, urb->status); | 113 usb_hcd_giveback_urb(vhci_to_hcd(vhci), urb, urb->status); |
113 114 usbip_dbg_vhci_rx("Leave\n"); 115} 116 117static struct vhci_unlink *dequeue_pending_unlink(struct vhci_device *vdev, 118 struct usbip_header *pdu) 119{ 120 struct vhci_unlink *unlink, *tmp; --- 16 unchanged lines hidden (view full) --- 137 spin_unlock_irqrestore(&vdev->priv_lock, flags); 138 139 return NULL; 140} 141 142static void vhci_recv_ret_unlink(struct vhci_device *vdev, 143 struct usbip_header *pdu) 144{ | 114 115 usbip_dbg_vhci_rx("Leave\n"); 116} 117 118static struct vhci_unlink *dequeue_pending_unlink(struct vhci_device *vdev, 119 struct usbip_header *pdu) 120{ 121 struct vhci_unlink *unlink, *tmp; --- 16 unchanged lines hidden (view full) --- 138 spin_unlock_irqrestore(&vdev->priv_lock, flags); 139 140 return NULL; 141} 142 143static void vhci_recv_ret_unlink(struct vhci_device *vdev, 144 struct usbip_header *pdu) 145{ |
146 struct vhci_hcd *vhci = vdev_to_vhci(vdev); |
|
145 struct vhci_unlink *unlink; 146 struct urb *urb; 147 unsigned long flags; 148 149 usbip_dump_header(pdu); 150 151 unlink = dequeue_pending_unlink(vdev, pdu); 152 if (!unlink) { --- 16 unchanged lines hidden (view full) --- 169 pdu->base.seqnum); 170 } else { 171 usbip_dbg_vhci_rx("now giveback urb %p\n", urb); 172 173 /* If unlink is successful, status is -ECONNRESET */ 174 urb->status = pdu->u.ret_unlink.status; 175 pr_info("urb->status %d\n", urb->status); 176 | 147 struct vhci_unlink *unlink; 148 struct urb *urb; 149 unsigned long flags; 150 151 usbip_dump_header(pdu); 152 153 unlink = dequeue_pending_unlink(vdev, pdu); 154 if (!unlink) { --- 16 unchanged lines hidden (view full) --- 171 pdu->base.seqnum); 172 } else { 173 usbip_dbg_vhci_rx("now giveback urb %p\n", urb); 174 175 /* If unlink is successful, status is -ECONNRESET */ 176 urb->status = pdu->u.ret_unlink.status; 177 pr_info("urb->status %d\n", urb->status); 178 |
177 spin_lock_irqsave(&the_controller->lock, flags); 178 usb_hcd_unlink_urb_from_ep(vhci_to_hcd(the_controller), urb); 179 spin_unlock_irqrestore(&the_controller->lock, flags); | 179 spin_lock_irqsave(&vhci->lock, flags); 180 usb_hcd_unlink_urb_from_ep(vhci_to_hcd(vhci), urb); 181 spin_unlock_irqrestore(&vhci->lock, flags); |
180 | 182 |
181 usb_hcd_giveback_urb(vhci_to_hcd(the_controller), urb, 182 urb->status); | 183 usb_hcd_giveback_urb(vhci_to_hcd(vhci), urb, urb->status); |
183 } 184 185 kfree(unlink); 186} 187 188static int vhci_priv_tx_empty(struct vhci_device *vdev) 189{ 190 int empty = 0; --- 82 unchanged lines hidden --- | 184 } 185 186 kfree(unlink); 187} 188 189static int vhci_priv_tx_empty(struct vhci_device *vdev) 190{ 191 int empty = 0; --- 82 unchanged lines hidden --- |