[LIBERTAS]: fix oops on the blackfin architecture
authorVladimir Davydov <vladimir.davydov@promwad.com>
Fri, 7 Sep 2007 01:41:02 +0000 (21:41 -0400)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:52:27 +0000 (16:52 -0700)
Reserve two bytes to align pointer to the IP header.

Signed-off-by: Vladimir Davydov <vladimir.davydov@promwad.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/wireless/libertas/if_cs.c

index e74ec5c309bec341f5a13fa139cf535ae6d137e1..0360cad363a8dacd314be2fb57272daed142c1af 100644 (file)
@@ -402,10 +402,12 @@ static struct sk_buff *if_cs_receive_data(wlan_private *priv)
        }
 
        //TODO: skb = dev_alloc_skb(len+ETH_FRAME_LEN+MRVDRV_SNAP_HEADER_LEN+EXTRA_LEN);
-       skb = dev_alloc_skb(MRVDRV_ETH_RX_PACKET_BUFFER_SIZE);
+       skb = dev_alloc_skb(MRVDRV_ETH_RX_PACKET_BUFFER_SIZE + 2);
        if (!skb)
                goto out;
-       data = skb_put(skb, len);
+       skb_put(skb, len);
+       skb_reserve(skb, 2);/* 16 byte align */
+       data = skb->data;
 
        /* read even number of bytes, then odd byte if necessary */
        if_cs_read16_rep(priv->card, IF_CS_H_READ, data, len/sizeof(u16));