Lines Matching defs:cap
133 struct cryptocap *cap;
215 static int crypto_invoke(struct cryptocap *cap, struct cryptop *crp, int hint);
272 cap_ref(struct cryptocap *cap)
275 refcount_acquire(&cap->cc_refs);
276 return (cap);
280 cap_rele(struct cryptocap *cap)
283 if (refcount_release(&cap->cc_refs) == 0)
286 KASSERT(cap->cc_sessions == 0,
289 free(cap, M_CRYPTO_DATA);
471 return (crypto_session->cap->cc_hid);
477 return (crypto_session->cap->cc_flags & 0xff000000);
600 struct cryptocap *cap, *best;
612 cap = crypto_drivers[hid];
613 if (cap == NULL ||
614 (cap->cc_flags & flags) == 0)
617 error = CRYPTODEV_PROBESESSION(cap->cc_dev, csp);
629 cap->cc_sessions < best->cc_sessions)) {
630 best = cap;
920 struct cryptocap *cap;
922 cap = cses->cap;
927 cap->cc_sessions--;
928 if (cap->cc_sessions == 0 && cap->cc_flags & CRYPTOCAP_F_CLEANUP)
929 wakeup(cap);
931 cap_rele(cap);
946 struct cryptocap *cap;
959 cap = crypto_checkdriver(crid);
960 if (cap != NULL && CRYPTODEV_PROBESESSION(cap->cc_dev, csp) > 0)
961 cap = NULL;
966 cap = crypto_select_driver(csp, crid);
968 if (cap == NULL) {
973 cap_ref(cap);
974 cap->cc_sessions++;
978 res = malloc(sizeof(*res) + cap->cc_session_size, M_CRYPTO_DATA,
980 res->cap = cap;
985 err = CRYPTODEV_NEWSESSION(cap->cc_dev, res, csp);
1003 struct cryptocap *cap;
1008 cap = cses->cap;
1011 CRYPTODEV_FREESESSION(cap->cc_dev, cses);
1023 struct cryptocap *cap, **newdrv;
1032 cap = malloc(sizeof(*cap), M_CRYPTO_DATA, M_WAITOK | M_ZERO);
1033 cap->cc_dev = dev;
1034 cap->cc_session_size = sessionsize;
1035 cap->cc_flags = flags;
1036 refcount_init(&cap->cc_refs, 1);
1053 cap_rele(cap);
1071 cap->cc_hid = i;
1072 crypto_drivers[i] = cap;
1091 struct cryptocap *cap;
1098 cap = crypto_drivers[i];
1099 if (strncmp(match, device_get_nameunit(cap->cc_dev), len) == 0 ||
1100 strncmp(match, device_get_name(cap->cc_dev), len) == 0) {
1116 struct cryptocap *cap;
1121 cap = crypto_checkdriver(hid);
1122 if (cap != NULL)
1123 dev = cap->cc_dev;
1134 struct cryptocap *cap;
1139 cap = crypto_checkdriver(hid);
1140 if (cap != NULL)
1141 flags = cap->cc_flags;
1156 struct cryptocap *cap;
1159 cap = crypto_checkdriver(driverid);
1160 if (cap == NULL) {
1165 cap->cc_flags |= CRYPTOCAP_F_CLEANUP;
1172 while (cap->cc_sessions != 0)
1173 mtx_sleep(cap, &crypto_drivers_mtx, 0, "cryunreg", 0);
1175 cap_rele(cap);
1187 struct cryptocap *cap;
1191 cap = crypto_checkdriver(driverid);
1192 if (cap != NULL) {
1194 cap->cc_qblocked = 0;
1408 struct cryptocap *cap;
1423 cap = crp->crp_session->cap;
1424 if (!atomic_load_int(&cap->cc_qblocked)) {
1425 result = crypto_invoke(cap, crp, hint);
1503 struct cryptocap *cap;
1508 cap = crp->crp_session->cap;
1509 result = crypto_invoke(cap, crp, 0);
1518 crypto_invoke(struct cryptocap *cap, struct cryptop *crp, int hint)
1528 if (cap->cc_flags & CRYPTOCAP_F_CLEANUP) {
1576 error = CRYPTODEV_PROCESS(cap->cc_dev, crp, hint);
1762 struct cryptocap *cap;
1779 cap = crp->crp_session->cap;
1784 KASSERT(cap != NULL, ("%s:%u Driver disappeared.",
1786 if (cap->cc_flags & CRYPTOCAP_F_CLEANUP) {
1792 if (!cap->cc_qblocked) {
1802 if (submit->crp_session->cap == cap)
1812 cap = submit->crp_session->cap;
1813 KASSERT(cap != NULL, ("%s:%u Driver disappeared.",
1816 result = crypto_invoke(cap, submit, hint);
1828 cap->cc_qblocked = 1;
1926 const struct cryptocap *cap = crypto_drivers[hid];
1927 if (cap == NULL)
1930 , device_get_nameunit(cap->cc_dev)
1931 , cap->cc_sessions
1932 , cap->cc_flags
1933 , cap->cc_qblocked
1951 , crp->crp_session->cap->cc_hid
1956 , device_get_nameunit(crp->crp_session->cap->cc_dev)
1967 , crp->crp_session->cap->cc_hid