mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-26 20:09:23 +07:00
staging: usbip: reformat function stub_recv_cmd_unlink()
Reformat function stub_recv_cmd_unlink() to improve readability. Signed-off-by: Kurt Kanzenbach <ly80toro@cip.cs.fau.de> Signed-off-by: Stefan Reif <ke42caxa@cip.cs.fau.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
69f452635c
commit
c5a73ee2d1
@ -228,61 +228,61 @@ static void tweak_special_requests(struct urb *urb)
|
|||||||
static int stub_recv_cmd_unlink(struct stub_device *sdev,
|
static int stub_recv_cmd_unlink(struct stub_device *sdev,
|
||||||
struct usbip_header *pdu)
|
struct usbip_header *pdu)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
struct stub_priv *priv;
|
struct stub_priv *priv;
|
||||||
|
|
||||||
spin_lock_irqsave(&sdev->priv_lock, flags);
|
spin_lock_irqsave(&sdev->priv_lock, flags);
|
||||||
|
|
||||||
list_for_each_entry(priv, &sdev->priv_init, list) {
|
list_for_each_entry(priv, &sdev->priv_init, list) {
|
||||||
if (priv->seqnum == pdu->u.cmd_unlink.seqnum) {
|
if (priv->seqnum != pdu->u.cmd_unlink.seqnum)
|
||||||
int ret;
|
continue;
|
||||||
|
|
||||||
dev_info(&priv->urb->dev->dev, "unlink urb %p\n",
|
dev_info(&priv->urb->dev->dev, "unlink urb %p\n",
|
||||||
priv->urb);
|
priv->urb);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This matched urb is not completed yet (i.e., be in
|
* This matched urb is not completed yet (i.e., be in
|
||||||
* flight in usb hcd hardware/driver). Now we are
|
* flight in usb hcd hardware/driver). Now we are
|
||||||
* cancelling it. The unlinking flag means that we are
|
* cancelling it. The unlinking flag means that we are
|
||||||
* now not going to return the normal result pdu of a
|
* now not going to return the normal result pdu of a
|
||||||
* submission request, but going to return a result pdu
|
* submission request, but going to return a result pdu
|
||||||
* of the unlink request.
|
* of the unlink request.
|
||||||
*/
|
*/
|
||||||
priv->unlinking = 1;
|
priv->unlinking = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* In the case that unlinking flag is on, prev->seqnum
|
* In the case that unlinking flag is on, prev->seqnum
|
||||||
* is changed from the seqnum of the cancelling urb to
|
* is changed from the seqnum of the cancelling urb to
|
||||||
* the seqnum of the unlink request. This will be used
|
* the seqnum of the unlink request. This will be used
|
||||||
* to make the result pdu of the unlink request.
|
* to make the result pdu of the unlink request.
|
||||||
*/
|
*/
|
||||||
priv->seqnum = pdu->base.seqnum;
|
priv->seqnum = pdu->base.seqnum;
|
||||||
|
|
||||||
spin_unlock_irqrestore(&sdev->priv_lock, flags);
|
spin_unlock_irqrestore(&sdev->priv_lock, flags);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* usb_unlink_urb() is now out of spinlocking to avoid
|
* usb_unlink_urb() is now out of spinlocking to avoid
|
||||||
* spinlock recursion since stub_complete() is
|
* spinlock recursion since stub_complete() is
|
||||||
* sometimes called in this context but not in the
|
* sometimes called in this context but not in the
|
||||||
* interrupt context. If stub_complete() is executed
|
* interrupt context. If stub_complete() is executed
|
||||||
* before we call usb_unlink_urb(), usb_unlink_urb()
|
* before we call usb_unlink_urb(), usb_unlink_urb()
|
||||||
* will return an error value. In this case, stub_tx
|
* will return an error value. In this case, stub_tx
|
||||||
* will return the result pdu of this unlink request
|
* will return the result pdu of this unlink request
|
||||||
* though submission is completed and actual unlinking
|
* though submission is completed and actual unlinking
|
||||||
* is not executed. OK?
|
* is not executed. OK?
|
||||||
*/
|
*/
|
||||||
/* In the above case, urb->status is not -ECONNRESET,
|
/* In the above case, urb->status is not -ECONNRESET,
|
||||||
* so a driver in a client host will know the failure
|
* so a driver in a client host will know the failure
|
||||||
* of the unlink request ?
|
* of the unlink request ?
|
||||||
*/
|
*/
|
||||||
ret = usb_unlink_urb(priv->urb);
|
ret = usb_unlink_urb(priv->urb);
|
||||||
if (ret != -EINPROGRESS)
|
if (ret != -EINPROGRESS)
|
||||||
dev_err(&priv->urb->dev->dev,
|
dev_err(&priv->urb->dev->dev,
|
||||||
"failed to unlink a urb %p, ret %d\n",
|
"failed to unlink a urb %p, ret %d\n",
|
||||||
priv->urb, ret);
|
priv->urb, ret);
|
||||||
return 0;
|
|
||||||
}
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
usbip_dbg_stub_rx("seqnum %d is not pending\n",
|
usbip_dbg_stub_rx("seqnum %d is not pending\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user