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

Function ccp_perform_sha3

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

Source from the content-addressed store, hash-verified

1949}
1950
1951static int
1952ccp_perform_sha3(struct rte_crypto_op *op,
1953 struct ccp_queue *cmd_q)
1954{
1955 struct ccp_session *session;
1956 union ccp_function function;
1957 struct ccp_desc *desc;
1958 uint8_t *ctx_addr = NULL, *append_ptr = NULL;
1959 uint32_t tail;
1960 phys_addr_t src_addr, dest_addr, ctx_paddr;
1961
1962 session = CRYPTODEV_GET_SYM_SESS_PRIV(op->sym->session);
1963
1964 src_addr = rte_pktmbuf_iova_offset(op->sym->m_src,
1965 op->sym->auth.data.offset);
1966 append_ptr = (uint8_t *)rte_pktmbuf_append(op->sym->m_src,
1967 session->auth.ctx_len);
1968 if (!append_ptr) {
1969 CCP_LOG_ERR("CCP MBUF append failed\n");
1970 return -1;
1971 }
1972 dest_addr = (phys_addr_t)rte_mem_virt2iova((void *)append_ptr);
1973 ctx_paddr = (phys_addr_t)rte_mem_virt2iova((void *)ctx_addr);
1974
1975 ctx_addr = session->auth.sha3_ctx;
1976
1977 desc = &cmd_q->qbase_desc[cmd_q->qidx];
1978 memset(desc, 0, Q_DESC_SIZE);
1979
1980 /* prepare desc for SHA3 operation */
1981 CCP_CMD_ENGINE(desc) = CCP_ENGINE_SHA;
1982 CCP_CMD_INIT(desc) = 1;
1983 CCP_CMD_EOM(desc) = 1;
1984
1985 function.raw = 0;
1986 CCP_SHA_TYPE(&function) = session->auth.ut.sha_type;
1987 CCP_CMD_FUNCTION(desc) = function.raw;
1988
1989 CCP_CMD_LEN(desc) = op->sym->auth.data.length;
1990
1991 CCP_CMD_SRC_LO(desc) = ((uint32_t)src_addr);
1992 CCP_CMD_SRC_HI(desc) = high32_value(src_addr);
1993 CCP_CMD_SRC_MEM(desc) = CCP_MEMTYPE_SYSTEM;
1994
1995 CCP_CMD_DST_LO(desc) = ((uint32_t)dest_addr);
1996 CCP_CMD_DST_HI(desc) = high32_value(dest_addr);
1997 CCP_CMD_DST_MEM(desc) = CCP_MEMTYPE_SYSTEM;
1998
1999 CCP_CMD_KEY_LO(desc) = ((uint32_t)ctx_paddr);
2000 CCP_CMD_KEY_HI(desc) = high32_value(ctx_paddr);
2001 CCP_CMD_KEY_MEM(desc) = CCP_MEMTYPE_SYSTEM;
2002
2003 cmd_q->qidx = (cmd_q->qidx + 1) % COMMANDS_PER_QUEUE;
2004
2005 rte_wmb();
2006
2007 tail = (uint32_t)(cmd_q->qbase_phys_addr + cmd_q->qidx * Q_DESC_SIZE);
2008 CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_TAIL_LO_BASE, tail);

Callers 1

ccp_crypto_authFunction · 0.85

Calls 4

rte_pktmbuf_appendFunction · 0.85
memsetFunction · 0.85
high32_valueFunction · 0.70
rte_mem_virt2iovaFunction · 0.50

Tested by

no test coverage detected