1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 #ifndef _NET_HOTDATA_H 3 #define _NET_HOTDATA_H 4 5 #include <linux/types.h> 6 #include <linux/netdevice.h> 7 #include <net/protocol.h> 8 9 /* Read mostly data used in network fast paths. */ 10 struct net_hotdata { 11 #if IS_ENABLED(CONFIG_INET) 12 struct packet_offload ip_packet_offload; 13 struct net_offload tcpv4_offload; 14 struct net_protocol tcp_protocol; 15 struct net_offload udpv4_offload; 16 struct net_protocol udp_protocol; 17 struct packet_offload ipv6_packet_offload; 18 struct net_offload tcpv6_offload; 19 #if IS_ENABLED(CONFIG_IPV6) 20 struct inet6_protocol tcpv6_protocol; 21 struct inet6_protocol udpv6_protocol; 22 #endif 23 struct net_offload udpv6_offload; 24 #endif 25 struct list_head offload_base; 26 struct kmem_cache *skbuff_cache; 27 struct kmem_cache *skbuff_fclone_cache; 28 struct kmem_cache *skb_small_head_cache; 29 #ifdef CONFIG_RPS 30 struct rps_sock_flow_table __rcu *rps_sock_flow_table; 31 u32 rps_cpu_mask; 32 #endif 33 int gro_normal_batch; 34 int netdev_budget; 35 int netdev_budget_usecs; 36 int tstamp_prequeue; 37 int max_backlog; 38 int dev_tx_weight; 39 int dev_rx_weight; 40 int sysctl_max_skb_frags; 41 int sysctl_skb_defer_max; 42 int sysctl_mem_pcpu_rsv; 43 }; 44 45 #define inet_ehash_secret net_hotdata.tcp_protocol.secret 46 #define udp_ehash_secret net_hotdata.udp_protocol.secret 47 #define inet6_ehash_secret net_hotdata.tcpv6_protocol.secret 48 #define tcp_ipv6_hash_secret net_hotdata.tcpv6_offload.secret 49 #define udp6_ehash_secret net_hotdata.udpv6_protocol.secret 50 #define udp_ipv6_hash_secret net_hotdata.udpv6_offload.secret 51 52 extern struct net_hotdata net_hotdata; 53 54 #endif /* _NET_HOTDATA_H */ 55