diff options
author | David Hollis <dhollis@davehollis.com> | 2007-02-05 12:03:03 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-02-16 18:32:19 -0500 |
commit | 57e4f041bfffa191a318dab44eb991d79a6a9d5c (patch) | |
tree | 4fd5c32096204caffc8e01e29dd557e089ced70b /drivers/usb/net/asix.c | |
parent | db90e7a15cb4a160610b4e58576f25539ca216e7 (diff) |
USB: asix - Fix endian issues in asix_tx_fixup()
The attached patch fixes endian issues in asix_tx_fixup() that prevented
AX88772 and AX88178 devices from working on big-endian systems. With
the attached patch, all three chips are reported to work on big endian.
Signed-off-by: David Hollis <dhollis@davehollis.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/net/asix.c')
-rw-r--r-- | drivers/usb/net/asix.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/net/asix.c b/drivers/usb/net/asix.c index bd357e178e55..7ef2e4b5e39b 100644 --- a/drivers/usb/net/asix.c +++ b/drivers/usb/net/asix.c | |||
@@ -351,9 +351,11 @@ static struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb, | |||
351 | 351 | ||
352 | skb_push(skb, 4); | 352 | skb_push(skb, 4); |
353 | packet_len = (((skb->len - 4) ^ 0x0000ffff) << 16) + (skb->len - 4); | 353 | packet_len = (((skb->len - 4) ^ 0x0000ffff) << 16) + (skb->len - 4); |
354 | cpu_to_le32s(&packet_len); | ||
354 | memcpy(skb->data, &packet_len, sizeof(packet_len)); | 355 | memcpy(skb->data, &packet_len, sizeof(packet_len)); |
355 | 356 | ||
356 | if ((skb->len % 512) == 0) { | 357 | if ((skb->len % 512) == 0) { |
358 | cpu_to_le32s(&padbytes); | ||
357 | memcpy( skb->tail, &padbytes, sizeof(padbytes)); | 359 | memcpy( skb->tail, &padbytes, sizeof(padbytes)); |
358 | skb_put(skb, sizeof(padbytes)); | 360 | skb_put(skb, sizeof(padbytes)); |
359 | } | 361 | } |