aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2018-03-23 11:24:57 -0400
committerDavid S. Miller <davem@davemloft.net>2018-03-23 11:31:58 -0400
commit03fe2debbb2771fb90881e4ce8109b09cf772a5c (patch)
treefbaf8738296b2e9dcba81c6daef2d515b6c4948c /include/net
parent6686c459e1449a3ee5f3fd313b0a559ace7a700e (diff)
parentf36b7534b83357cf52e747905de6d65b4f7c2512 (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.h11
-rw-r--r--include/net/ip6_route.h3
-rw-r--r--include/net/ip_fib.h1
-rw-r--r--include/net/mac80211.h4
-rw-r--r--include/net/route.h6
-rw-r--r--include/net/sch_generic.h19
-rw-r--r--include/net/sock.h1
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
340static 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
340static inline 347static inline
341int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst) 348int 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
350static inline bool ip_sk_accept_pmtu(const struct sock *sk) 357static 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);
183void rt6_sync_down_dev(struct net_device *dev, unsigned long event); 183void rt6_sync_down_dev(struct net_device *dev, unsigned long event);
184void rt6_multipath_rebalance(struct rt6_info *rt); 184void rt6_multipath_rebalance(struct rt6_info *rt);
185 185
186void rt6_uncached_list_add(struct rt6_info *rt);
187void rt6_uncached_list_del(struct rt6_info *rt);
188
186static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb) 189static 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;
225void fib_add_ifaddr(struct in_ifaddr *); 226void fib_add_ifaddr(struct in_ifaddr *);
226void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *); 227void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *);
227 228
229void rt_add_uncached_list(struct rtable *rt);
230void rt_del_uncached_list(struct rtable *rt);
231
228static inline void ip_rt_put(struct rtable *rt) 232static 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
827static 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
827static inline unsigned int __qdisc_queue_drop_head(struct Qdisc *sch, 837static 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
969static 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
1139int proto_register(struct proto *prot, int alloc_slab); 1139int proto_register(struct proto *prot, int alloc_slab);
1140void proto_unregister(struct proto *prot); 1140void proto_unregister(struct proto *prot);
1141int sock_load_diag_module(int family, int protocol);
1141 1142
1142#ifdef SOCK_REFCNT_DEBUG 1143#ifdef SOCK_REFCNT_DEBUG
1143static inline void sk_refcnt_debug_inc(struct sock *sk) 1144static inline void sk_refcnt_debug_inc(struct sock *sk)