forked from luck/tmp_suning_uos_patched
USB: gadget: fix EEM gadget CRC usage
eem_wrap() is sending a sentinel CRC, but it didn't indicate that to the host, it should zero bit 14 (bmCRC) in the EEM packet header, instead of setting it. Also remove a redundant crc calculation in eem_unwrap(). Signed-off-by: Steve Longerbeam <stevel@netspectrum.com> Acked-by: Brian Niebuhr <bniebuhr@efjohnson.com> Acked-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
dd091c7b32
commit
31e5d4abce
|
@ -358,7 +358,7 @@ static struct sk_buff *eem_wrap(struct gether *port, struct sk_buff *skb)
|
|||
* b15: bmType (0 == data)
|
||||
*/
|
||||
len = skb->len;
|
||||
put_unaligned_le16((len & 0x3FFF) | BIT(14), skb_push(skb, 2));
|
||||
put_unaligned_le16(len & 0x3FFF, skb_push(skb, 2));
|
||||
|
||||
/* add a zero-length EEM packet, if needed */
|
||||
if (padlen)
|
||||
|
@ -464,7 +464,6 @@ static int eem_unwrap(struct gether *port,
|
|||
}
|
||||
|
||||
/* validate CRC */
|
||||
crc = get_unaligned_le32(skb->data + len - ETH_FCS_LEN);
|
||||
if (header & BIT(14)) {
|
||||
crc = get_unaligned_le32(skb->data + len
|
||||
- ETH_FCS_LEN);
|
||||
|
|
Loading…
Reference in New Issue
Block a user