I've just pushed 2 commits related to GSO peeling behaviour to master. 1st tweak is at worst benign and at best removes a multiply compare for every packet enqueued. I'd like to think the optimiser in the compiler would have done what I've done explicitly (in essence check this is a gso packet 1st before thinking about peeling it) but when I checked on x86_64 there was a definite difference in produced code. 2nd tweak is *not* benign. In essence this forces peeling if either ATM framing or packet overhead is specified. Previously only ATM framing forced peeling. I think this is more correct but unfortunately will be slower. Commits can be reverted - feel free :-)