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, 21 Jul 2021 08:03:42 +0000 (10:03 +0200)
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>
drivers/usb/host/fotg210-hcd.c
drivers/usb/host/fotg210.h

index 629b353..4b02ace 100644 (file)
@@ -4463,13 +4463,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 0a91061..0781442 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 */