X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fcpt%2Fcpt_mcode_defines.h;h=624bdcf3cfd6ac2e6236cc8631d5eb40bafa3dd7;hb=d38b62cd6ccffd1e269dbf9942f4f60022c38040;hp=d830bef015526fd2d0e2be6acb8e90aee376fe52;hpb=99faef8325632dd5100363579db921fd2d782d71;p=dpdk.git diff --git a/drivers/common/cpt/cpt_mcode_defines.h b/drivers/common/cpt/cpt_mcode_defines.h index d830bef015..624bdcf3cf 100644 --- a/drivers/common/cpt/cpt_mcode_defines.h +++ b/drivers/common/cpt/cpt_mcode_defines.h @@ -20,6 +20,9 @@ #define CPT_MAJOR_OP_ZUC_SNOW3G 0x37 #define CPT_MAJOR_OP_KASUMI 0x38 #define CPT_MAJOR_OP_MISC 0x01 +#define CPT_HMAC_FIRST_BIT_POS 0x4 +#define CPT_FC_MINOR_OP_ENCRYPT 0x0 +#define CPT_FC_MINOR_OP_DECRYPT 0x1 /* AE opcodes */ #define CPT_MAJOR_OP_MODEX 0x03 @@ -38,9 +41,6 @@ #define CPT_BLOCK_TYPE1 0 #define CPT_BLOCK_TYPE2 1 -#define CPT_BYTE_16 16 -#define CPT_BYTE_24 24 -#define CPT_BYTE_32 32 #define CPT_MAX_SG_IN_OUT_CNT 32 #define CPT_MAX_SG_CNT (CPT_MAX_SG_IN_OUT_CNT/2) @@ -106,7 +106,7 @@ typedef enum { SHA2_SHA384 = 5, SHA2_SHA512 = 6, GMAC_TYPE = 7, - XCBC_TYPE = 8, + POLY1305 = 8, SHA3_SHA224 = 10, SHA3_SHA256 = 11, SHA3_SHA384 = 12, @@ -136,6 +136,7 @@ typedef enum { AES_CTR = 0x6, AES_GCM = 0x7, AES_XTS = 0x8, + CHACHA20 = 0x9, /* These are only for software use */ ZUC_EEA3 = 0x90, @@ -241,12 +242,14 @@ struct cpt_sess_misc { uint16_t aes_gcm:1; /** Flag for AES CTR */ uint16_t aes_ctr:1; + /** Flag for CHACHA POLY */ + uint16_t chacha_poly:1; /** Flag for NULL cipher/auth */ uint16_t is_null:1; /** Flag for GMAC */ uint16_t is_gmac:1; - /** Engine group */ - uint16_t egrp:3; + /** Unused field */ + uint16_t rsvd1:3; /** AAD length */ uint16_t aad_length; /** MAC len in bytes */ @@ -255,53 +258,30 @@ struct cpt_sess_misc { uint8_t iv_length; /** Auth IV length in bytes */ uint8_t auth_iv_length; - /** Reserved field */ - uint8_t rsvd1; + /** Unused field */ + uint8_t rsvd2; /** IV offset in bytes */ uint16_t iv_offset; /** Auth IV offset in bytes */ uint16_t auth_iv_offset; /** Salt */ uint32_t salt; + /** CPT inst word 7 */ + uint64_t cpt_inst_w7; /** Context DMA address */ phys_addr_t ctx_dma_addr; }; -typedef union { - uint64_t flags; - struct { -#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN - uint64_t enc_cipher : 4; - uint64_t reserved1 : 1; - uint64_t aes_key : 2; - uint64_t iv_source : 1; - uint64_t hash_type : 4; - uint64_t reserved2 : 3; - uint64_t auth_input_type : 1; - uint64_t mac_len : 8; - uint64_t reserved3 : 8; - uint64_t encr_offset : 16; - uint64_t iv_offset : 8; - uint64_t auth_offset : 8; -#else - uint64_t auth_offset : 8; - uint64_t iv_offset : 8; - uint64_t encr_offset : 16; - uint64_t reserved3 : 8; - uint64_t mac_len : 8; - uint64_t auth_input_type : 1; - uint64_t reserved2 : 3; - uint64_t hash_type : 4; - uint64_t iv_source : 1; - uint64_t aes_key : 2; - uint64_t reserved1 : 1; - uint64_t enc_cipher : 4; -#endif - } e; -} encr_ctrl_t; - typedef struct { - encr_ctrl_t enc_ctrl; + uint64_t iv_source : 1; + uint64_t aes_key : 2; + uint64_t rsvd_60 : 1; + uint64_t enc_cipher : 4; + uint64_t auth_input_type : 1; + uint64_t rsvd_52_54 : 3; + uint64_t hash_type : 4; + uint64_t mac_len : 8; + uint64_t rsvd_39_0 : 40; uint8_t encr_key[32]; uint8_t encr_iv[16]; } mc_enc_context_t; @@ -337,15 +317,17 @@ struct cpt_ctx { uint64_t hmac :1; uint64_t zsk_flags :3; uint64_t k_ecb :1; + uint64_t auth_enc :1; + uint64_t dec_auth :1; uint64_t snow3g :2; - uint64_t rsvd :21; + uint64_t rsvd :19; /* Below fields are accessed by hardware */ union { mc_fc_context_t fctx; mc_zuc_snow3g_ctx_t zs_ctx; mc_kasumi_ctx_t k_ctx; - }; - uint8_t auth_key[64]; + } mc_ctx; + uint8_t auth_key[1024]; }; /* Prime and order fields of built-in elliptic curves */ @@ -375,6 +357,7 @@ struct cpt_asym_sess_misc { struct rte_crypto_modex_xform mod_ctx; struct cpt_asym_ec_ctx ec_ctx; }; + uint64_t cpt_inst_w7; }; /* Buffer pointer */ @@ -391,14 +374,6 @@ typedef struct{ buf_ptr_t bufs[0]; } iov_ptr_t; -typedef union opcode_info { - uint16_t flags; - struct { - uint8_t major; - uint8_t minor; - } s; -} opcode_info_t; - typedef struct fc_params { /* 0th cache line */ union { @@ -444,8 +419,6 @@ typedef mc_hash_type_t auth_type_t; /* Helper macros */ -#define CPT_P_ENC_CTRL(fctx) fctx->enc.enc_ctrl.e - #define SRC_IOV_SIZE \ (sizeof(iov_ptr_t) + (sizeof(buf_ptr_t) * CPT_MAX_SG_CNT)) #define DST_IOV_SIZE \ @@ -454,6 +427,9 @@ typedef mc_hash_type_t auth_type_t; #define SESS_PRIV(__sess) \ (void *)((uint8_t *)__sess + sizeof(struct cpt_sess_misc)) +#define GET_SESS_FC_TYPE(__sess) \ + (((struct cpt_ctx *)(SESS_PRIV(__sess)))->fc_type) + /* * Get the session size *