Lines Matching +full:recv +full:- +full:empty

1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2003-2008 Takahiro Hirofuchi
12 /* get URB from transmitted urb queue. caller must hold vdev->priv_lock */
19 list_for_each_entry_safe(priv, tmp, &vdev->priv_rx, list) { in pickup_urb_and_free_priv()
20 if (priv->seqnum != seqnum) in pickup_urb_and_free_priv()
23 urb = priv->urb; in pickup_urb_and_free_priv()
24 status = urb->status; in pickup_urb_and_free_priv()
29 case -ENOENT: in pickup_urb_and_free_priv()
31 case -ECONNRESET: in pickup_urb_and_free_priv()
32 dev_dbg(&urb->dev->dev, in pickup_urb_and_free_priv()
34 seqnum, status == -ENOENT ? "" : "a"); in pickup_urb_and_free_priv()
36 case -EINPROGRESS: in pickup_urb_and_free_priv()
40 dev_dbg(&urb->dev->dev, in pickup_urb_and_free_priv()
45 list_del(&priv->list); in pickup_urb_and_free_priv()
47 urb->hcpriv = NULL; in pickup_urb_and_free_priv()
59 struct vhci *vhci = vhci_hcd->vhci; in vhci_recv_ret_submit()
60 struct usbip_device *ud = &vdev->ud; in vhci_recv_ret_submit()
64 spin_lock_irqsave(&vdev->priv_lock, flags); in vhci_recv_ret_submit()
65 urb = pickup_urb_and_free_priv(vdev, pdu->base.seqnum); in vhci_recv_ret_submit()
66 spin_unlock_irqrestore(&vdev->priv_lock, flags); in vhci_recv_ret_submit()
70 pdu->base.seqnum, in vhci_recv_ret_submit()
71 atomic_read(&vhci_hcd->seqnum)); in vhci_recv_ret_submit()
79 /* recv transfer buffer */ in vhci_recv_ret_submit()
81 urb->status = -EPROTO; in vhci_recv_ret_submit()
85 /* recv iso_packet_descriptor */ in vhci_recv_ret_submit()
87 urb->status = -EPROTO; in vhci_recv_ret_submit()
98 if (urb->num_sgs) in vhci_recv_ret_submit()
99 urb->transfer_flags &= ~URB_DMA_MAP_SG; in vhci_recv_ret_submit()
101 usbip_dbg_vhci_rx("now giveback urb %u\n", pdu->base.seqnum); in vhci_recv_ret_submit()
103 spin_lock_irqsave(&vhci->lock, flags); in vhci_recv_ret_submit()
105 spin_unlock_irqrestore(&vhci->lock, flags); in vhci_recv_ret_submit()
107 usb_hcd_giveback_urb(vhci_hcd_to_hcd(vhci_hcd), urb, urb->status); in vhci_recv_ret_submit()
118 spin_lock_irqsave(&vdev->priv_lock, flags); in dequeue_pending_unlink()
120 list_for_each_entry_safe(unlink, tmp, &vdev->unlink_rx, list) { in dequeue_pending_unlink()
121 pr_info("unlink->seqnum %lu\n", unlink->seqnum); in dequeue_pending_unlink()
122 if (unlink->seqnum == pdu->base.seqnum) { in dequeue_pending_unlink()
124 unlink->seqnum); in dequeue_pending_unlink()
125 list_del(&unlink->list); in dequeue_pending_unlink()
127 spin_unlock_irqrestore(&vdev->priv_lock, flags); in dequeue_pending_unlink()
132 spin_unlock_irqrestore(&vdev->priv_lock, flags); in dequeue_pending_unlink()
141 struct vhci *vhci = vhci_hcd->vhci; in vhci_recv_ret_unlink()
151 pdu->base.seqnum); in vhci_recv_ret_unlink()
155 spin_lock_irqsave(&vdev->priv_lock, flags); in vhci_recv_ret_unlink()
156 urb = pickup_urb_and_free_priv(vdev, unlink->unlink_seqnum); in vhci_recv_ret_unlink()
157 spin_unlock_irqrestore(&vdev->priv_lock, flags); in vhci_recv_ret_unlink()
166 pdu->base.seqnum); in vhci_recv_ret_unlink()
168 usbip_dbg_vhci_rx("now giveback urb %d\n", pdu->base.seqnum); in vhci_recv_ret_unlink()
170 /* If unlink is successful, status is -ECONNRESET */ in vhci_recv_ret_unlink()
171 urb->status = pdu->u.ret_unlink.status; in vhci_recv_ret_unlink()
172 pr_info("urb->status %d\n", urb->status); in vhci_recv_ret_unlink()
174 spin_lock_irqsave(&vhci->lock, flags); in vhci_recv_ret_unlink()
176 spin_unlock_irqrestore(&vhci->lock, flags); in vhci_recv_ret_unlink()
178 usb_hcd_giveback_urb(vhci_hcd_to_hcd(vhci_hcd), urb, urb->status); in vhci_recv_ret_unlink()
186 int empty = 0; in vhci_priv_tx_empty() local
189 spin_lock_irqsave(&vdev->priv_lock, flags); in vhci_priv_tx_empty()
190 empty = list_empty(&vdev->priv_rx); in vhci_priv_tx_empty()
191 spin_unlock_irqrestore(&vdev->priv_lock, flags); in vhci_priv_tx_empty()
193 return empty; in vhci_priv_tx_empty()
196 /* recv a pdu */
208 ret = usbip_recv(ud->tcp_socket, &pdu, sizeof(pdu)); in vhci_rx_pdu()
210 if (ret == -ECONNRESET) in vhci_rx_pdu()
212 else if (ret == -EAGAIN) { in vhci_rx_pdu()
217 } else if (ret != -ERESTARTSYS) in vhci_rx_pdu()