Lines Matching refs:cap

140 	struct cryptocap *cap;  member
236 static int crypto_invoke(struct cryptocap *cap, struct cryptop *crp, int hint);
301 cap_ref(struct cryptocap *cap) in cap_ref() argument
304 refcount_acquire(&cap->cc_refs); in cap_ref()
305 return (cap); in cap_ref()
309 cap_rele(struct cryptocap *cap) in cap_rele() argument
312 if (refcount_release(&cap->cc_refs) == 0) in cap_rele()
315 KASSERT(cap->cc_sessions == 0, in cap_rele()
317 KASSERT(cap->cc_koperations == 0, in cap_rele()
320 free(cap, M_CRYPTO_DATA); in cap_rele()
504 return (crypto_session->cap->cc_hid); in crypto_ses2hid()
510 return (crypto_session->cap->cc_flags & 0xff000000); in crypto_ses2caps()
629 struct cryptocap *cap, *best; in crypto_select_driver() local
641 cap = crypto_drivers[hid]; in crypto_select_driver()
642 if (cap == NULL || in crypto_select_driver()
643 (cap->cc_flags & flags) == 0) in crypto_select_driver()
646 error = CRYPTODEV_PROBESESSION(cap->cc_dev, csp); in crypto_select_driver()
658 cap->cc_sessions < best->cc_sessions)) { in crypto_select_driver()
659 best = cap; in crypto_select_driver()
939 struct cryptocap *cap; in crypto_deletesession() local
941 cap = cses->cap; in crypto_deletesession()
946 cap->cc_sessions--; in crypto_deletesession()
947 if (cap->cc_sessions == 0 && cap->cc_flags & CRYPTOCAP_F_CLEANUP) in crypto_deletesession()
948 wakeup(cap); in crypto_deletesession()
950 cap_rele(cap); in crypto_deletesession()
965 struct cryptocap *cap; in crypto_newsession() local
978 cap = crypto_checkdriver(crid); in crypto_newsession()
979 if (cap != NULL && CRYPTODEV_PROBESESSION(cap->cc_dev, csp) > 0) in crypto_newsession()
980 cap = NULL; in crypto_newsession()
985 cap = crypto_select_driver(csp, crid); in crypto_newsession()
987 if (cap == NULL) { in crypto_newsession()
992 cap_ref(cap); in crypto_newsession()
993 cap->cc_sessions++; in crypto_newsession()
997 res = malloc(sizeof(*res) + cap->cc_session_size, M_CRYPTO_DATA, in crypto_newsession()
999 res->cap = cap; in crypto_newsession()
1004 err = CRYPTODEV_NEWSESSION(cap->cc_dev, res, csp); in crypto_newsession()
1022 struct cryptocap *cap; in crypto_freesession() local
1027 cap = cses->cap; in crypto_freesession()
1030 CRYPTODEV_FREESESSION(cap->cc_dev, cses); in crypto_freesession()
1042 struct cryptocap *cap, **newdrv; in crypto_get_driverid() local
1051 cap = malloc(sizeof(*cap), M_CRYPTO_DATA, M_WAITOK | M_ZERO); in crypto_get_driverid()
1052 cap->cc_dev = dev; in crypto_get_driverid()
1053 cap->cc_session_size = sessionsize; in crypto_get_driverid()
1054 cap->cc_flags = flags; in crypto_get_driverid()
1055 refcount_init(&cap->cc_refs, 1); in crypto_get_driverid()
1072 cap_rele(cap); in crypto_get_driverid()
1090 cap->cc_hid = i; in crypto_get_driverid()
1091 crypto_drivers[i] = cap; in crypto_get_driverid()
1110 struct cryptocap *cap; in crypto_find_driver() local
1117 cap = crypto_drivers[i]; in crypto_find_driver()
1118 if (strncmp(match, device_get_nameunit(cap->cc_dev), len) == 0 || in crypto_find_driver()
1119 strncmp(match, device_get_name(cap->cc_dev), len) == 0) { in crypto_find_driver()
1135 struct cryptocap *cap; in crypto_find_device_byhid() local
1140 cap = crypto_checkdriver(hid); in crypto_find_device_byhid()
1141 if (cap != NULL) in crypto_find_device_byhid()
1142 dev = cap->cc_dev; in crypto_find_device_byhid()
1153 struct cryptocap *cap; in crypto_getcaps() local
1158 cap = crypto_checkdriver(hid); in crypto_getcaps()
1159 if (cap != NULL) in crypto_getcaps()
1160 flags = cap->cc_flags; in crypto_getcaps()
1172 struct cryptocap *cap; in crypto_kregister() local
1177 cap = crypto_checkdriver(driverid); in crypto_kregister()
1178 if (cap != NULL && in crypto_kregister()
1186 cap->cc_kalg[kalg] = flags | CRYPTO_ALG_FLAG_SUPPORTED; in crypto_kregister()
1189 , device_get_nameunit(cap->cc_dev) in crypto_kregister()
1193 gone_in_dev(cap->cc_dev, 14, "asymmetric crypto"); in crypto_kregister()
1212 struct cryptocap *cap; in crypto_unregister_all() local
1215 cap = crypto_checkdriver(driverid); in crypto_unregister_all()
1216 if (cap == NULL) { in crypto_unregister_all()
1221 cap->cc_flags |= CRYPTOCAP_F_CLEANUP; in crypto_unregister_all()
1228 while (cap->cc_sessions != 0 || cap->cc_koperations != 0) in crypto_unregister_all()
1229 mtx_sleep(cap, &crypto_drivers_mtx, 0, "cryunreg", 0); in crypto_unregister_all()
1231 cap_rele(cap); in crypto_unregister_all()
1243 struct cryptocap *cap; in crypto_unblock() local
1247 cap = crypto_checkdriver(driverid); in crypto_unblock()
1248 if (cap != NULL) { in crypto_unblock()
1250 cap->cc_qblocked = 0; in crypto_unblock()
1252 cap->cc_kqblocked = 0; in crypto_unblock()
1463 struct cryptocap *cap; in crypto_dispatch() local
1496 cap = crp->crp_session->cap; in crypto_dispatch()
1497 if (!cap->cc_qblocked) { in crypto_dispatch()
1498 result = crypto_invoke(cap, crp, 0); in crypto_dispatch()
1550 kdriver_suitable(const struct cryptocap *cap, const struct cryptkop *krp) in kdriver_suitable() argument
1552 return (cap->cc_kalg[krp->krp_op] & CRYPTO_ALG_FLAG_SUPPORTED) != 0; in kdriver_suitable()
1568 struct cryptocap *cap, *best; in crypto_select_kdriver() local
1588 cap = crypto_drivers[hid]; in crypto_select_kdriver()
1589 if (cap == NULL || in crypto_select_kdriver()
1590 (cap->cc_flags & match) == 0) in crypto_select_kdriver()
1594 if (kdriver_suitable(cap, krp)) { in crypto_select_kdriver()
1596 cap->cc_koperations < best->cc_koperations) in crypto_select_kdriver()
1597 best = cap; in crypto_select_kdriver()
1616 struct cryptocap *cap; in crypto_lookup_kdriver() local
1620 cap = krp->krp_cap; in crypto_lookup_kdriver()
1621 if (cap != NULL) in crypto_lookup_kdriver()
1622 return (cap); in crypto_lookup_kdriver()
1627 cap = crypto_checkdriver(crid); in crypto_lookup_kdriver()
1628 if (cap != NULL) { in crypto_lookup_kdriver()
1635 if (!kdriver_suitable(cap, krp) || in crypto_lookup_kdriver()
1637 (cap->cc_flags & CRYPTOCAP_F_HARDWARE) == 0)) in crypto_lookup_kdriver()
1638 cap = NULL; in crypto_lookup_kdriver()
1646 cap = crypto_select_kdriver(krp, crid); in crypto_lookup_kdriver()
1649 if (cap != NULL) { in crypto_lookup_kdriver()
1650 krp->krp_cap = cap_ref(cap); in crypto_lookup_kdriver()
1651 krp->krp_hid = cap->cc_hid; in crypto_lookup_kdriver()
1653 return (cap); in crypto_lookup_kdriver()
1662 struct cryptocap *cap = NULL; in crypto_kinvoke() local
1670 cap = crypto_lookup_kdriver(krp); in crypto_kinvoke()
1671 if (cap == NULL) { in crypto_kinvoke()
1681 if (cap->cc_kqblocked) { in crypto_kinvoke()
1691 cap->cc_koperations++; in crypto_kinvoke()
1693 error = CRYPTODEV_KPROCESS(cap->cc_dev, krp, 0); in crypto_kinvoke()
1696 cap->cc_koperations--; in crypto_kinvoke()
1708 struct cryptocap *cap; in crypto_task_invoke() local
1713 cap = crp->crp_session->cap; in crypto_task_invoke()
1714 result = crypto_invoke(cap, crp, 0); in crypto_task_invoke()
1723 crypto_invoke(struct cryptocap *cap, struct cryptop *crp, int hint) in crypto_invoke() argument
1732 if (cap->cc_flags & CRYPTOCAP_F_CLEANUP) { in crypto_invoke()
1778 return CRYPTODEV_PROCESS(cap->cc_dev, crp, hint); in crypto_invoke()
1925 struct cryptocap *cap; in crypto_kdone() local
1929 cap = krp->krp_cap; in crypto_kdone()
1930 if (cap != NULL) { in crypto_kdone()
1932 KASSERT(cap->cc_koperations > 0, ("cc_koperations == 0")); in crypto_kdone()
1933 cap->cc_koperations--; in crypto_kdone()
1934 if (cap->cc_koperations == 0 && in crypto_kdone()
1935 cap->cc_flags & CRYPTOCAP_F_CLEANUP) in crypto_kdone()
1936 wakeup(cap); in crypto_kdone()
1939 cap_rele(cap); in crypto_kdone()
1958 const struct cryptocap *cap = crypto_drivers[hid]; in crypto_getfeat() local
1960 if (cap == NULL || in crypto_getfeat()
1961 ((cap->cc_flags & CRYPTOCAP_F_SOFTWARE) && in crypto_getfeat()
1966 if (cap->cc_kalg[kalg] & CRYPTO_ALG_FLAG_SUPPORTED) in crypto_getfeat()
2000 struct cryptocap *cap; in crypto_dispatch_thread() local
2017 cap = crp->crp_session->cap; in crypto_dispatch_thread()
2022 KASSERT(cap != NULL, ("%s:%u Driver disappeared.", in crypto_dispatch_thread()
2024 if (cap->cc_flags & CRYPTOCAP_F_CLEANUP) { in crypto_dispatch_thread()
2030 if (!cap->cc_qblocked) { in crypto_dispatch_thread()
2040 if (submit->crp_session->cap == cap) in crypto_dispatch_thread()
2053 cap = submit->crp_session->cap; in crypto_dispatch_thread()
2054 KASSERT(cap != NULL, ("%s:%u Driver disappeared.", in crypto_dispatch_thread()
2057 result = crypto_invoke(cap, submit, hint); in crypto_dispatch_thread()
2069 cap->cc_qblocked = 1; in crypto_dispatch_thread()
2077 cap = krp->krp_cap; in crypto_dispatch_thread()
2078 if (cap->cc_flags & CRYPTOCAP_F_CLEANUP) { in crypto_dispatch_thread()
2085 cap_rele(cap); in crypto_dispatch_thread()
2088 if (!cap->cc_kqblocked) in crypto_dispatch_thread()
2215 const struct cryptocap *cap = crypto_drivers[hid]; in db_show_drivers() local
2216 if (cap == NULL) in db_show_drivers()
2219 , device_get_nameunit(cap->cc_dev) in db_show_drivers()
2220 , cap->cc_sessions in db_show_drivers()
2221 , cap->cc_koperations in db_show_drivers()
2222 , cap->cc_flags in db_show_drivers()
2223 , cap->cc_qblocked in db_show_drivers()
2224 , cap->cc_kqblocked in db_show_drivers()
2242 , crp->crp_session->cap->cc_hid in DB_SHOW_COMMAND()
2247 , device_get_nameunit(crp->crp_session->cap->cc_dev) in DB_SHOW_COMMAND()
2258 , crp->crp_session->cap->cc_hid in DB_SHOW_COMMAND()