Lines Matching refs:cse
279 struct csession *cse; member
336 struct csession *cse; in cse_create() local
497 cse = malloc(sizeof(struct csession), M_CRYPTODEV, M_WAITOK | M_ZERO); in cse_create()
498 mtx_init(&cse->lock, "cryptodev", "crypto session lock", MTX_DEF); in cse_create()
499 refcount_init(&cse->refs, 1); in cse_create()
500 cse->key = key; in cse_create()
501 cse->mackey = mackey; in cse_create()
502 cse->cses = cses; in cse_create()
504 cse->hashsize = sop->maclen; in cse_create()
506 cse->hashsize = thash->hashsize; in cse_create()
508 cse->hashsize = txform->macsize; in cse_create()
509 cse->ivsize = csp.csp_ivlen; in cse_create()
517 cse->blocksize = txform->blocksize; in cse_create()
519 cse->blocksize = 1; in cse_create()
522 TAILQ_INSERT_TAIL(&fcr->csessions, cse, next); in cse_create()
523 cse->ses = fcr->sesn++; in cse_create()
526 sop->ses = cse->ses; in cse_create()
529 sop->crid = crypto_ses2hid(cse->cses); in cse_create()
541 struct csession *cse; in cse_find() local
544 TAILQ_FOREACH(cse, &fcr->csessions, next) { in cse_find()
545 if (cse->ses == ses) { in cse_find()
546 refcount_acquire(&cse->refs); in cse_find()
548 return (cse); in cse_find()
556 cse_free(struct csession *cse) in cse_free() argument
559 if (!refcount_release(&cse->refs)) in cse_free()
561 crypto_freesession(cse->cses); in cse_free()
562 mtx_destroy(&cse->lock); in cse_free()
563 if (cse->key) in cse_free()
564 free(cse->key, M_CRYPTODEV); in cse_free()
565 if (cse->mackey) in cse_free()
566 free(cse->mackey, M_CRYPTODEV); in cse_free()
567 free(cse, M_CRYPTODEV); in cse_free()
573 struct csession *cse; in cse_delete() local
576 TAILQ_FOREACH(cse, &fcr->csessions, next) { in cse_delete()
577 if (cse->ses == ses) { in cse_delete()
578 TAILQ_REMOVE(&fcr->csessions, cse, next); in cse_delete()
580 cse_free(cse); in cse_delete()
589 cod_alloc(struct csession *cse, size_t aad_len, size_t len) in cod_alloc() argument
596 cod->cse = cse; in cod_alloc()
597 if (crypto_get_params(cse->cses)->csp_flags & CSP_F_SEPARATE_AAD) { in cod_alloc()
603 if (crypto_get_params(cse->cses)->csp_flags & CSP_F_SEPARATE_OUTPUT) in cod_alloc()
628 mtx_lock(&cod->cse->lock); in cryptodev_cb()
630 mtx_unlock(&cod->cse->lock); in cryptodev_cb()
636 cryptodev_op(struct csession *cse, const struct crypt_op *cop) in cryptodev_op() argument
649 if ((cop->len % cse->blocksize) != 0) { in cryptodev_op()
654 if (cop->mac && cse->hashsize == 0) { in cryptodev_op()
671 cod = cod_alloc(cse, 0, cop->len + cse->hashsize); in cryptodev_op()
674 crp = crypto_getreq(cse->cses, M_WAITOK); in cryptodev_op()
683 if (cse->hashsize) in cryptodev_op()
686 csp = crypto_get_params(cse->cses); in cryptodev_op()
704 (cop->iv == NULL && cop->len == cse->ivsize)) { in cryptodev_op()
738 if (cse->ivsize != 0 && cop->iv == NULL) { in cryptodev_op()
767 crypto_use_buf(crp, cod->buf, cop->len + cse->hashsize); in cryptodev_op()
769 crypto_use_output_buf(crp, cod->obuf, cop->len + cse->hashsize); in cryptodev_op()
774 if (cse->ivsize == 0) { in cryptodev_op()
779 error = copyin(cop->iv, crp->crp_iv, cse->ivsize); in cryptodev_op()
785 } else if (cse->ivsize != 0) { in cryptodev_op()
786 if (crp->crp_payload_length < cse->ivsize) { in cryptodev_op()
792 crp->crp_payload_length -= cse->ivsize; in cryptodev_op()
794 crp->crp_payload_start = cse->ivsize; in cryptodev_op()
795 dst += cse->ivsize; in cryptodev_op()
800 cse->hashsize); in cryptodev_op()
820 mtx_lock(&cse->lock); in cryptodev_op()
822 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0); in cryptodev_op()
823 mtx_unlock(&cse->lock); in cryptodev_op()
850 crp->crp_digest_start, cop->mac, cse->hashsize); in cryptodev_op()
865 cryptodev_aead(struct csession *cse, struct crypt_aead *caead) in cryptodev_aead() argument
878 if ((caead->len % cse->blocksize) != 0) { in cryptodev_aead()
883 if (cse->hashsize == 0 || caead->tag == NULL) { in cryptodev_aead()
900 cod = cod_alloc(cse, caead->aadlen, caead->len + cse->hashsize); in cryptodev_aead()
903 crp = crypto_getreq(cse->cses, M_WAITOK); in cryptodev_aead()
934 csp = crypto_get_params(cse->cses); in cryptodev_aead()
961 cse->hashsize); in cryptodev_aead()
964 cse->hashsize); in cryptodev_aead()
978 if (cse->ivsize == 0) { in cryptodev_aead()
983 if (caead->ivlen != cse->ivsize) { in cryptodev_aead()
989 error = copyin(caead->iv, crp->crp_iv, cse->ivsize); in cryptodev_aead()
1003 cse->hashsize); in cryptodev_aead()
1023 mtx_lock(&cse->lock); in cryptodev_aead()
1025 mtx_sleep(cod, &cse->lock, PWAIT, "crydev", 0); in cryptodev_aead()
1026 mtx_unlock(&cse->lock); in cryptodev_aead()
1053 crp->crp_digest_start, caead->tag, cse->hashsize); in cryptodev_aead()
1092 struct csession *cse; in fcrypt_dtor() local
1094 while ((cse = TAILQ_FIRST(&fcr->csessions))) { in fcrypt_dtor()
1095 TAILQ_REMOVE(&fcr->csessions, cse, next); in fcrypt_dtor()
1096 KASSERT(refcount_load(&cse->refs) == 1, in fcrypt_dtor()
1097 ("%s: crypto session %p with %d refs", __func__, cse, in fcrypt_dtor()
1098 refcount_load(&cse->refs))); in fcrypt_dtor()
1099 cse_free(cse); in fcrypt_dtor()
1125 struct csession *cse; in crypto_ioctl() local
1216 cse = cse_find(fcr, cop->ses); in crypto_ioctl()
1217 if (cse == NULL) { in crypto_ioctl()
1221 error = cryptodev_op(cse, cop); in crypto_ioctl()
1222 cse_free(cse); in crypto_ioctl()
1229 cse = cse_find(fcr, caead->ses); in crypto_ioctl()
1230 if (cse == NULL) { in crypto_ioctl()
1234 error = cryptodev_aead(cse, caead); in crypto_ioctl()
1235 cse_free(cse); in crypto_ioctl()