diff options
author | Arend van Spriel <arend.vanspriel@broadcom.com> | 2016-11-23 10:33:13 +0000 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2017-02-06 15:00:43 +0100 |
commit | 41e4451188d69738d5143d244a8cd556a2ff33e7 (patch) | |
tree | e511d4b954cbd833686d9cc90090f136d1bf90c8 /patches | |
parent | 7b894f158b526e96ba822ccafe0d5709f9aa2672 (diff) |
patches: network: add spatch for mtu range checking
The mtu range checking was moved into network subsystem resulting in
the addition of min_mtu and max_mtu fields in struct net_device. For
drivers with a .ndo_change_mtu() which took care of range checking this
resulted in removal of the callback. This spatch restores the callback
using the values set in {min,max}_mtu fields for kernels before v4.10.
Signed-off-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'patches')
-rw-r--r-- | patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci b/patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci new file mode 100644 index 00000000..30276f95 --- /dev/null +++ b/patches/collateral-evolutions/network/0073-netdevice-mtu-range.cocci @@ -0,0 +1,75 @@ +@initialize:python@ +@@ + +first_ops = 0 + +@r@ +identifier OPS; +position p; +@@ + +struct net_device_ops OPS@p = { ... }; + +@script:python depends on r@ +@@ + +first_ops = 0 + +@script:python@ +p << r.p; +@@ + +ln = int(p[0].line) +if first_ops == 0 or ln < first_ops: + first_ops = ln + +@script:python@ +p << r.p; +@@ + +ln = int(p[0].line) +if not(first_ops == ln): + cocci.include_match(False) + +@r1 exists@ +expression ndevexp, e1, e2; +identifier func; +@@ +func(...) { + <+... ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0) + ndevexp->min_mtu = e1; + ndevexp->max_mtu = e2; ++#endif + ...+> +} + +@r2@ +expression r1.e1,r1.e2; +identifier r.OPS; +@@ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0) ++ static int __change_mtu(struct net_device *ndev, int new_mtu) ++ { ++ if (new_mtu < e1 || new_mtu > e2) ++ return -EINVAL; ++ ndev->mtu = new_mtu; ++ return 0; ++ } ++#endif ++ +struct net_device_ops OPS = { + ... +}; + +@depends on r2@ +identifier OPS; +@@ + +struct net_device_ops OPS = { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,10,0) ++ .ndo_change_mtu = __change_mtu, ++#endif + ... +}; + |