diff options
Diffstat (limited to 'drivers/net/gianfar.c')
| -rw-r--r-- | drivers/net/gianfar.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c index b2c49679bba..a0519184e54 100644 --- a/drivers/net/gianfar.c +++ b/drivers/net/gianfar.c @@ -1885,8 +1885,17 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit)  			if (unlikely(!newskb))  				newskb = skb; -			else if (skb) +			else if (skb) { +				/* +				 * We need to reset ->data to what it +				 * was before gfar_new_skb() re-aligned +				 * it to an RXBUF_ALIGNMENT boundary +				 * before we put the skb back on the +				 * recycle list. +				 */ +				skb->data = skb->head + NET_SKB_PAD;  				__skb_queue_head(&priv->rx_recycle, skb); +			}  		} else {  			/* Increment the number of packets */  			dev->stats.rx_packets++;  |