usb: host: fotg210: fix the actual_length of an iso packet
[ 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>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
224cf5e8c8
commit
566ddd2d94
@@ -4459,13 +4459,12 @@ static bool itd_complete(struct fotg210_hcd *fotg210, struct fotg210_itd *itd)
|
|||||||
|
|
||||||
/* HC need not update length with this error */
|
/* HC need not update length with this error */
|
||||||
if (!(t & FOTG210_ISOC_BABBLE)) {
|
if (!(t & FOTG210_ISOC_BABBLE)) {
|
||||||
desc->actual_length =
|
desc->actual_length = FOTG210_ITD_LENGTH(t);
|
||||||
fotg210_itdlen(urb, desc, t);
|
|
||||||
urb->actual_length += desc->actual_length;
|
urb->actual_length += desc->actual_length;
|
||||||
}
|
}
|
||||||
} else if (likely((t & FOTG210_ISOC_ACTIVE) == 0)) {
|
} else if (likely((t & FOTG210_ISOC_ACTIVE) == 0)) {
|
||||||
desc->status = 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;
|
urb->actual_length += desc->actual_length;
|
||||||
} else {
|
} else {
|
||||||
/* URB was too late */
|
/* URB was too late */
|
||||||
|
@@ -686,11 +686,6 @@ static inline unsigned fotg210_read_frame_index(struct fotg210_hcd *fotg210)
|
|||||||
return fotg210_readl(fotg210, &fotg210->regs->frame_index);
|
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 */
|
#endif /* __LINUX_FOTG210_H */
|
||||||
|
Reference in New Issue
Block a user