diff options
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) |