]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
usb: host: fotg210: fix the actual_length of an iso packet
authorKelly Devilliv <kelly.devilliv@gmail.com>
Sun, 27 Jun 2021 12:57:47 +0000 (20:57 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Sep 2021 09:48:03 +0000 (11:48 +0200)
[ Upstream commit 091cb2f782f32ab68c6f5f326d7868683d3d4875 ]

We should acquire the actual_length of an iso packet
from the iTD directly using FOTG210_ITD_LENGTH() macro.

Signed-off-by: Kelly Devilliv <kelly.devilliv@gmail.com>
Link: https://lore.kernel.org/r/20210627125747.127646-4-kelly.devilliv@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/host/fotg210-hcd.c
drivers/usb/host/fotg210.h

index 4e98f7b492df21fffd9aadfeb845642b766304e0..1577424319613691cb3785ecfa9130b1bed81c29 100644 (file)
@@ -4459,13 +4459,12 @@ static bool itd_complete(struct fotg210_hcd *fotg210, struct fotg210_itd *itd)
 
                        /* HC need not update length with this error */
                        if (!(t & FOTG210_ISOC_BABBLE)) {
-                               desc->actual_length =
-                                       fotg210_itdlen(urb, desc, t);
+                               desc->actual_length = FOTG210_ITD_LENGTH(t);
                                urb->actual_length += desc->actual_length;
                        }
                } else if (likely((t & FOTG210_ISOC_ACTIVE) == 0)) {
                        desc->status = 0;
-                       desc->actual_length = fotg210_itdlen(urb, desc, t);
+                       desc->actual_length = FOTG210_ITD_LENGTH(t);
                        urb->actual_length += desc->actual_length;
                } else {
                        /* URB was too late */
index 7fcd785c7bc85471ce7ebf1a55571f690c6da5fb..0f1da9503bc6790f5b2a4cf4bd17cab904a75232 100644 (file)
@@ -683,11 +683,6 @@ static inline unsigned fotg210_read_frame_index(struct fotg210_hcd *fotg210)
        return fotg210_readl(fotg210, &fotg210->regs->frame_index);
 }
 
-#define fotg210_itdlen(urb, desc, t) ({                        \
-       usb_pipein((urb)->pipe) ?                               \
-       (desc)->length - FOTG210_ITD_LENGTH(t) :                        \
-       FOTG210_ITD_LENGTH(t);                                  \
-})
 /*-------------------------------------------------------------------------*/
 
 #endif /* __LINUX_FOTG210_H */