diff options
Diffstat (limited to 'target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch')
-rw-r--r-- | target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch b/target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch deleted file mode 100644 index fcabb62f5e..0000000000 --- a/target/linux/layerscape/patches-4.9/001-net-centralize-net_device-min-max-MTU-checking.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 95b8bbff6ecf0692747622af16d917a67313f8cc Mon Sep 17 00:00:00 2001 -From: Jarod Wilson <jarod@redhat.com> -Date: Fri, 7 Oct 2016 22:04:33 -0400 -Subject: [PATCH] net: centralize net_device min/max MTU checking - -While looking into an MTU issue with sfc, I started noticing that almost -every NIC driver with an ndo_change_mtu function implemented almost -exactly the same range checks, and in many cases, that was the only -practical thing their ndo_change_mtu function was doing. Quite a few -drivers have either 68, 64, 60 or 46 as their minimum MTU value checked, -and then various sizes from 1500 to 65535 for their maximum MTU value. We -can remove a whole lot of redundant code here if we simple store min_mtu -and max_mtu in net_device, and check against those in net/core/dev.c's -dev_set_mtu(). - -In theory, there should be zero functional change with this patch, it just -puts the infrastructure in place. Subsequent patches will attempt to start -using said infrastructure, with theoretically zero change in -functionality. - -CC: netdev@vger.kernel.org -Signed-off-by: Jarod Wilson <jarod@redhat.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - include/linux/netdevice.h | 4 ++++ - net/core/dev.c | 13 +++++++++++-- - 2 files changed, 15 insertions(+), 2 deletions(-) - -diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 780e7171f548..2082b7d02a77 100644 ---- a/include/linux/netdevice.h -+++ b/include/linux/netdevice.h -@@ -1507,6 +1507,8 @@ enum netdev_priv_flags { - * @if_port: Selectable AUI, TP, ... - * @dma: DMA channel - * @mtu: Interface MTU value -+ * @min_mtu: Interface Minimum MTU value -+ * @max_mtu: Interface Maximum MTU value - * @type: Interface hardware type - * @hard_header_len: Maximum hardware header length. - * @min_header_len: Minimum hardware header length -@@ -1728,6 +1730,8 @@ struct net_device { - unsigned char dma; - - unsigned int mtu; -+ unsigned int min_mtu; -+ unsigned int max_mtu; - unsigned short type; - unsigned short hard_header_len; - unsigned short min_header_len; -diff --git a/net/core/dev.c b/net/core/dev.c -index 2e04fd188081..c7ec56e8659a 100644 ---- a/net/core/dev.c -+++ b/net/core/dev.c -@@ -6524,9 +6524,18 @@ int dev_set_mtu(struct net_device *dev, int new_mtu) - if (new_mtu == dev->mtu) - return 0; - -- /* MTU must be positive. */ -- if (new_mtu < 0) -+ /* MTU must be positive, and in range */ -+ if (new_mtu < 0 || new_mtu < dev->min_mtu) { -+ net_err_ratelimited("%s: Invalid MTU %d requested, hw min %d\n", -+ dev->name, new_mtu, dev->min_mtu); - return -EINVAL; -+ } -+ -+ if (dev->max_mtu > 0 && new_mtu > dev->max_mtu) { -+ net_err_ratelimited("%s: Invalid MTU %d requested, hw max %d\n", -+ dev->name, new_mtu, dev->min_mtu); -+ return -EINVAL; -+ } - - if (!netif_device_present(dev)) - return -ENODEV; --- -2.11.1 - |