MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ccp_perform_aes_cmac

Function ccp_perform_aes_cmac

dpdk/drivers/crypto/ccp/ccp_crypto.c:2016–2164  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2014}
2015
2016static int
2017ccp_perform_aes_cmac(struct rte_crypto_op *op,
2018 struct ccp_queue *cmd_q)
2019{
2020 struct ccp_session *session;
2021 union ccp_function function;
2022 struct ccp_passthru pst;
2023 struct ccp_desc *desc;
2024 uint32_t tail;
2025 uint8_t *src_tb, *append_ptr, *ctx_addr;
2026 phys_addr_t src_addr, dest_addr, key_addr;
2027 int length, non_align_len;
2028
2029 session = CRYPTODEV_GET_SYM_SESS_PRIV(op->sym->session);
2030 key_addr = rte_mem_virt2phy(session->auth.key_ccp);
2031
2032 src_addr = rte_pktmbuf_iova_offset(op->sym->m_src,
2033 op->sym->auth.data.offset);
2034 append_ptr = (uint8_t *)rte_pktmbuf_append(op->sym->m_src,
2035 session->auth.ctx_len);
2036 dest_addr = (phys_addr_t)rte_mem_virt2phy((void *)append_ptr);
2037
2038 function.raw = 0;
2039 CCP_AES_ENCRYPT(&function) = CCP_CIPHER_DIR_ENCRYPT;
2040 CCP_AES_MODE(&function) = session->auth.um.aes_mode;
2041 CCP_AES_TYPE(&function) = session->auth.ut.aes_type;
2042
2043 if (op->sym->auth.data.length % session->auth.block_size == 0) {
2044
2045 ctx_addr = session->auth.pre_compute;
2046 memset(ctx_addr, 0, AES_BLOCK_SIZE);
2047 pst.src_addr = (phys_addr_t)rte_mem_virt2iova((void *)ctx_addr);
2048 pst.dest_addr = (phys_addr_t)(cmd_q->sb_iv * CCP_SB_BYTES);
2049 pst.len = CCP_SB_BYTES;
2050 pst.dir = 1;
2051 pst.bit_mod = CCP_PASSTHRU_BITWISE_NOOP;
2052 pst.byte_swap = CCP_PASSTHRU_BYTESWAP_NOOP;
2053 ccp_perform_passthru(&pst, cmd_q);
2054
2055 desc = &cmd_q->qbase_desc[cmd_q->qidx];
2056 memset(desc, 0, Q_DESC_SIZE);
2057
2058 /* prepare desc for aes-cmac command */
2059 CCP_CMD_ENGINE(desc) = CCP_ENGINE_AES;
2060 CCP_CMD_EOM(desc) = 1;
2061 CCP_CMD_FUNCTION(desc) = function.raw;
2062
2063 CCP_CMD_LEN(desc) = op->sym->auth.data.length;
2064 CCP_CMD_SRC_LO(desc) = ((uint32_t)src_addr);
2065 CCP_CMD_SRC_HI(desc) = high32_value(src_addr);
2066 CCP_CMD_SRC_MEM(desc) = CCP_MEMTYPE_SYSTEM;
2067
2068 CCP_CMD_KEY_LO(desc) = ((uint32_t)key_addr);
2069 CCP_CMD_KEY_HI(desc) = high32_value(key_addr);
2070 CCP_CMD_KEY_MEM(desc) = CCP_MEMTYPE_SYSTEM;
2071 CCP_CMD_LSB_ID(desc) = cmd_q->sb_iv;
2072
2073 cmd_q->qidx = (cmd_q->qidx + 1) % COMMANDS_PER_QUEUE;

Callers 1

ccp_crypto_authFunction · 0.85

Calls 7

rte_pktmbuf_appendFunction · 0.85
memsetFunction · 0.85
ccp_perform_passthruFunction · 0.85
high32_valueFunction · 0.70
rte_mem_virt2phyFunction · 0.50
rte_mem_virt2iovaFunction · 0.50
rte_memcpyFunction · 0.50

Tested by

no test coverage detected