You can set your "net_device" "needed_headroom" / "needed_tailroom" field, at your NIC driver init time, like
dev->needed_headroom += EXTRA_HEADER_LENGTH;
The basic logic is, when networking stack is about to allocate a SKB to transmit via a interface, it take into consideration the value of "needed_headroom" ( in fact, a macro LL_RESERVED_SPACE (dev ) ), and the SKB would have that large headroom reserved. This way, your NIC driver could assume that most packet reach into "do_start_xmit()" should have enough headroom --- most, not all, a headroom check is still needed.