#ifndef __CHTLS_H__
#define __CHTLS_H__
#include <crypto/aes.h>
#include <crypto/hash.h>
#include <crypto/sha1.h>
#include <crypto/sha2.h>
#include <crypto/authenc.h>
#include <crypto/ctr.h>
#include <crypto/gf128mul.h>
#include <crypto/internal/aead.h>
#include <crypto/null.h>
#include <crypto/internal/skcipher.h>
#include <crypto/aead.h>
#include <crypto/scatterwalk.h>
#include <crypto/internal/hash.h>
#include <linux/tls.h>
#include <net/tls.h>
#include <net/tls_prot.h>
#include <net/tls_toe.h>
#include "t4fw_api.h"
#include "t4_msg.h"
#include "cxgb4.h"
#include "cxgb4_uld.h"
#include "l2t.h"
#include "chcr_algo.h"
#include "chcr_core.h"
#include "chcr_crypto.h"
#define CHTLS_DRV_VERSION …
#define TLS_KEYCTX_RXFLIT_CNT_S …
#define TLS_KEYCTX_RXFLIT_CNT_V(x) …
#define TLS_KEYCTX_RXPROT_VER_S …
#define TLS_KEYCTX_RXPROT_VER_M …
#define TLS_KEYCTX_RXPROT_VER_V(x) …
#define TLS_KEYCTX_RXCIPH_MODE_S …
#define TLS_KEYCTX_RXCIPH_MODE_M …
#define TLS_KEYCTX_RXCIPH_MODE_V(x) …
#define TLS_KEYCTX_RXAUTH_MODE_S …
#define TLS_KEYCTX_RXAUTH_MODE_M …
#define TLS_KEYCTX_RXAUTH_MODE_V(x) …
#define TLS_KEYCTX_RXCIAU_CTRL_S …
#define TLS_KEYCTX_RXCIAU_CTRL_V(x) …
#define TLS_KEYCTX_RX_SEQCTR_S …
#define TLS_KEYCTX_RX_SEQCTR_M …
#define TLS_KEYCTX_RX_SEQCTR_V(x) …
#define TLS_KEYCTX_RX_VALID_S …
#define TLS_KEYCTX_RX_VALID_V(x) …
#define TLS_KEYCTX_RXCK_SIZE_S …
#define TLS_KEYCTX_RXCK_SIZE_M …
#define TLS_KEYCTX_RXCK_SIZE_V(x) …
#define TLS_KEYCTX_RXMK_SIZE_S …
#define TLS_KEYCTX_RXMK_SIZE_M …
#define TLS_KEYCTX_RXMK_SIZE_V(x) …
#define KEYCTX_TX_WR_IV_S …
#define KEYCTX_TX_WR_IV_M …
#define KEYCTX_TX_WR_IV_V(x) …
#define KEYCTX_TX_WR_IV_G(x) …
#define KEYCTX_TX_WR_AAD_S …
#define KEYCTX_TX_WR_AAD_M …
#define KEYCTX_TX_WR_AAD_V(x) …
#define KEYCTX_TX_WR_AAD_G(x) …
#define KEYCTX_TX_WR_AADST_S …
#define KEYCTX_TX_WR_AADST_M …
#define KEYCTX_TX_WR_AADST_V(x) …
#define KEYCTX_TX_WR_AADST_G(x) …
#define KEYCTX_TX_WR_CIPHER_S …
#define KEYCTX_TX_WR_CIPHER_M …
#define KEYCTX_TX_WR_CIPHER_V(x) …
#define KEYCTX_TX_WR_CIPHER_G(x) …
#define KEYCTX_TX_WR_CIPHERST_S …
#define KEYCTX_TX_WR_CIPHERST_M …
#define KEYCTX_TX_WR_CIPHERST_V(x) …
#define KEYCTX_TX_WR_CIPHERST_G(x) …
#define KEYCTX_TX_WR_AUTH_S …
#define KEYCTX_TX_WR_AUTH_M …
#define KEYCTX_TX_WR_AUTH_V(x) …
#define KEYCTX_TX_WR_AUTH_G(x) …
#define KEYCTX_TX_WR_AUTHST_S …
#define KEYCTX_TX_WR_AUTHST_M …
#define KEYCTX_TX_WR_AUTHST_V(x) …
#define KEYCTX_TX_WR_AUTHST_G(x) …
#define KEYCTX_TX_WR_AUTHIN_S …
#define KEYCTX_TX_WR_AUTHIN_M …
#define KEYCTX_TX_WR_AUTHIN_V(x) …
#define KEYCTX_TX_WR_AUTHIN_G(x) …
struct sge_opaque_hdr { … };
#define MAX_IVS_PAGE …
#define TLS_KEY_CONTEXT_SZ …
#define CIPHER_BLOCK_SIZE …
#define GCM_TAG_SIZE …
#define KEY_ON_MEM_SZ …
#define AEAD_EXPLICIT_DATA_SIZE …
#define TLS_HEADER_LENGTH …
#define SCMD_CIPH_MODE_AES_GCM …
#define TLS_MFS …
#define RSS_HDR …
#define TLS_WR_CPL_LEN …
enum { … };
enum { … };
enum { … };
#define LISTEN_INFO_HASH_SIZE …
#define RSPQ_HASH_BITS …
struct listen_info { … };
enum { … };
enum csk_flags { … };
enum chtls_cdev_state { … };
struct listen_ctx { … };
struct key_map { … } __packed;
struct tls_scmd { … };
struct chtls_dev { … };
struct chtls_listen { … };
struct chtls_hws { … };
struct chtls_sock { … };
struct tls_hdr { … } __packed;
struct tlsrx_cmp_hdr { … } __packed;
#define TLSRX_HDR_PKT_INT_ERROR_S …
#define TLSRX_HDR_PKT_INT_ERROR_M …
#define TLSRX_HDR_PKT_INT_ERROR_V(x) …
#define TLSRX_HDR_PKT_INT_ERROR_G(x) …
#define TLSRX_HDR_PKT_INT_ERROR_F …
#define TLSRX_HDR_PKT_SPP_ERROR_S …
#define TLSRX_HDR_PKT_SPP_ERROR_M …
#define TLSRX_HDR_PKT_SPP_ERROR_V(x) …
#define TLSRX_HDR_PKT_SPP_ERROR_G(x) …
#define TLSRX_HDR_PKT_SPP_ERROR_F …
#define TLSRX_HDR_PKT_CCDX_ERROR_S …
#define TLSRX_HDR_PKT_CCDX_ERROR_M …
#define TLSRX_HDR_PKT_CCDX_ERROR_V(x) …
#define TLSRX_HDR_PKT_CCDX_ERROR_G(x) …
#define TLSRX_HDR_PKT_CCDX_ERROR_F …
#define TLSRX_HDR_PKT_PAD_ERROR_S …
#define TLSRX_HDR_PKT_PAD_ERROR_M …
#define TLSRX_HDR_PKT_PAD_ERROR_V(x) …
#define TLSRX_HDR_PKT_PAD_ERROR_G(x) …
#define TLSRX_HDR_PKT_PAD_ERROR_F …
#define TLSRX_HDR_PKT_MAC_ERROR_S …
#define TLSRX_HDR_PKT_MAC_ERROR_M …
#define TLSRX_HDR_PKT_MAC_ERROR_V(x) …
#define TLSRX_HDR_PKT_MAC_ERROR_G(x) …
#define TLSRX_HDR_PKT_MAC_ERROR_F …
#define TLSRX_HDR_PKT_ERROR_M …
#define CONTENT_TYPE_ERROR …
struct ulp_mem_rw { … };
struct tls_key_wr { … };
struct tls_key_req { … };
struct wr_skb_cb { … };
struct blog_skb_cb { … };
struct ulp_skb_cb { … };
#define ULP_SKB_CB(skb) …
#define BLOG_SKB_CB(skb) …
enum { … };
#define skb_ulp_mode(skb) …
#define TCP_PAGE(sk) …
#define TCP_OFF(sk) …
static inline struct chtls_dev *to_chtls_dev(struct tls_toe_device *tlsdev)
{ … }
static inline void csk_set_flag(struct chtls_sock *csk,
enum csk_flags flag)
{ … }
static inline void csk_reset_flag(struct chtls_sock *csk,
enum csk_flags flag)
{ … }
static inline bool csk_conn_inline(const struct chtls_sock *csk)
{ … }
static inline int csk_flag(const struct sock *sk, enum csk_flags flag)
{ … }
static inline int csk_flag_nochk(const struct chtls_sock *csk,
enum csk_flags flag)
{ … }
static inline void *cplhdr(struct sk_buff *skb)
{ … }
static inline int is_neg_adv(unsigned int status)
{ … }
static inline void process_cpl_msg(void (*fn)(struct sock *, struct sk_buff *),
struct sock *sk,
struct sk_buff *skb)
{ … }
static inline void chtls_sock_free(struct kref *ref)
{ … }
static inline void __chtls_sock_put(const char *fn, struct chtls_sock *csk)
{ … }
static inline void __chtls_sock_get(const char *fn,
struct chtls_sock *csk)
{ … }
static inline void send_or_defer(struct sock *sk, struct tcp_sock *tp,
struct sk_buff *skb, int through_l2t)
{ … }
chtls_handler_func;
extern chtls_handler_func chtls_handlers[NUM_CPL_CMDS];
void chtls_install_cpl_ops(struct sock *sk);
int chtls_init_kmap(struct chtls_dev *cdev, struct cxgb4_lld_info *lldi);
void chtls_listen_stop(struct chtls_dev *cdev, struct sock *sk);
int chtls_listen_start(struct chtls_dev *cdev, struct sock *sk);
void chtls_close(struct sock *sk, long timeout);
int chtls_disconnect(struct sock *sk, int flags);
void chtls_shutdown(struct sock *sk, int how);
void chtls_destroy_sock(struct sock *sk);
int chtls_sendmsg(struct sock *sk, struct msghdr *msg, size_t size);
int chtls_recvmsg(struct sock *sk, struct msghdr *msg,
size_t len, int flags, int *addr_len);
void chtls_splice_eof(struct socket *sock);
int send_tx_flowc_wr(struct sock *sk, int compl,
u32 snd_nxt, u32 rcv_nxt);
void chtls_tcp_push(struct sock *sk, int flags);
int chtls_push_frames(struct chtls_sock *csk, int comp);
int chtls_set_tcb_tflag(struct sock *sk, unsigned int bit_pos, int val);
void chtls_set_tcb_field_rpl_skb(struct sock *sk, u16 word,
u64 mask, u64 val, u8 cookie,
int through_l2t);
int chtls_setkey(struct chtls_sock *csk, u32 keylen, u32 mode, int cipher_type);
void chtls_set_quiesce_ctrl(struct sock *sk, int val);
void skb_entail(struct sock *sk, struct sk_buff *skb, int flags);
unsigned int keyid_to_addr(int start_addr, int keyid);
void free_tls_keyid(struct sock *sk);
#endif