| 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ | 
|---|---|
| 2 | #ifndef _NET_ALIGNED_DATA_H | 
| 3 | #define _NET_ALIGNED_DATA_H | 
| 4 | |
| 5 | #include <linux/atomic.h> | 
| 6 | #include <linux/types.h> | 
| 7 | |
| 8 | /* Structure holding cacheline aligned fields on SMP builds. | 
| 9 | * Each field or group should have an ____cacheline_aligned_in_smp | 
| 10 | * attribute to ensure no accidental false sharing can happen. | 
| 11 | */ | 
| 12 | struct net_aligned_data { | 
| 13 | atomic64_t net_cookie ____cacheline_aligned_in_smp; | 
| 14 | #if defined(CONFIG_INET) | 
| 15 | atomic_long_t tcp_memory_allocated ____cacheline_aligned_in_smp; | 
| 16 | atomic_long_t udp_memory_allocated ____cacheline_aligned_in_smp; | 
| 17 | #endif | 
| 18 | }; | 
| 19 | |
| 20 | extern struct net_aligned_data net_aligned_data; | 
| 21 | |
| 22 | #endif /* _NET_ALIGNED_DATA_H */ | 
| 23 | 
