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

Function ccp_sha_single_desc

freebsd/crypto/ccp/ccp_hardware.c:1039–1071  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1037};
1038
1039static int __must_check
1040ccp_sha_single_desc(struct ccp_queue *qp, const struct SHA_Defn *defn,
1041 vm_paddr_t addr, size_t len, bool start, bool end, uint64_t msgbits)
1042{
1043 struct ccp_desc *desc;
1044
1045 if (ccp_queue_get_ring_space(qp) == 0)
1046 return (EAGAIN);
1047
1048 desc = &qp->desc_ring[qp->cq_tail];
1049
1050 memset(desc, 0, sizeof(*desc));
1051 desc->engine = CCP_ENGINE_SHA;
1052 desc->som = start;
1053 desc->eom = end;
1054
1055 desc->sha.type = defn->engine_type;
1056 desc->length = len;
1057
1058 if (end) {
1059 desc->sha_len_lo = (uint32_t)msgbits;
1060 desc->sha_len_hi = msgbits >> 32;
1061 }
1062
1063 desc->src_lo = (uint32_t)addr;
1064 desc->src_hi = addr >> 32;
1065 desc->src_mem = CCP_MEMTYPE_SYSTEM;
1066
1067 desc->lsb_ctx_id = ccp_queue_lsb_entry(qp, LSB_ENTRY_SHA);
1068
1069 qp->cq_tail = (qp->cq_tail + 1) % (1 << qp->cq_softc->ring_size_order);
1070 return (0);
1071}
1072
1073static int __must_check
1074ccp_sha(struct ccp_queue *qp, enum sha_version version, struct sglist *sgl_src,

Callers 1

ccp_shaFunction · 0.85

Calls 3

ccp_queue_get_ring_spaceFunction · 0.85
memsetFunction · 0.85
ccp_queue_lsb_entryFunction · 0.85

Tested by

no test coverage detected