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

Function ccp_perform_sha3_hmac

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

Source from the content-addressed store, hash-verified

1811}
1812
1813static int
1814ccp_perform_sha3_hmac(struct rte_crypto_op *op,
1815 struct ccp_queue *cmd_q)
1816{
1817 struct ccp_session *session;
1818 struct ccp_passthru pst;
1819 union ccp_function function;
1820 struct ccp_desc *desc;
1821 uint8_t *append_ptr;
1822 uint32_t tail;
1823 phys_addr_t src_addr, dest_addr, ctx_paddr, dest_addr_t;
1824
1825 session = CRYPTODEV_GET_SYM_SESS_PRIV(op->sym->session);
1826
1827 src_addr = rte_pktmbuf_iova_offset(op->sym->m_src,
1828 op->sym->auth.data.offset);
1829 append_ptr = (uint8_t *)rte_pktmbuf_append(op->sym->m_src,
1830 session->auth.ctx_len);
1831 if (!append_ptr) {
1832 CCP_LOG_ERR("CCP MBUF append failed\n");
1833 return -1;
1834 }
1835 dest_addr = (phys_addr_t)rte_mem_virt2iova((void *)append_ptr);
1836 ctx_paddr = (phys_addr_t)rte_mem_virt2iova(session->auth.pre_compute);
1837 dest_addr_t = dest_addr + (session->auth.ctx_len / 2);
1838 desc = &cmd_q->qbase_desc[cmd_q->qidx];
1839 memset(desc, 0, Q_DESC_SIZE);
1840
1841 /*desc1 for SHA3-Ihash operation */
1842 CCP_CMD_ENGINE(desc) = CCP_ENGINE_SHA;
1843 CCP_CMD_INIT(desc) = 1;
1844 CCP_CMD_EOM(desc) = 1;
1845
1846 function.raw = 0;
1847 CCP_SHA_TYPE(&function) = session->auth.ut.sha_type;
1848 CCP_CMD_FUNCTION(desc) = function.raw;
1849 CCP_CMD_LEN(desc) = op->sym->auth.data.length;
1850
1851 CCP_CMD_SRC_LO(desc) = ((uint32_t)src_addr);
1852 CCP_CMD_SRC_HI(desc) = high32_value(src_addr);
1853 CCP_CMD_SRC_MEM(desc) = CCP_MEMTYPE_SYSTEM;
1854
1855 CCP_CMD_DST_LO(desc) = (cmd_q->sb_sha * CCP_SB_BYTES);
1856 CCP_CMD_DST_HI(desc) = 0;
1857 CCP_CMD_DST_MEM(desc) = CCP_MEMTYPE_SB;
1858
1859 CCP_CMD_KEY_LO(desc) = ((uint32_t)ctx_paddr);
1860 CCP_CMD_KEY_HI(desc) = high32_value(ctx_paddr);
1861 CCP_CMD_KEY_MEM(desc) = CCP_MEMTYPE_SYSTEM;
1862
1863 cmd_q->qidx = (cmd_q->qidx + 1) % COMMANDS_PER_QUEUE;
1864
1865 rte_wmb();
1866 tail = (uint32_t)(cmd_q->qbase_phys_addr + cmd_q->qidx * Q_DESC_SIZE);
1867 CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_TAIL_LO_BASE, tail);
1868 CCP_WRITE_REG(cmd_q->reg_base, CMD_Q_CONTROL_BASE,
1869 cmd_q->qcontrol | CMD_Q_RUN);
1870

Callers 1

ccp_crypto_authFunction · 0.85

Calls 5

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

Tested by

no test coverage detected