Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / drivers / net / usb / cdc_eem.c
index 45cebfb..2330065 100644 (file)
@@ -300,20 +300,23 @@ static int eem_rx_fixup(struct usbnet *dev, struct sk_buff *skb)
                                        return 0;
                        }
 
-                       crc = get_unaligned_le32(skb2->data
-                                       + len - ETH_FCS_LEN);
-                       skb_trim(skb2, len - ETH_FCS_LEN);
-
                        /*
                         * The bmCRC helps to denote when the CRC field in
                         * the Ethernet frame contains a calculated CRC:
                         *      bmCRC = 1       : CRC is calculated
                         *      bmCRC = 0       : CRC = 0xDEADBEEF
                         */
-                       if (header & BIT(14))
-                               crc2 = ~crc32_le(~0, skb2->data, skb2->len);
-                       else
+                       if (header & BIT(14)) {
+                               crc = get_unaligned_le32(skb2->data
+                                               + len - ETH_FCS_LEN);
+                               crc2 = ~crc32_le(~0, skb2->data, skb2->len
+                                               - ETH_FCS_LEN);
+                       } else {
+                               crc = get_unaligned_be32(skb2->data
+                                               + len - ETH_FCS_LEN);
                                crc2 = 0xdeadbeef;
+                       }
+                       skb_trim(skb2, len - ETH_FCS_LEN);
 
                        if (is_last)
                                return crc == crc2;