65 lines · 1.8 KB · C
RawDownload
/* SPDX-License-Identifier: GPL-2.0-or-later */#ifndef _NET_HOTDATA_H#define _NET_HOTDATA_H #include <linux/llist.h>#include <linux/types.h>#include <linux/netdevice.h>#include <net/protocol.h>#ifdef CONFIG_RPS#include <net/rps-types.h>#endif struct skb_defer_node {	struct llist_head	defer_list;	atomic_long_t		defer_count;} ____cacheline_aligned_in_smp; /* Read mostly data used in network fast paths. */struct net_hotdata {#if IS_ENABLED(CONFIG_INET)	struct packet_offload	ip_packet_offload;	struct net_offload	tcpv4_offload;	struct net_protocol	tcp_protocol;	struct net_offload 	udpv4_offload;	struct net_protocol	udp_protocol;	struct packet_offload	ipv6_packet_offload;	struct net_offload	tcpv6_offload;#if IS_ENABLED(CONFIG_IPV6)	struct inet6_protocol	tcpv6_protocol;	struct inet6_protocol	udpv6_protocol;#endif	struct net_offload	udpv6_offload;#endif	struct list_head	offload_base;	struct kmem_cache	*skbuff_cache;	struct kmem_cache	*skbuff_fclone_cache;	struct kmem_cache	*skb_small_head_cache;#ifdef CONFIG_RPS	rps_tag_ptr		rps_sock_flow_table;	u32			rps_cpu_mask;#endif	struct skb_defer_node __percpu *skb_defer_nodes;	int			gro_normal_batch;	int			netdev_budget;	int			netdev_budget_usecs;	int			tstamp_prequeue;	int			max_backlog;	int			qdisc_max_burst;	int			dev_tx_weight;	int			dev_rx_weight;	int			sysctl_max_skb_frags;	int			sysctl_skb_defer_max;	int			sysctl_mem_pcpu_rsv;}; #define inet_ehash_secret	net_hotdata.tcp_protocol.secret#define udp_ehash_secret	net_hotdata.udp_protocol.secret#define inet6_ehash_secret	net_hotdata.tcpv6_protocol.secret#define tcp_ipv6_hash_secret	net_hotdata.tcpv6_offload.secret#define udp6_ehash_secret	net_hotdata.udpv6_protocol.secret#define udp_ipv6_hash_secret	net_hotdata.udpv6_offload.secret extern struct net_hotdata net_hotdata; #endif /* _NET_HOTDATA_H */