rt2x00: Modify rt2x00queue_remove_l2pad to make skb->data two-byte alignment
authorRA-Jay Hung <Jay_Hung@ralinktech.com>
Sat, 13 Nov 2010 18:13:53 +0000 (19:13 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 17 Nov 2010 21:18:59 +0000 (16:18 -0500)
When send out skb data to mac80211, orignal code will cause mac80211
unaligned access, so modify code to make mac80211 can natural access.

Signed-off-by: RA-Jay Hung <jay_hung@ralinktech.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2x00queue.c

index dc54317..a3d79c7 100644 (file)
@@ -204,8 +204,10 @@ void rt2x00queue_remove_l2pad(struct sk_buff *skb, unsigned int header_length)
        if (!l2pad)
                return;
 
-       memmove(skb->data + l2pad, skb->data, header_length);
-       skb_pull(skb, l2pad);
+       memmove(skb->data + header_length, skb->data + header_length + l2pad,
+                               skb->len - header_length - l2pad);
+
+       skb_trim(skb, skb->len - l2pad);
 }
 
 static void rt2x00queue_create_tx_descriptor_seq(struct queue_entry *entry,