| /* 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 */ |