diff options
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/devlink.h | 18 | ||||
| -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 | 6 | ||||
| -rw-r--r-- | include/net/regulatory.h | 2 | ||||
| -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 | ||||
| -rw-r--r-- | include/net/udplite.h | 1 | 
10 files changed, 60 insertions, 8 deletions
diff --git a/include/net/devlink.h b/include/net/devlink.h index 6545b03e97f7..4de35ed12bcc 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -257,6 +257,18 @@ struct devlink_resource_size_params {  	enum devlink_resource_unit unit;  }; +static inline void +devlink_resource_size_params_init(struct devlink_resource_size_params *size_params, +				  u64 size_min, u64 size_max, +				  u64 size_granularity, +				  enum devlink_resource_unit unit) +{ +	size_params->size_min = size_min; +	size_params->size_max = size_max; +	size_params->size_granularity = size_granularity; +	size_params->unit = unit; +} +  /**   * struct devlink_resource - devlink resource   * @name: name of the resource @@ -278,7 +290,7 @@ struct devlink_resource {  	u64 size_new;  	bool size_valid;  	struct devlink_resource *parent; -	struct devlink_resource_size_params *size_params; +	struct devlink_resource_size_params size_params;  	struct list_head list;  	struct list_head resource_list;  	const struct devlink_resource_ops *resource_ops; @@ -402,7 +414,7 @@ int devlink_resource_register(struct devlink *devlink,  			      u64 resource_size,  			      u64 resource_id,  			      u64 parent_resource_id, -			      struct devlink_resource_size_params *size_params, +			      const struct devlink_resource_size_params *size_params,  			      const struct devlink_resource_ops *resource_ops);  void devlink_resources_unregister(struct devlink *devlink,  				  struct devlink_resource *resource); @@ -556,7 +568,7 @@ devlink_resource_register(struct devlink *devlink,  			  u64 resource_size,  			  u64 resource_id,  			  u64 parent_resource_id, -			  struct devlink_resource_size_params *size_params, +			  const struct devlink_resource_size_params *size_params,  			  const struct devlink_resource_ops *resource_ops)  {  	return 0; diff --git a/include/net/ip.h b/include/net/ip.h index 746abff9ce51..f49b3a576bec 100644 --- a/include/net/ip.h +++ b/include/net/ip.h @@ -328,6 +328,13 @@ int ip_decrease_ttl(struct iphdr *iph)  	return --iph->ttl;  } +static inline int ip_mtu_locked(const struct dst_entry *dst) +{ +	const struct rtable *rt = (const struct rtable *)dst; + +	return rt->rt_mtu_locked || dst_metric_locked(dst, RTAX_MTU); +} +  static inline  int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst)  { @@ -335,7 +342,7 @@ int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst)  	return  pmtudisc == IP_PMTUDISC_DO ||  		(pmtudisc == IP_PMTUDISC_WANT && -		 !(dst_metric_locked(dst, RTAX_MTU))); +		 !ip_mtu_locked(dst));  }  static inline bool ip_sk_accept_pmtu(const struct sock *sk) @@ -361,7 +368,7 @@ static inline unsigned int ip_dst_mtu_maybe_forward(const struct dst_entry *dst,  	struct net *net = dev_net(dst->dev);  	if (net->ipv4.sysctl_ip_fwd_use_pmtu || -	    dst_metric_locked(dst, RTAX_MTU) || +	    ip_mtu_locked(dst) ||  	    !forwarding)  		return dst_mtu(dst); diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index 27d23a65f3cd..ac0866bb9e93 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h @@ -179,6 +179,9 @@ void rt6_disable_ip(struct net_device *dev, unsigned long event);  void rt6_sync_down_dev(struct net_device *dev, unsigned long event);  void rt6_multipath_rebalance(struct rt6_info *rt); +void rt6_uncached_list_add(struct rt6_info *rt); +void rt6_uncached_list_del(struct rt6_info *rt); +  static inline const struct rt6_info *skb_rt6_info(const struct sk_buff *skb)  {  	const struct dst_entry *dst = skb_dst(skb); diff --git a/include/net/ip_fib.h b/include/net/ip_fib.h index f80524396c06..77d0a78cf7d2 100644 --- a/include/net/ip_fib.h +++ b/include/net/ip_fib.h @@ -59,6 +59,7 @@ struct fib_nh_exception {  	int				fnhe_genid;  	__be32				fnhe_daddr;  	u32				fnhe_pmtu; +	bool				fnhe_mtu_locked;  	__be32				fnhe_gw;  	unsigned long			fnhe_expires;  	struct rtable __rcu		*fnhe_rth_input; diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 906e90223066..2b581bd93812 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h @@ -2063,6 +2063,9 @@ struct ieee80211_txq {   * @IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA: Hardware supports buffer STA on   *	TDLS links.   * + * @IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP: The driver (or firmware) doesn't + *	support QoS NDP for AP probing - that's most likely a driver bug. + *   * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays   */  enum ieee80211_hw_flags { @@ -2106,6 +2109,7 @@ enum ieee80211_hw_flags {  	IEEE80211_HW_REPORTS_LOW_ACK,  	IEEE80211_HW_SUPPORTS_TX_FRAG,  	IEEE80211_HW_SUPPORTS_TDLS_BUFFER_STA, +	IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP,  	/* keep last, obviously */  	NUM_IEEE80211_HW_FLAGS @@ -4149,7 +4153,7 @@ void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid);   * The TX headroom reserved by mac80211 for its own tx_status functions.   * This is enough for the radiotap header.   */ -#define IEEE80211_TX_STATUS_HEADROOM	14 +#define IEEE80211_TX_STATUS_HEADROOM	ALIGN(14, 4)  /**   * ieee80211_sta_set_buffered - inform mac80211 about driver-buffered frames diff --git a/include/net/regulatory.h b/include/net/regulatory.h index ebc5a2ed8631..f83cacce3308 100644 --- a/include/net/regulatory.h +++ b/include/net/regulatory.h @@ -78,7 +78,7 @@ struct regulatory_request {  	int wiphy_idx;  	enum nl80211_reg_initiator initiator;  	enum nl80211_user_reg_hint_type user_reg_hint_type; -	char alpha2[2]; +	char alpha2[3];  	enum nl80211_dfs_regions dfs_region;  	bool intersect;  	bool processed; diff --git a/include/net/route.h b/include/net/route.h index 1eb9ce470e25..20a92ca9e115 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -63,7 +63,8 @@ struct rtable {  	__be32			rt_gateway;  	/* Miscellaneous cached information */ -	u32			rt_pmtu; +	u32			rt_mtu_locked:1, +				rt_pmtu:31;  	u32			rt_table_id; @@ -227,6 +228,9 @@ struct in_ifaddr;  void fib_add_ifaddr(struct in_ifaddr *);  void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *); +void rt_add_uncached_list(struct rtable *rt); +void rt_del_uncached_list(struct rtable *rt); +  static inline void ip_rt_put(struct rtable *rt)  {  	/* dst_release() accepts a NULL parameter. diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index e2ab13687fb9..2092d33194dd 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)  	*to_free = skb;  } +static inline void __qdisc_drop_all(struct sk_buff *skb, +				    struct sk_buff **to_free) +{ +	if (skb->prev) +		skb->prev->next = *to_free; +	else +		skb->next = *to_free; +	*to_free = skb; +} +  static inline unsigned int __qdisc_queue_drop_head(struct Qdisc *sch,  						   struct qdisc_skb_head *qh,  						   struct sk_buff **to_free) @@ -956,6 +966,15 @@ static inline int qdisc_drop(struct sk_buff *skb, struct Qdisc *sch,  	return NET_XMIT_DROP;  } +static inline int qdisc_drop_all(struct sk_buff *skb, struct Qdisc *sch, +				 struct sk_buff **to_free) +{ +	__qdisc_drop_all(skb, to_free); +	qdisc_qstats_drop(sch); + +	return NET_XMIT_DROP; +} +  /* Length to Time (L2T) lookup in a qdisc_rate_table, to determine how     long it will take to send a packet given its size.   */ diff --git a/include/net/sock.h b/include/net/sock.h index 169c92afcafa..ae23f3b389ca 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -1137,6 +1137,7 @@ struct proto {  int proto_register(struct proto *prot, int alloc_slab);  void proto_unregister(struct proto *prot); +int sock_load_diag_module(int family, int protocol);  #ifdef SOCK_REFCNT_DEBUG  static inline void sk_refcnt_debug_inc(struct sock *sk) diff --git a/include/net/udplite.h b/include/net/udplite.h index 81bdbf97319b..9185e45b997f 100644 --- a/include/net/udplite.h +++ b/include/net/udplite.h @@ -64,6 +64,7 @@ static inline int udplite_checksum_init(struct sk_buff *skb, struct udphdr *uh)  		UDP_SKB_CB(skb)->cscov = cscov;  		if (skb->ip_summed == CHECKSUM_COMPLETE)  			skb->ip_summed = CHECKSUM_NONE; +		skb->csum_valid = 0;          }  	return 0;  | 

