USB: asix - Fix endian issues in asix_tx_fixup()
authorDavid Hollis <dhollis@davehollis.com>
Mon, 5 Feb 2007 17:03:03 +0000 (12:03 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 16 Feb 2007 23:32:19 +0000 (15:32 -0800)
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>
drivers/usb/net/asix.c

index bd357e178e557548b464ed4187055b3be54970d3..7ef2e4b5e39bf986d559854458df5d6ea5bd5257 100644 (file)
@@ -351,9 +351,11 @@ static struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
 
        skb_push(skb, 4);
        packet_len = (((skb->len - 4) ^ 0x0000ffff) << 16) + (skb->len - 4);
+       cpu_to_le32s(&packet_len);
        memcpy(skb->data, &packet_len, sizeof(packet_len));
 
        if ((skb->len % 512) == 0) {
+               cpu_to_le32s(&padbytes);
                memcpy( skb->tail, &padbytes, sizeof(padbytes));
                skb_put(skb, sizeof(padbytes));
        }