From: Ben Hutchings Date: Sat, 18 Feb 2017 21:22:41 +0000 (+0000) Subject: net: Avoid ABI change for min_header_len X-Git-Tag: archive/raspbian/4.9.13-1+rpi1~11^2~23 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=c3275ccf95c761344dd180e1178584de7be07d53;p=linux-4.9.git net: Avoid ABI change for min_header_len Adding net_device::min_header_len is a massive ABI break that we don't want right now. Instead, check for the specific device types and minimum length in dev_validate_header(). Gbp-Pq: Topic debian Gbp-Pq: Name net-avoid-abi-change-for-min_header_len.patch --- diff --git a/drivers/net/loopback.c b/drivers/net/loopback.c index 1b65f0f975cf..6255973e3dda 100644 --- a/drivers/net/loopback.c +++ b/drivers/net/loopback.c @@ -164,7 +164,6 @@ static void loopback_setup(struct net_device *dev) { dev->mtu = 64 * 1024; dev->hard_header_len = ETH_HLEN; /* 14 */ - dev->min_header_len = ETH_HLEN; /* 14 */ dev->addr_len = ETH_ALEN; /* 6 */ dev->type = ARPHRD_LOOPBACK; /* 0x0001*/ dev->flags = IFF_LOOPBACK; diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index bb9b102c15cd..6c62cd171935 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -1508,7 +1508,6 @@ enum netdev_priv_flags { * @mtu: Interface MTU value * @type: Interface hardware type * @hard_header_len: Maximum hardware header length. - * @min_header_len: Minimum hardware header length * * @needed_headroom: Extra headroom the hardware may need, but not in all * cases can this be guaranteed @@ -1729,7 +1728,6 @@ struct net_device { unsigned int mtu; unsigned short type; unsigned short hard_header_len; - unsigned short min_header_len; unsigned short needed_headroom; unsigned short needed_tailroom; @@ -2785,7 +2783,11 @@ static inline bool dev_validate_header(const struct net_device *dev, { if (likely(len >= dev->hard_header_len)) return true; - if (len < dev->min_header_len) + if ((dev->type == 1 /*ARPHRD_ETHER*/ || + dev->type == 772 /*ARPHRD_LOOPBACK*/ || + dev->type == 801 /*ARPHRD_IEEE80211*/ || + dev->type == 803 /*ARPHRD_IEEE80211_RADIOTAP*/) && + len < 14 /*ETH_HLEN*/) return false; if (capable(CAP_SYS_RAWIO)) { diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 24d7aff8db1a..02acfff36028 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -356,7 +356,6 @@ void ether_setup(struct net_device *dev) dev->header_ops = ð_header_ops; dev->type = ARPHRD_ETHER; dev->hard_header_len = ETH_HLEN; - dev->min_header_len = ETH_HLEN; dev->mtu = ETH_DATA_LEN; dev->addr_len = ETH_ALEN; dev->tx_queue_len = 1000; /* Ethernet wants good queues */