I don't think this is what's needed. The GRH leaves a gap of 40, so getting rid of the skb_reserve() just means that DMA will start at an offset of 40 rather than 44. I think you need to reserve enough to get to a full cacheline boundary, but I can't remember if that's 64 or 128 bytes. - R.