| 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 |
| @@ -1508,6 +1508,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 */ |
| @@ -1516,6 +1517,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 |
| @@ -2279,7 +2279,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); |
| |