OpenWrt – Diff between revs 2 and 3
?pathlinks?
Rev 2 | Rev 3 | |||
---|---|---|---|---|
Line 9... | Line 9... | |||
9 | net/ethernet/eth.c | 18 +++++++++++++++++- |
9 | net/ethernet/eth.c | 18 +++++++++++++++++- |
|
10 | 4 files changed, 69 insertions(+), 2 deletions(-) |
10 | 4 files changed, 69 insertions(+), 2 deletions(-) |
|
Line 11... | Line 11... | |||
11 | |
11 | |
|
12 | --- a/include/linux/netdevice.h |
12 | --- a/include/linux/netdevice.h |
|
13 | +++ b/include/linux/netdevice.h |
13 | +++ b/include/linux/netdevice.h |
|
14 | @@ -1752,6 +1752,8 @@ struct net_device { |
14 | @@ -1749,6 +1749,8 @@ struct net_device { |
|
15 | struct netdev_hw_addr_list mc; |
15 | struct netdev_hw_addr_list mc; |
|
Line 16... | Line 16... | |||
16 | struct netdev_hw_addr_list dev_addrs; |
16 | struct netdev_hw_addr_list dev_addrs; |
|
17 | |
17 | |
|
18 | + unsigned char local_addr_mask[MAX_ADDR_LEN]; |
18 | + unsigned char local_addr_mask[MAX_ADDR_LEN]; |
|
19 | + |
19 | + |
|
20 | #ifdef CONFIG_SYSFS |
20 | #ifdef CONFIG_SYSFS |
|
21 | struct kset *queues_kset; |
21 | struct kset *queues_kset; |
|
22 | #endif |
22 | #endif |
|
23 | --- a/include/linux/skbuff.h |
23 | --- a/include/linux/skbuff.h |
|
24 | +++ b/include/linux/skbuff.h |
24 | +++ b/include/linux/skbuff.h |
|
25 | @@ -747,7 +747,8 @@ struct sk_buff { |
25 | @@ -742,7 +742,8 @@ struct sk_buff { |
|
26 | #ifdef CONFIG_NET_SWITCHDEV |
26 | #ifdef CONFIG_NET_SWITCHDEV |
|
27 | __u8 offload_fwd_mark:1; |
27 | __u8 offload_fwd_mark:1; |
|
28 | #endif |
28 | #endif |
|
Line 32... | Line 32... | |||
32 | |
32 | |
|
33 | #ifdef CONFIG_NET_SCHED |
33 | #ifdef CONFIG_NET_SCHED |
|
34 | __u16 tc_index; /* traffic control index */ |
34 | __u16 tc_index; /* traffic control index */ |
|
35 | --- a/net/core/dev.c |
35 | --- a/net/core/dev.c |
|
36 | +++ b/net/core/dev.c |
36 | +++ b/net/core/dev.c |
|
37 | @@ -4572,6 +4572,9 @@ static enum gro_result dev_gro_receive(s |
37 | @@ -4550,6 +4550,9 @@ static enum gro_result dev_gro_receive(s |
|
38 | enum gro_result ret; |
38 | enum gro_result ret; |
|
Line 39... | Line 39... | |||
39 | int grow; |
39 | int grow; |
|
40 | |
40 | |
|
41 | + if (skb->gro_skip) |
41 | + if (skb->gro_skip) |
|
42 | + goto normal; |
42 | + goto normal; |
|
43 | + |
43 | + |
|
Line 44... | Line 44... | |||
44 | if (!(skb->dev->features & NETIF_F_GRO)) |
44 | if (!(skb->dev->features & NETIF_F_GRO)) |
|
45 | goto normal; |
45 | goto normal; |
|
46 | |
46 | |
|
Line 47... | Line 47... | |||
47 | @@ -5864,6 +5867,48 @@ static void __netdev_adjacent_dev_unlink |
47 | @@ -5838,6 +5841,48 @@ static void __netdev_adjacent_dev_unlink |
|
48 | &upper_dev->adj_list.lower); |
48 | &upper_dev->adj_list.lower); |
|
Line 91... | Line 91... | |||
91 | +} |
91 | +} |
|
92 | + |
92 | + |
|
93 | static int __netdev_upper_dev_link(struct net_device *dev, |
93 | static int __netdev_upper_dev_link(struct net_device *dev, |
|
94 | struct net_device *upper_dev, bool master, |
94 | struct net_device *upper_dev, bool master, |
|
95 | void *upper_priv, void *upper_info) |
95 | void *upper_priv, void *upper_info) |
|
96 | @@ -5936,6 +5981,7 @@ static int __netdev_upper_dev_link(struc |
96 | @@ -5910,6 +5955,7 @@ static int __netdev_upper_dev_link(struc |
|
97 | goto rollback_lower_mesh; |
97 | goto rollback_lower_mesh; |
|
98 | } |
98 | } |
|
Line 99... | Line 99... | |||
99 | |
99 | |
|
100 | + netdev_update_addr_mask(dev); |
100 | + netdev_update_addr_mask(dev); |
|
101 | ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, |
101 | ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, |
|
102 | &changeupper_info.info); |
102 | &changeupper_info.info); |
|
103 | ret = notifier_to_errno(ret); |
103 | ret = notifier_to_errno(ret); |
|
104 | @@ -6062,6 +6108,7 @@ void netdev_upper_dev_unlink(struct net_ |
104 | @@ -6036,6 +6082,7 @@ void netdev_upper_dev_unlink(struct net_ |
|
105 | list_for_each_entry(i, &upper_dev->all_adj_list.upper, list) |
105 | list_for_each_entry(i, &upper_dev->all_adj_list.upper, list) |
|
Line 106... | Line 106... | |||
106 | __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr); |
106 | __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr); |
|
107 | |
107 | |
|
108 | + netdev_update_addr_mask(dev); |
108 | + netdev_update_addr_mask(dev); |
|
109 | call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, |
109 | call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev, |
|
110 | &changeupper_info.info); |
110 | &changeupper_info.info); |
|
111 | } |
111 | } |
|
112 | @@ -6664,6 +6711,7 @@ int dev_set_mac_address(struct net_devic |
112 | @@ -6636,6 +6683,7 @@ int dev_set_mac_address(struct net_devic |
|
113 | if (err) |
113 | if (err) |
|
114 | return err; |
114 | return err; |
|
115 | dev->addr_assign_type = NET_ADDR_SET; |
115 | dev->addr_assign_type = NET_ADDR_SET; |