net/tls: reorganize struct tls_context
struct tls_context is slightly badly laid out. If we reorder things right we can save 16 bytes (320 -> 304) but also make all fast path data fit into two cache lines (one read only and one read/write, down from four cache lines). Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9cd81988cc
commit
f0aaa2c975
@ -236,34 +236,32 @@ struct tls_prot_info {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct tls_context {
|
struct tls_context {
|
||||||
|
/* read-only cache line */
|
||||||
struct tls_prot_info prot_info;
|
struct tls_prot_info prot_info;
|
||||||
|
|
||||||
union tls_crypto_context crypto_send;
|
|
||||||
union tls_crypto_context crypto_recv;
|
|
||||||
|
|
||||||
struct list_head list;
|
|
||||||
struct net_device *netdev;
|
|
||||||
refcount_t refcount;
|
|
||||||
|
|
||||||
void *priv_ctx_tx;
|
|
||||||
void *priv_ctx_rx;
|
|
||||||
|
|
||||||
u8 tx_conf:3;
|
u8 tx_conf:3;
|
||||||
u8 rx_conf:3;
|
u8 rx_conf:3;
|
||||||
|
|
||||||
|
int (*push_pending_record)(struct sock *sk, int flags);
|
||||||
|
void (*sk_write_space)(struct sock *sk);
|
||||||
|
|
||||||
|
void *priv_ctx_tx;
|
||||||
|
void *priv_ctx_rx;
|
||||||
|
|
||||||
|
struct net_device *netdev;
|
||||||
|
|
||||||
|
/* rw cache line */
|
||||||
struct cipher_context tx;
|
struct cipher_context tx;
|
||||||
struct cipher_context rx;
|
struct cipher_context rx;
|
||||||
|
|
||||||
struct scatterlist *partially_sent_record;
|
struct scatterlist *partially_sent_record;
|
||||||
u16 partially_sent_offset;
|
u16 partially_sent_offset;
|
||||||
|
|
||||||
unsigned long flags;
|
|
||||||
bool in_tcp_sendpages;
|
bool in_tcp_sendpages;
|
||||||
bool pending_open_record_frags;
|
bool pending_open_record_frags;
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
int (*push_pending_record)(struct sock *sk, int flags);
|
/* cache cold stuff */
|
||||||
|
|
||||||
void (*sk_write_space)(struct sock *sk);
|
|
||||||
void (*sk_destruct)(struct sock *sk);
|
void (*sk_destruct)(struct sock *sk);
|
||||||
void (*sk_proto_close)(struct sock *sk, long timeout);
|
void (*sk_proto_close)(struct sock *sk, long timeout);
|
||||||
|
|
||||||
@ -275,6 +273,12 @@ struct tls_context {
|
|||||||
int __user *optlen);
|
int __user *optlen);
|
||||||
int (*hash)(struct sock *sk);
|
int (*hash)(struct sock *sk);
|
||||||
void (*unhash)(struct sock *sk);
|
void (*unhash)(struct sock *sk);
|
||||||
|
|
||||||
|
union tls_crypto_context crypto_send;
|
||||||
|
union tls_crypto_context crypto_recv;
|
||||||
|
|
||||||
|
struct list_head list;
|
||||||
|
refcount_t refcount;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum tls_offload_ctx_dir {
|
enum tls_offload_ctx_dir {
|
||||||
|
Loading…
Reference in New Issue
Block a user