diff options
author | Atul Gupta <atul.gupta@chelsio.com> | 2018-03-31 12:11:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-03-31 23:37:32 -0400 |
commit | 639d28a1a40785ba36eec57b4d5d6b21be67196f (patch) | |
tree | 697b5e7e78108d715d812f17ed91ea8db8b7828e | |
parent | e383f2483425c267654d7ba184843f79d39feb4a (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.h | 42 | ||||
-rw-r--r-- | drivers/crypto/chelsio/chcr_core.h | 55 |
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; | |||
65 | struct _key_ctx { | 65 | struct _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 | |||
72 | struct chcr_wr { | 120 | struct 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 | ||
141 | struct sge_opaque_hdr { | ||
142 | void *dev; | ||
143 | dma_addr_t addr[MAX_SKB_FRAGS + 1]; | ||
144 | }; | ||
145 | |||
93 | struct chcr_ipsec_req { | 146 | struct 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; |