Lines Matching refs:n2rng
52 void n2rng_ksinit(n2rng_t *n2rng);
53 void n2rng_ksdeinit(n2rng_t *n2rng);
55 static int fips_init(n2rng_t *n2rng);
56 static void fips_fini(n2rng_t *n2rng);
57 int fips_random(n2rng_t *n2rng, uint8_t *out, size_t nbytes);
124 n2rng_t *n2rng = (n2rng_t *)prov; in ext_info() local
155 ddi_driver_name(n2rng->n_dip), in ext_info()
156 ddi_get_instance(n2rng->n_dip)); in ext_info()
181 n2rng_t *n2rng = (n2rng_t *)targ; in unregister_task() local
184 (void) n2rng_unregister_provider(n2rng); in unregister_task()
191 n2rng_register_provider(n2rng_t *n2rng) in n2rng_register_provider() argument
195 if (n2rng_isregistered(n2rng)) { in n2rng_register_provider()
196 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider already " in n2rng_register_provider()
201 &n2rng->n_prov); in n2rng_register_provider()
203 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider " in n2rng_register_provider()
208 n2rng->n_prov = 0; in n2rng_register_provider()
212 n2rng_setregistered(n2rng); in n2rng_register_provider()
213 crypto_provider_notification(n2rng->n_prov, CRYPTO_PROVIDER_READY); in n2rng_register_provider()
222 n2rng_unregister_provider(n2rng_t *n2rng) in n2rng_unregister_provider() argument
224 if (!n2rng_isregistered(n2rng)) { in n2rng_unregister_provider()
225 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider already " in n2rng_unregister_provider()
228 if (crypto_unregister_provider(n2rng->n_prov) == in n2rng_unregister_provider()
230 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider " in n2rng_unregister_provider()
233 n2rng_error(n2rng, "unable to unregister from kcf"); in n2rng_unregister_provider()
237 n2rng->n_prov = 0; in n2rng_unregister_provider()
238 n2rng_clrregistered(n2rng); in n2rng_unregister_provider()
248 n2rng_failure(n2rng_t *n2rng) in n2rng_failure() argument
253 mutex_enter(&n2rng->n_lock); in n2rng_failure()
255 if (n2rng_isfailed(n2rng)) { in n2rng_failure()
256 mutex_exit(&n2rng->n_lock); in n2rng_failure()
261 n2rng_setfailed(n2rng); in n2rng_failure()
264 if (n2rng_iscontrol(n2rng)) { in n2rng_failure()
265 for (rngid = 0; rngid < n2rng->n_ctl_data->n_num_rngs; in n2rng_failure()
267 rng = &n2rng->n_ctl_data->n_rngs[rngid]; in n2rng_failure()
271 mutex_exit(&n2rng->n_lock); in n2rng_failure()
274 if (ddi_taskq_dispatch(n2rng->n_taskq, unregister_task, in n2rng_failure()
275 (void *)n2rng, DDI_SLEEP) != DDI_SUCCESS) { in n2rng_failure()
285 n2rng_unconfigured(n2rng_t *n2rng) in n2rng_unconfigured() argument
290 mutex_enter(&n2rng->n_lock); in n2rng_unconfigured()
292 if (!n2rng_isconfigured(n2rng)) { in n2rng_unconfigured()
293 mutex_exit(&n2rng->n_lock); in n2rng_unconfigured()
298 n2rng_clrconfigured(n2rng); in n2rng_unconfigured()
301 if (n2rng_iscontrol(n2rng)) { in n2rng_unconfigured()
302 for (rngid = 0; rngid < n2rng->n_ctl_data->n_num_rngs; in n2rng_unconfigured()
304 rng = &n2rng->n_ctl_data->n_rngs[rngid]; in n2rng_unconfigured()
308 mutex_exit(&n2rng->n_lock); in n2rng_unconfigured()
311 if (ddi_taskq_dispatch(n2rng->n_taskq, unregister_task, in n2rng_unconfigured()
312 (void *)n2rng, DDI_SLEEP) != DDI_SUCCESS) { in n2rng_unconfigured()
316 n2rng_config_retry(n2rng, RNG_CFG_RETRY_SECS); in n2rng_unconfigured()
324 n2rng_init(n2rng_t *n2rng) in n2rng_init() argument
330 dip = n2rng->n_dip; in n2rng_init()
333 if (!n2rng_isinitialized(n2rng)) { in n2rng_init()
335 n2rng_ksinit(n2rng); in n2rng_init()
338 ret = fips_init(n2rng); in n2rng_init()
340 n2rng_ksdeinit(n2rng); in n2rng_init()
354 n2rng_prov_info.pi_provider_handle = n2rng; in n2rng_init()
355 n2rng_setinitialized(n2rng); in n2rng_init()
356 ret = n2rng_register_provider(n2rng); in n2rng_init()
358 fips_fini(n2rng); in n2rng_init()
359 n2rng_ksdeinit(n2rng); in n2rng_init()
360 n2rng_clrinitialized(n2rng); in n2rng_init()
371 n2rng_uninit(n2rng_t *n2rng) in n2rng_uninit() argument
374 if (n2rng_isinitialized(n2rng)) { in n2rng_uninit()
379 if (n2rng_unregister_provider(n2rng) != DDI_SUCCESS) { in n2rng_uninit()
383 fips_fini(n2rng); in n2rng_uninit()
386 n2rng_ksdeinit(n2rng); in n2rng_uninit()
387 n2rng_clrinitialized(n2rng); in n2rng_uninit()
412 n2rng_t *n2rng = (n2rng_t *)provider; in n2rng_random_number() local
415 rv = fips_random(n2rng, buf, buflen); in n2rng_random_number()
417 atomic_add_64(&n2rng->n_stats[DS_RNGBYTES], buflen); in n2rng_random_number()
418 atomic_inc_64(&n2rng->n_stats[DS_RNGJOBS]); in n2rng_random_number()
424 fips_init(n2rng_t *n2rng) in fips_init() argument
429 n2rng->n_frs.fips_round_robin_j = 0; in fips_init()
431 rv = n2rng_fips_random_init(n2rng, &n2rng->n_frs.fipsarray[i]); in fips_init()
436 &n2rng->n_frs.fipsarray[i]); in fips_init()
445 fips_fini(n2rng_t *n2rng) in fips_fini() argument
450 n2rng_fips_random_fini(&n2rng->n_frs.fipsarray[i]); in fips_fini()