Subject: Re: [PATCH net-next] net: macb: replace literal constant with NET_IP_ALIGN

From: Joe Perches <[email-masked]>
Date: Wed, 01 Jul 2015 16:00:56 -0700

On Thu, 2015-07-02 at 00:13 +0200, Eric Dumazet wrote:
> On Wed, 2015-07-01 at 10:06 -0700, Joe Perches wrote:
> > On Wed, 2015-07-01 at 12:56 +0200, Eric Dumazet wrote:
> > > On Tue, 2015-06-30 at 20:25 +0300, Nicolae Rosia wrote:
> > > > diff --git a/drivers/net/ethernet/cadence/macb.c b/drivers/net/ethernet/cadence/macb.c
> > []
> > > > @@ -2554,9 +2554,9 @@ static void at91ether_rx(struct net_device *dev)
> > > >  	while (lp->rx_ring[lp->rx_tail].addr & MACB_BIT(RX_USED)) {
> > > >  		p_recv = lp->rx_buffers + lp->rx_tail * AT91ETHER_MAX_RBUFF_SZ;
> > > >  		pktlen = MACB_BF(RX_FRMLEN, lp->rx_ring[lp->rx_tail].ctrl);
> > > > -		skb = netdev_alloc_skb(dev, pktlen + 2);
> > > > +		skb = netdev_alloc_skb(dev, pktlen + NET_IP_ALIGN);
> > > >  		if (skb) {
> > > > -			skb_reserve(skb, 2);
> > > > +			skb_reserve(skb, NET_IP_ALIGN);
> > > >  			memcpy(skb_put(skb, pktlen), p_recv, pktlen);
> > > >  
> > > >  			skb->protocol = eth_type_trans(skb, dev);
> > > 
> > > Then please use netdev_alloc_skb_ip_align(), so that you get rid of
> > > skb_reserve()
> > 
> > It seems there are ~50 of these in the kernel tree
> > that could be converted.
> > 
> 
> Make sure the 2 is really NET_IP_ALIGN
> 
> Some hardwares need 2, even if NET_IP_ALIGN is 0 (on x86 arches for
> example)
> 
> I would rather not touch this without testing the change on real
> hardware.

Nor I really.

Most all of those are in fairly old hardware drivers.

I just wanted to point out that more exist.