sky2: use dev_alloc_skb for receive buffers
Several code paths assume an additional 16 bytes of header padding on the receive path. Use dev_alloc_skb to get that padding. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Adrian Bunk <bunk@stusta.de>
This commit is contained in:
committed by
Adrian Bunk
parent
d45acfec5e
commit
60ae1edc99
+3
-3
@@ -943,14 +943,14 @@ static void sky2_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
|
||||
/*
|
||||
* It appears the hardware has a bug in the FIFO logic that
|
||||
* cause it to hang if the FIFO gets overrun and the receive buffer
|
||||
* is not aligned. ALso alloc_skb() won't align properly if slab
|
||||
* is not aligned. Also dev_alloc_skb() won't align properly if slab
|
||||
* debugging is enabled.
|
||||
*/
|
||||
static inline struct sk_buff *sky2_alloc_skb(unsigned int size, gfp_t gfp_mask)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
|
||||
skb = alloc_skb(size + RX_SKB_ALIGN, gfp_mask);
|
||||
skb = __dev_alloc_skb(size + RX_SKB_ALIGN, gfp_mask);
|
||||
if (likely(skb)) {
|
||||
unsigned long p = (unsigned long) skb->data;
|
||||
skb_reserve(skb,
|
||||
@@ -1808,7 +1808,7 @@ static struct sk_buff *sky2_receive(struct sky2_port *sky2,
|
||||
goto oversize;
|
||||
|
||||
if (length < copybreak) {
|
||||
skb = alloc_skb(length + 2, GFP_ATOMIC);
|
||||
skb = dev_alloc_skb(length + 2);
|
||||
if (!skb)
|
||||
goto resubmit;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user