| 1037 | }; |
| 1038 | |
| 1039 | static int __must_check |
| 1040 | ccp_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 | |
| 1073 | static int __must_check |
| 1074 | ccp_sha(struct ccp_queue *qp, enum sha_version version, struct sglist *sgl_src, |
no test coverage detected