aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAtul Gupta <atul.gupta@chelsio.com>2018-03-31 12:11:56 -0400
committerDavid S. Miller <davem@davemloft.net>2018-03-31 23:37:32 -0400
commit639d28a1a40785ba36eec57b4d5d6b21be67196f (patch)
tree697b5e7e78108d715d812f17ed91ea8db8b7828e
parente383f2483425c267654d7ba184843f79d39feb4a (diff)
crypto: chcr - Inline TLS Key Macros
Define macro for programming the TLS Key context Signed-off-by: Atul Gupta <atul.gupta@chelsio.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/crypto/chelsio/chcr_algo.h42
-rw-r--r--drivers/crypto/chelsio/chcr_core.h55
2 files changed, 96 insertions, 1 deletions
diff --git a/drivers/crypto/chelsio/chcr_algo.h b/drivers/crypto/chelsio/chcr_algo.h
index d1673a5d4bf5..f263cd42a84f 100644
--- a/drivers/crypto/chelsio/chcr_algo.h
+++ b/drivers/crypto/chelsio/chcr_algo.h
@@ -86,6 +86,39 @@
86 KEY_CONTEXT_OPAD_PRESENT_M) 86 KEY_CONTEXT_OPAD_PRESENT_M)
87#define KEY_CONTEXT_OPAD_PRESENT_F KEY_CONTEXT_OPAD_PRESENT_V(1U) 87#define KEY_CONTEXT_OPAD_PRESENT_F KEY_CONTEXT_OPAD_PRESENT_V(1U)
88 88
89#define TLS_KEYCTX_RXFLIT_CNT_S 24
90#define TLS_KEYCTX_RXFLIT_CNT_V(x) ((x) << TLS_KEYCTX_RXFLIT_CNT_S)
91
92#define TLS_KEYCTX_RXPROT_VER_S 20
93#define TLS_KEYCTX_RXPROT_VER_M 0xf
94#define TLS_KEYCTX_RXPROT_VER_V(x) ((x) << TLS_KEYCTX_RXPROT_VER_S)
95
96#define TLS_KEYCTX_RXCIPH_MODE_S 16
97#define TLS_KEYCTX_RXCIPH_MODE_M 0xf
98#define TLS_KEYCTX_RXCIPH_MODE_V(x) ((x) << TLS_KEYCTX_RXCIPH_MODE_S)
99
100#define TLS_KEYCTX_RXAUTH_MODE_S 12
101#define TLS_KEYCTX_RXAUTH_MODE_M 0xf
102#define TLS_KEYCTX_RXAUTH_MODE_V(x) ((x) << TLS_KEYCTX_RXAUTH_MODE_S)
103
104#define TLS_KEYCTX_RXCIAU_CTRL_S 11
105#define TLS_KEYCTX_RXCIAU_CTRL_V(x) ((x) << TLS_KEYCTX_RXCIAU_CTRL_S)
106
107#define TLS_KEYCTX_RX_SEQCTR_S 9
108#define TLS_KEYCTX_RX_SEQCTR_M 0x3
109#define TLS_KEYCTX_RX_SEQCTR_V(x) ((x) << TLS_KEYCTX_RX_SEQCTR_S)
110
111#define TLS_KEYCTX_RX_VALID_S 8
112#define TLS_KEYCTX_RX_VALID_V(x) ((x) << TLS_KEYCTX_RX_VALID_S)
113
114#define TLS_KEYCTX_RXCK_SIZE_S 3
115#define TLS_KEYCTX_RXCK_SIZE_M 0x7
116#define TLS_KEYCTX_RXCK_SIZE_V(x) ((x) << TLS_KEYCTX_RXCK_SIZE_S)
117
118#define TLS_KEYCTX_RXMK_SIZE_S 0
119#define TLS_KEYCTX_RXMK_SIZE_M 0x7
120#define TLS_KEYCTX_RXMK_SIZE_V(x) ((x) << TLS_KEYCTX_RXMK_SIZE_S)
121
89#define CHCR_HASH_MAX_DIGEST_SIZE 64 122#define CHCR_HASH_MAX_DIGEST_SIZE 64
90#define CHCR_MAX_SHA_DIGEST_SIZE 64 123#define CHCR_MAX_SHA_DIGEST_SIZE 64
91 124
@@ -176,6 +209,15 @@
176 KEY_CONTEXT_SALT_PRESENT_V(1) | \ 209 KEY_CONTEXT_SALT_PRESENT_V(1) | \
177 KEY_CONTEXT_CTX_LEN_V((ctx_len))) 210 KEY_CONTEXT_CTX_LEN_V((ctx_len)))
178 211
212#define FILL_KEY_CRX_HDR(ck_size, mk_size, d_ck, opad, ctx_len) \
213 htonl(TLS_KEYCTX_RXMK_SIZE_V(mk_size) | \
214 TLS_KEYCTX_RXCK_SIZE_V(ck_size) | \
215 TLS_KEYCTX_RX_VALID_V(1) | \
216 TLS_KEYCTX_RX_SEQCTR_V(3) | \
217 TLS_KEYCTX_RXAUTH_MODE_V(4) | \
218 TLS_KEYCTX_RXCIPH_MODE_V(2) | \
219 TLS_KEYCTX_RXFLIT_CNT_V((ctx_len)))
220
179#define FILL_WR_OP_CCTX_SIZE \ 221#define FILL_WR_OP_CCTX_SIZE \
180 htonl( \ 222 htonl( \
181 FW_CRYPTO_LOOKASIDE_WR_OPCODE_V( \ 223 FW_CRYPTO_LOOKASIDE_WR_OPCODE_V( \
diff --git a/drivers/crypto/chelsio/chcr_core.h b/drivers/crypto/chelsio/chcr_core.h
index 3c29ee09b8b5..77056a90c8e1 100644
--- a/drivers/crypto/chelsio/chcr_core.h
+++ b/drivers/crypto/chelsio/chcr_core.h
@@ -65,10 +65,58 @@ struct uld_ctx;
65struct _key_ctx { 65struct _key_ctx {
66 __be32 ctx_hdr; 66 __be32 ctx_hdr;
67 u8 salt[MAX_SALT]; 67 u8 salt[MAX_SALT];
68 __be64 reserverd; 68 __be64 iv_to_auth;
69 unsigned char key[0]; 69 unsigned char key[0];
70}; 70};
71 71
72#define KEYCTX_TX_WR_IV_S 55
73#define KEYCTX_TX_WR_IV_M 0x1ffULL
74#define KEYCTX_TX_WR_IV_V(x) ((x) << KEYCTX_TX_WR_IV_S)
75#define KEYCTX_TX_WR_IV_G(x) \
76 (((x) >> KEYCTX_TX_WR_IV_S) & KEYCTX_TX_WR_IV_M)
77
78#define KEYCTX_TX_WR_AAD_S 47
79#define KEYCTX_TX_WR_AAD_M 0xffULL
80#define KEYCTX_TX_WR_AAD_V(x) ((x) << KEYCTX_TX_WR_AAD_S)
81#define KEYCTX_TX_WR_AAD_G(x) (((x) >> KEYCTX_TX_WR_AAD_S) & \
82 KEYCTX_TX_WR_AAD_M)
83
84#define KEYCTX_TX_WR_AADST_S 39
85#define KEYCTX_TX_WR_AADST_M 0xffULL
86#define KEYCTX_TX_WR_AADST_V(x) ((x) << KEYCTX_TX_WR_AADST_S)
87#define KEYCTX_TX_WR_AADST_G(x) \
88 (((x) >> KEYCTX_TX_WR_AADST_S) & KEYCTX_TX_WR_AADST_M)
89
90#define KEYCTX_TX_WR_CIPHER_S 30
91#define KEYCTX_TX_WR_CIPHER_M 0x1ffULL
92#define KEYCTX_TX_WR_CIPHER_V(x) ((x) << KEYCTX_TX_WR_CIPHER_S)
93#define KEYCTX_TX_WR_CIPHER_G(x) \
94 (((x) >> KEYCTX_TX_WR_CIPHER_S) & KEYCTX_TX_WR_CIPHER_M)
95
96#define KEYCTX_TX_WR_CIPHERST_S 23
97#define KEYCTX_TX_WR_CIPHERST_M 0x7f
98#define KEYCTX_TX_WR_CIPHERST_V(x) ((x) << KEYCTX_TX_WR_CIPHERST_S)
99#define KEYCTX_TX_WR_CIPHERST_G(x) \
100 (((x) >> KEYCTX_TX_WR_CIPHERST_S) & KEYCTX_TX_WR_CIPHERST_M)
101
102#define KEYCTX_TX_WR_AUTH_S 14
103#define KEYCTX_TX_WR_AUTH_M 0x1ff
104#define KEYCTX_TX_WR_AUTH_V(x) ((x) << KEYCTX_TX_WR_AUTH_S)
105#define KEYCTX_TX_WR_AUTH_G(x) \
106 (((x) >> KEYCTX_TX_WR_AUTH_S) & KEYCTX_TX_WR_AUTH_M)
107
108#define KEYCTX_TX_WR_AUTHST_S 7
109#define KEYCTX_TX_WR_AUTHST_M 0x7f
110#define KEYCTX_TX_WR_AUTHST_V(x) ((x) << KEYCTX_TX_WR_AUTHST_S)
111#define KEYCTX_TX_WR_AUTHST_G(x) \
112 (((x) >> KEYCTX_TX_WR_AUTHST_S) & KEYCTX_TX_WR_AUTHST_M)
113
114#define KEYCTX_TX_WR_AUTHIN_S 0
115#define KEYCTX_TX_WR_AUTHIN_M 0x7f
116#define KEYCTX_TX_WR_AUTHIN_V(x) ((x) << KEYCTX_TX_WR_AUTHIN_S)
117#define KEYCTX_TX_WR_AUTHIN_G(x) \
118 (((x) >> KEYCTX_TX_WR_AUTHIN_S) & KEYCTX_TX_WR_AUTHIN_M)
119
72struct chcr_wr { 120struct chcr_wr {
73 struct fw_crypto_lookaside_wr wreq; 121 struct fw_crypto_lookaside_wr wreq;
74 struct ulp_txpkt ulptx; 122 struct ulp_txpkt ulptx;
@@ -90,6 +138,11 @@ struct uld_ctx {
90 struct chcr_dev *dev; 138 struct chcr_dev *dev;
91}; 139};
92 140
141struct sge_opaque_hdr {
142 void *dev;
143 dma_addr_t addr[MAX_SKB_FRAGS + 1];
144};
145
93struct chcr_ipsec_req { 146struct chcr_ipsec_req {
94 struct ulp_txpkt ulptx; 147 struct ulp_txpkt ulptx;
95 struct ulptx_idata sc_imm; 148 struct ulptx_idata sc_imm;