X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fgeneric%2Fpatches-4.4%2F680-NET-skip-GRO-for-foreign-MAC-addresses.patch;h=eff8e829a6419041c2f66abe6495c378a76e3670;hb=ee3067c588139ef60a72f5fecac979580d3651e3;hp=a9ea04a43db753443dce4dfdae59f3f57e271ba0;hpb=e9d7ee4f4149e4469d49cd7bf1af532cb114e04f;p=openwrt%2Fopenwrt.git diff --git a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index a9ea04a43d..eff8e829a6 100644 --- a/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -13,11 +13,11 @@ a mask of changed bits in MAC addresses of upper devices. This allows handling VLANs and bridge devices with different addresses (as long as they are not too different). -Signed-off-by: Felix Fietkau +Signed-off-by: Felix Fietkau --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4205,6 +4205,9 @@ static enum gro_result dev_gro_receive(s +@@ -4224,6 +4224,9 @@ static enum gro_result dev_gro_receive(s enum gro_result ret; int grow; @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau if (!(skb->dev->features & NETIF_F_GRO)) goto normal; -@@ -5357,6 +5360,48 @@ static void __netdev_adjacent_dev_unlink +@@ -5383,6 +5386,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *private) -@@ -5428,6 +5473,7 @@ static int __netdev_upper_dev_link(struc +@@ -5454,6 +5499,7 @@ static int __netdev_upper_dev_link(struc goto rollback_lower_mesh; } @@ -84,15 +84,15 @@ Signed-off-by: Felix Fietkau call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, &changeupper_info.info); return 0; -@@ -5554,6 +5600,7 @@ void netdev_upper_dev_unlink(struct net_ +@@ -5580,6 +5626,7 @@ void netdev_upper_dev_unlink(struct net_ list_for_each_entry(i, &upper_dev->all_adj_list.upper, list) - __netdev_adjacent_dev_unlink(dev, i->dev); + __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr); + netdev_update_addr_mask(dev); call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, &changeupper_info.info); } -@@ -6094,6 +6141,7 @@ int dev_set_mac_address(struct net_devic +@@ -6120,6 +6167,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; @@ -102,7 +102,7 @@ Signed-off-by: Felix Fietkau return 0; --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1638,6 +1638,8 @@ struct net_device { +@@ -1637,6 +1637,8 @@ struct net_device { struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs;