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 list_head ptype_all; 27 struct kmem_cache *skbuff_cache; 28 struct kmem_cache *skbuff_fclone_cache; 29 struct kmem_cache *skb_small_head_cache; 30 #ifdef CONFIG_RPS 31 struct rps_sock_flow_table __rcu *rps_sock_flow_table; 32 u32 rps_cpu_mask; 33 #endif 34 int gro_normal_batch; 35 int netdev_budget; 36 int netdev_budget_usecs; 37 int tstamp_prequeue; 38 int max_backlog; 39 int dev_tx_weight; 40 int dev_rx_weight; 41 }; 42 43 #define inet_ehash_secret net_hotdata.tcp_protocol.secret 44 #define udp_ehash_secret net_hotdata.udp_protocol.secret 45 #define inet6_ehash_secret net_hotdata.tcpv6_protocol.secret 46 #define tcp_ipv6_hash_secret net_hotdata.tcpv6_offload.secret 47 #define udp6_ehash_secret net_hotdata.udpv6_protocol.secret 48 #define udp_ipv6_hash_secret net_hotdata.udpv6_offload.secret 49 50 extern struct net_hotdata net_hotdata; 51 52 #endif /* _NET_HOTDATA_H */ 53