Subject: Re: [E1000-devel] [next:akpm 16/587] drivers/net/ethernet/intel/igb/igb_main.c:6231:2: error: call to '__compiletime_assert_6235' declared with attribute error: BUILD_BUG_ON failed: SKB_WITH_OVERHEAD(IGB_RX_BUFSZ) < (NET_SKB_PAD + NET_IP_ALIGN + IGB_TS_HDR_LEN + ETH...

From: Alexander Duyck <[email-masked]>
Date: Wed, 20 Feb 2013 13:23:30 -0800

On 02/20/2013 11:22 AM, Eric Dumazet wrote:
> On Wed, 2013-02-20 at 10:16 -0800, Alexander Duyck wrote:
>
>> The problem is the 256 byte alignment for L1_CACHE_BYTES is increasing
>> the size of the data and shared info significantly pushing us past the
>> 2K limit.
>>
>> I'll look into this since it likely affects ixgbe as well.
> Thats what I said.
>
> Using 256 bytes of headroom is silly.
>
> We should limit NET_SKB_PAD to the 32-64 range
>
>

NET_SKB_PAD is defined for the s390.  It is already 32.  If you look it
up we only have 2 definitions for NET_SKB_PAD, one specific to the s390
architecture and the other one in skbuff.h.

>>From what I can tell we would have to drop the NET_SKB_PAD to 0 in order
to not trigger this error with igb since we still have to add 22 bytes
for igb's per packet timestamp header, IP alignment, and CRC.

The simple fix is for us just to drop the BUILD_BUG_ON check for igb
since we already had a check for size check in igb_set_rx_buffer_len. 
It just means that build_skb won't be available for standard MTU sizes
on s390.

For ixgbe we can do something similar as well to avoid the BUILD_BUG_ON
message.

Thanks,

Alex