|
@@ -343,6 +343,9 @@ struct sock {
|
|
|
#define sk_rxhash __sk_common.skc_rxhash
|
|
|
|
|
|
socket_lock_t sk_lock;
|
|
|
+ atomic_t sk_drops;
|
|
|
+ int sk_rcvlowat;
|
|
|
+ struct sk_buff_head sk_error_queue;
|
|
|
struct sk_buff_head sk_receive_queue;
|
|
|
/*
|
|
|
* The backlog queue is special, it is always used with
|
|
@@ -359,14 +362,13 @@ struct sock {
|
|
|
struct sk_buff *tail;
|
|
|
} sk_backlog;
|
|
|
#define sk_rmem_alloc sk_backlog.rmem_alloc
|
|
|
- int sk_forward_alloc;
|
|
|
|
|
|
- __u32 sk_txhash;
|
|
|
+ int sk_forward_alloc;
|
|
|
#ifdef CONFIG_NET_RX_BUSY_POLL
|
|
|
- unsigned int sk_napi_id;
|
|
|
unsigned int sk_ll_usec;
|
|
|
+ /* ===== mostly read cache line ===== */
|
|
|
+ unsigned int sk_napi_id;
|
|
|
#endif
|
|
|
- atomic_t sk_drops;
|
|
|
int sk_rcvbuf;
|
|
|
|
|
|
struct sk_filter __rcu *sk_filter;
|
|
@@ -379,11 +381,30 @@ struct sock {
|
|
|
#endif
|
|
|
struct dst_entry *sk_rx_dst;
|
|
|
struct dst_entry __rcu *sk_dst_cache;
|
|
|
- /* Note: 32bit hole on 64bit arches */
|
|
|
- atomic_t sk_wmem_alloc;
|
|
|
atomic_t sk_omem_alloc;
|
|
|
int sk_sndbuf;
|
|
|
+
|
|
|
+ /* ===== cache line for TX ===== */
|
|
|
+ int sk_wmem_queued;
|
|
|
+ atomic_t sk_wmem_alloc;
|
|
|
+ unsigned long sk_tsq_flags;
|
|
|
+ struct sk_buff *sk_send_head;
|
|
|
struct sk_buff_head sk_write_queue;
|
|
|
+ __s32 sk_peek_off;
|
|
|
+ int sk_write_pending;
|
|
|
+ long sk_sndtimeo;
|
|
|
+ struct timer_list sk_timer;
|
|
|
+ __u32 sk_priority;
|
|
|
+ __u32 sk_mark;
|
|
|
+ u32 sk_pacing_rate; /* bytes per second */
|
|
|
+ u32 sk_max_pacing_rate;
|
|
|
+ struct page_frag sk_frag;
|
|
|
+ netdev_features_t sk_route_caps;
|
|
|
+ netdev_features_t sk_route_nocaps;
|
|
|
+ int sk_gso_type;
|
|
|
+ unsigned int sk_gso_max_size;
|
|
|
+ gfp_t sk_allocation;
|
|
|
+ __u32 sk_txhash;
|
|
|
|
|
|
/*
|
|
|
* Because of non atomicity rules, all
|
|
@@ -414,42 +435,24 @@ struct sock {
|
|
|
#define SK_PROTOCOL_MAX U8_MAX
|
|
|
kmemcheck_bitfield_end(flags);
|
|
|
|
|
|
- int sk_wmem_queued;
|
|
|
- gfp_t sk_allocation;
|
|
|
- u32 sk_pacing_rate; /* bytes per second */
|
|
|
- u32 sk_max_pacing_rate;
|
|
|
- netdev_features_t sk_route_caps;
|
|
|
- netdev_features_t sk_route_nocaps;
|
|
|
- int sk_gso_type;
|
|
|
- unsigned int sk_gso_max_size;
|
|
|
u16 sk_gso_max_segs;
|
|
|
- int sk_rcvlowat;
|
|
|
unsigned long sk_lingertime;
|
|
|
- struct sk_buff_head sk_error_queue;
|
|
|
struct proto *sk_prot_creator;
|
|
|
rwlock_t sk_callback_lock;
|
|
|
int sk_err,
|
|
|
sk_err_soft;
|
|
|
u32 sk_ack_backlog;
|
|
|
u32 sk_max_ack_backlog;
|
|
|
- __u32 sk_priority;
|
|
|
- __u32 sk_mark;
|
|
|
kuid_t sk_uid;
|
|
|
struct pid *sk_peer_pid;
|
|
|
const struct cred *sk_peer_cred;
|
|
|
long sk_rcvtimeo;
|
|
|
- long sk_sndtimeo;
|
|
|
- struct timer_list sk_timer;
|
|
|
ktime_t sk_stamp;
|
|
|
u16 sk_tsflags;
|
|
|
u8 sk_shutdown;
|
|
|
u32 sk_tskey;
|
|
|
struct socket *sk_socket;
|
|
|
void *sk_user_data;
|
|
|
- struct page_frag sk_frag;
|
|
|
- struct sk_buff *sk_send_head;
|
|
|
- __s32 sk_peek_off;
|
|
|
- int sk_write_pending;
|
|
|
#ifdef CONFIG_SECURITY
|
|
|
void *sk_security;
|
|
|
#endif
|