diff options
author | David S. Miller <davem@davemloft.net> | 2018-03-23 11:24:57 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-23 11:31:58 -0400 |
commit | 03fe2debbb2771fb90881e4ce8109b09cf772a5c (patch) | |
tree | fbaf8738296b2e9dcba81c6daef2d515b6c4948c /include/net | |
parent | 6686c459e1449a3ee5f3fd313b0a559ace7a700e (diff) | |
parent | f36b7534b83357cf52e747905de6d65b4f7c2512 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Fun set of conflict resolutions here...
For the mac80211 stuff, these were fortunately just parallel
adds. Trivially resolved.
In drivers/net/phy/phy.c we had a bug fix in 'net' that moved the
function phy_disable_interrupts() earlier in the file, whilst in
'net-next' the phy_error() call from this function was removed.
In net/ipv4/xfrm4_policy.c, David Ahern's changes to remove the
'rt_table_id' member of rtable collided with a bug fix in 'net' that
added a new struct member "rt_mtu_locked" which needs to be copied
over here.
The mlxsw driver conflict consisted of net-next separating
the span code and definitions into separate files, whilst
a 'net' bug fix made some changes to that moved code.
The mlx5 infiniband conflict resolution was quite non-trivial,
the RDMA tree's merge commit was used as a guide here, and
here are their notes:
====================
Due to bug fixes found by the syzkaller bot and taken into the for-rc
branch after development for the 4.17 merge window had already started
being taken into the for-next branch, there were fairly non-trivial
merge issues that would need to be resolved between the for-rc branch
and the for-next branch. This merge resolves those conflicts and
provides a unified base upon which ongoing development for 4.17 can
be based.
Conflicts:
drivers/infiniband/hw/mlx5/main.c - Commit 42cea83f9524
(IB/mlx5: Fix cleanup order on unload) added to for-rc and
commit b5ca15ad7e61 (IB/mlx5: Add proper representors support)
add as part of the devel cycle both needed to modify the
init/de-init functions used by mlx5. To support the new
representors, the new functions added by the cleanup patch
needed to be made non-static, and the init/de-init list
added by the representors patch needed to be modified to
match the init/de-init list changes made by the cleanup
patch.
Updates:
drivers/infiniband/hw/mlx5/mlx5_ib.h - Update function
prototypes added by representors patch to reflect new function
names as changed by cleanup patch
drivers/infiniband/hw/mlx5/ib_rep.c - Update init/de-init
stage list to match new order from cleanup patch
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/ip.h | 11 | ||||
-rw-r--r-- | include/net/ip6_route.h | 3 | ||||
-rw-r--r-- | include/net/ip_fib.h | 1 | ||||
-rw-r--r-- | include/net/mac80211.h | 4 | ||||
-rw-r--r-- | include/net/route.h | 6 | ||||
-rw-r--r-- | include/net/sch_generic.h | 19 | ||||
-rw-r--r-- | include/net/sock.h | 1 |
7 files changed, 42 insertions, 3 deletions
diff --git a/include/net/ip.h b/include/net/ip.h index d53b5a9eae34..36f8f7811093 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
@@ -337,6 +337,13 @@ int ip_decrease_ttl(struct iphdr *iph) | |||
337 | return --iph->ttl; | 337 | return --iph->ttl; |
338 | } | 338 | } |
339 | 339 | ||
340 | static inline int ip_mtu_locked(const struct dst_entry *dst) | ||
341 | { | ||
342 | const struct rtable *rt = (const struct rtable *)dst; | ||
343 | |||
344 | return rt->rt_mtu_locked || dst_metric_locked(dst, RTAX_MTU); | ||
345 | } | ||
346 | |||
340 | static inline | 347 | static inline |
341 | int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst) | 348 | int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst) |
342 | { | 349 | { |
@@ -344,7 +351,7 @@ int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst) | |||
344 | 351 | ||
345 | return pmtudisc == IP_PMTUDISC_DO || | 352 | return pmtudisc == IP_PMTUDISC_DO || |
346 | (pmtudisc == IP_PMTUDISC_WANT && | 353 | (pmtudisc == IP_PMTUDISC_WANT && |
347 | !(dst_metric_locked(dst, RTAX_MTU))); | 354 | !ip_mtu_locked(dst)); |
348 | } | 355 | } |
349 | 356 | ||
350 | static inline bool ip_sk_accept_pmtu(const struct sock *sk) | 357 | static inline bool ip_sk_accept_pmtu(const struct sock *sk) |
@@ -370,7 +377,7 @@ static inline unsigned int ip_dst_mtu_maybe_forward(const struct dst_entry *dst, | |||
370 | struct net *net = dev_net(dst->dev); | 377 | struct net *net = dev_net(dst->dev); |
371 | 378 | ||
372 | if (net->ipv4.sysctl_ip_fwd_use_pmtu || | 379 | if (net->ipv4.sysctl_ip_fwd_use_pmtu || |
373 | dst_metric_locked(dst, RTAX_MTU) || | 380 | ip_mtu_locked(dst) || |
374 | !forwarding) | 381 | !forwarding) |
375 | return dst_mtu(dst); | 382 | return dst_mtu(dst); |
376 | 383 | ||
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index ce2abc0ff102..0084013d6bed 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h | |||
@@ -183,6 +183,9 @@ void rt6_disable_ip(struct net_device *dev, unsigned long event); | |||
183 | void rt6_sync_down_dev(struct net_device *dev, unsigned long event); | 183 | void rt6_sync_down_dev(struct net_device *dev, unsigned long event); |
184 | void rt6_multipath_rebalance(struct rt6_info *rt); | 184 | void rt6_multipath_rebalance(struct rt6_info *rt); |
185 | 185 | ||
186 | void rt6_uncached_list_add(struct rt6_info *rt); | ||
187 | void rt6_uncached_list_del(struct rt6_info *rt); | ||
188 | |||
186 | static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb) | 189 | static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb) |
187 | { | 190 | { |
188 | const struct dst_entry *dst = skb_dst(skb); | 191 | const struct dst_entry *dst = skb_dst(skb); |
diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h index 7c7522e8585b..81d0f2107ff1 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h | |||
@@ -59,6 +59,7 @@ struct fib_nh_exception { | |||
59 | int fnhe_genid; | 59 | int fnhe_genid; |
60 | __be32 fnhe_daddr; | 60 | __be32 fnhe_daddr; |
61 | u32 fnhe_pmtu; | 61 | u32 fnhe_pmtu; |
62 | bool fnhe_mtu_locked; | ||
62 | __be32 fnhe_gw; | 63 | __be32 fnhe_gw; |
63 | unsigned long fnhe_expires; | 64 | unsigned long fnhe_expires; |
64 | struct rtable __rcu *fnhe_rth_input; | 65 | struct rtable __rcu *fnhe_rth_input; |
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 2fd59ed3be00..2449982daf75 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -2077,6 +2077,9 @@ struct ieee80211_txq { | |||
2077 | * virtual interface might not be given air time for the transmission of | 2077 | * virtual interface might not be given air time for the transmission of |
2078 | * the frame, as it is not synced with the AP/P2P GO yet, and thus the | 2078 | * the frame, as it is not synced with the AP/P2P GO yet, and thus the |
2079 | * deauthentication frame might not be transmitted. | 2079 | * deauthentication frame might not be transmitted. |
2080 | > | ||
2081 | * @IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP: The driver (or firmware) doesn't | ||
2082 | * support QoS NDP for AP probing - that's most likely a driver bug. | ||
2080 | * | 2083 | * |
2081 | * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays | 2084 | * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays |
2082 | */ | 2085 | */ |
@@ -2122,6 +2125,7 @@ enum ieee80211_hw_flags { | |||
2122 | IEEE80211_HW_SUPPORTS_TX_FRAG, | 2125 | IEEE80211_HW_SUPPORTS_TX_FRAG, |
2123 | IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA, | 2126 | IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA, |
2124 | IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP, | 2127 | IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP, |
2128 | IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP, | ||
2125 | 2129 | ||
2126 | /* keep last, obviously */ | 2130 | /* keep last, obviously */ |
2127 | NUM_IEEE80211_HW_FLAGS | 2131 | NUM_IEEE80211_HW_FLAGS |
diff --git a/include/net/route.h b/include/net/route.h index 158833ea7988..dbb032d5921b 100644 --- a/include/net/route.h +++ b/include/net/route.h | |||
@@ -63,7 +63,8 @@ struct rtable { | |||
63 | __be32 rt_gateway; | 63 | __be32 rt_gateway; |
64 | 64 | ||
65 | /* Miscellaneous cached information */ | 65 | /* Miscellaneous cached information */ |
66 | u32 rt_pmtu; | 66 | u32 rt_mtu_locked:1, |
67 | rt_pmtu:31; | ||
67 | 68 | ||
68 | struct list_head rt_uncached; | 69 | struct list_head rt_uncached; |
69 | struct uncached_list *rt_uncached_list; | 70 | struct uncached_list *rt_uncached_list; |
@@ -225,6 +226,9 @@ struct in_ifaddr; | |||
225 | void fib_add_ifaddr(struct in_ifaddr *); | 226 | void fib_add_ifaddr(struct in_ifaddr *); |
226 | void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *); | 227 | void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *); |
227 | 228 | ||
229 | void rt_add_uncached_list(struct rtable *rt); | ||
230 | void rt_del_uncached_list(struct rtable *rt); | ||
231 | |||
228 | static inline void ip_rt_put(struct rtable *rt) | 232 | static inline void ip_rt_put(struct rtable *rt) |
229 | { | 233 | { |
230 | /* dst_release() accepts a NULL parameter. | 234 | /* dst_release() accepts a NULL parameter. |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index d4907b584b38..493e311bbe93 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
@@ -824,6 +824,16 @@ static inline void __qdisc_drop(struct sk_buff *skb, struct sk_buff **to_free) | |||
824 | *to_free = skb; | 824 | *to_free = skb; |
825 | } | 825 | } |
826 | 826 | ||
827 | static inline void __qdisc_drop_all(struct sk_buff *skb, | ||
828 | struct sk_buff **to_free) | ||
829 | { | ||
830 | if (skb->prev) | ||
831 | skb->prev->next = *to_free; | ||
832 | else | ||
833 | skb->next = *to_free; | ||
834 | *to_free = skb; | ||
835 | } | ||
836 | |||
827 | static inline unsigned int __qdisc_queue_drop_head(struct Qdisc *sch, | 837 | static inline unsigned int __qdisc_queue_drop_head(struct Qdisc *sch, |
828 | struct qdisc_skb_head *qh, | 838 | struct qdisc_skb_head *qh, |
829 | struct sk_buff **to_free) | 839 | struct sk_buff **to_free) |
@@ -956,6 +966,15 @@ static inline int qdisc_drop(struct sk_buff *skb, struct Qdisc *sch, | |||
956 | return NET_XMIT_DROP; | 966 | return NET_XMIT_DROP; |
957 | } | 967 | } |
958 | 968 | ||
969 | static inline int qdisc_drop_all(struct sk_buff *skb, struct Qdisc *sch, | ||
970 | struct sk_buff **to_free) | ||
971 | { | ||
972 | __qdisc_drop_all(skb, to_free); | ||
973 | qdisc_qstats_drop(sch); | ||
974 | |||
975 | return NET_XMIT_DROP; | ||
976 | } | ||
977 | |||
959 | /* Length to Time (L2T) lookup in a qdisc_rate_table, to determine how | 978 | /* Length to Time (L2T) lookup in a qdisc_rate_table, to determine how |
960 | long it will take to send a packet given its size. | 979 | long it will take to send a packet given its size. |
961 | */ | 980 | */ |
diff --git a/include/net/sock.h b/include/net/sock.h index b7c75e024e37..709311132d4c 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -1138,6 +1138,7 @@ struct proto { | |||
1138 | 1138 | ||
1139 | int proto_register(struct proto *prot, int alloc_slab); | 1139 | int proto_register(struct proto *prot, int alloc_slab); |
1140 | void proto_unregister(struct proto *prot); | 1140 | void proto_unregister(struct proto *prot); |
1141 | int sock_load_diag_module(int family, int protocol); | ||
1141 | 1142 | ||
1142 | #ifdef SOCK_REFCNT_DEBUG | 1143 | #ifdef SOCK_REFCNT_DEBUG |
1143 | static inline void sk_refcnt_debug_inc(struct sock *sk) | 1144 | static inline void sk_refcnt_debug_inc(struct sock *sk) |