X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;ds=sidebyside;f=target%2Flinux%2Fgeneric%2Fpending-4.9%2F680-NET-skip-GRO-for-foreign-MAC-addresses.patch;h=d113be643905dd1a21cbb9f04ff7539790173a25;hb=fc45ae44613b41f7328e81d0999f609dd7e81482;hp=e886d70dcca319b231b258d2bc2fdfbe3603df4e;hpb=74d00a8c3849c1340efd713eb94b786e304c201f;p=openwrt%2Fopenwrt.git diff --git a/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index e886d70dcc..d113be6439 100644 --- a/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/pending-4.9/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -9,11 +9,9 @@ Signed-off-by: Felix Fietkau net/ethernet/eth.c | 18 +++++++++++++++++- 4 files changed, 69 insertions(+), 2 deletions(-) -diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h -index 780e7171f548..6b738c662bc1 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h -@@ -1749,6 +1749,8 @@ struct net_device { +@@ -1752,6 +1752,8 @@ struct net_device { struct netdev_hw_addr_list mc; struct netdev_hw_addr_list dev_addrs; @@ -22,11 +20,9 @@ index 780e7171f548..6b738c662bc1 100644 #ifdef CONFIG_SYSFS struct kset *queues_kset; #endif -diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h -index 5f3343ae25ef..3a04baab9b28 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h -@@ -742,7 +742,8 @@ struct sk_buff { +@@ -747,7 +747,8 @@ struct sk_buff { #ifdef CONFIG_NET_SWITCHDEV __u8 offload_fwd_mark:1; #endif @@ -36,11 +32,9 @@ index 5f3343ae25ef..3a04baab9b28 100644 #ifdef CONFIG_NET_SCHED __u16 tc_index; /* traffic control index */ -diff --git a/net/core/dev.c b/net/core/dev.c -index 2e04fd188081..c7c96308bc84 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4512,6 +4512,9 @@ static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff +@@ -4572,6 +4572,9 @@ static enum gro_result dev_gro_receive(s enum gro_result ret; int grow; @@ -50,7 +44,7 @@ index 2e04fd188081..c7c96308bc84 100644 if (!(skb->dev->features & NETIF_F_GRO)) goto normal; -@@ -5789,6 +5792,48 @@ static void __netdev_adjacent_dev_unlink_neighbour(struct net_device *dev, +@@ -5864,6 +5867,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -99,16 +93,23 @@ index 2e04fd188081..c7c96308bc84 100644 static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *upper_priv, void *upper_info) -@@ -5987,6 +6032,8 @@ void netdev_upper_dev_unlink(struct net_device *dev, +@@ -5936,6 +5981,7 @@ static int __netdev_upper_dev_link(struc + goto rollback_lower_mesh; + } + ++ netdev_update_addr_mask(dev); + ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, + &changeupper_info.info); + ret = notifier_to_errno(ret); +@@ -6062,6 +6108,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, i->ref_nr); -+ netdev_update_addr_mask(dev); + netdev_update_addr_mask(dev); call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, &changeupper_info.info); } -@@ -6587,6 +6634,7 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa) +@@ -6664,6 +6711,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; @@ -116,11 +117,9 @@ index 2e04fd188081..c7c96308bc84 100644 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); add_device_randomness(dev->dev_addr, dev->addr_len); return 0; -diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c -index fbf1de965a9a..6a6d90b9a880 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c -@@ -143,6 +143,18 @@ u32 eth_get_headlen(void *data, unsigned int len) +@@ -143,6 +143,18 @@ u32 eth_get_headlen(void *data, unsigned } EXPORT_SYMBOL(eth_get_headlen); @@ -139,7 +138,7 @@ index fbf1de965a9a..6a6d90b9a880 100644 /** * eth_type_trans - determine the packet's protocol ID. * @skb: received socket data -@@ -171,8 +183,12 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) +@@ -171,8 +183,12 @@ __be16 eth_type_trans(struct sk_buff *sk skb->pkt_type = PACKET_MULTICAST; } else if (unlikely(!ether_addr_equal_64bits(eth->h_dest, @@ -153,6 +152,3 @@ index fbf1de965a9a..6a6d90b9a880 100644 /* * Some variants of DSA tagging don't have an ethertype field --- -2.11.0 -