This is an optimization introduced on newer kernels, just ignore for
older kernels on mac80211. For others the netdev->hard_header_len
could be used.

--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -1308,6 +1308,7 @@ int ieee80211_if_add(struct ieee80211_lo
 		return -ENOMEM;
 	dev_net_set(ndev, wiphy_net(local->hw.wiphy));
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))
 	ndev->needed_headroom = local->tx_headroom +
 				4*6 /* four MAC addresses */
 				+ 2 + 2 + 2 + 2 /* ctl, dur, seq, qos */
@@ -1316,6 +1317,7 @@ int ieee80211_if_add(struct ieee80211_lo
 				- ETH_HLEN /* ethernet hard_header_len */
 				+ IEEE80211_ENCRYPT_HEADROOM;
 	ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
+#endif
 
 	ret = dev_alloc_name(ndev, ndev->name);
 	if (ret < 0)
--- a/drivers/net/wireless/orinoco/main.c
+++ b/drivers/net/wireless/orinoco/main.c
@@ -2285,7 +2285,11 @@ int orinoco_if_add(struct orinoco_privat
 	/* we use the default eth_mac_addr for setting the MAC addr */
 
 	/* Reserve space in skb for the SNAP header */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26))
 	dev->needed_headroom = ENCAPS_OVERHEAD;
+#else
+	dev->hard_header_len += ENCAPS_OVERHEAD;
+#endif
 
 	netif_carrier_off(dev);
 
