Lines Matching defs:n2rng

39 #include <sys/n2rng.h>
54 void n2rng_ksinit(n2rng_t *n2rng);
55 void n2rng_ksdeinit(n2rng_t *n2rng);
57 static int fips_init(n2rng_t *n2rng);
58 static void fips_fini(n2rng_t *n2rng);
59 int fips_random(n2rng_t *n2rng, uint8_t *out, size_t nbytes);
126 n2rng_t *n2rng = (n2rng_t *)prov;
157 ddi_driver_name(n2rng->n_dip),
158 ddi_get_instance(n2rng->n_dip));
183 n2rng_t *n2rng = (n2rng_t *)targ;
186 (void) n2rng_unregister_provider(n2rng);
193 n2rng_register_provider(n2rng_t *n2rng)
197 if (n2rng_isregistered(n2rng)) {
198 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider already "
203 &n2rng->n_prov);
205 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider "
210 n2rng->n_prov = NULL;
214 n2rng_setregistered(n2rng);
215 crypto_provider_notification(n2rng->n_prov, CRYPTO_PROVIDER_READY);
224 n2rng_unregister_provider(n2rng_t *n2rng)
226 if (!n2rng_isregistered(n2rng)) {
227 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider already "
230 if (crypto_unregister_provider(n2rng->n_prov) ==
232 DBG0(n2rng, DKCF, "n2rng_kcf: Crypto provider "
235 n2rng_error(n2rng, "unable to unregister from kcf");
239 n2rng->n_prov = NULL;
240 n2rng_clrregistered(n2rng);
250 n2rng_failure(n2rng_t *n2rng)
255 mutex_enter(&n2rng->n_lock);
257 if (n2rng_isfailed(n2rng)) {
258 mutex_exit(&n2rng->n_lock);
262 cmn_err(CE_WARN, "n2rng: hardware failure detected");
263 n2rng_setfailed(n2rng);
266 if (n2rng_iscontrol(n2rng)) {
267 for (rngid = 0; rngid < n2rng->n_ctl_data->n_num_rngs;
269 rng = &n2rng->n_ctl_data->n_rngs[rngid];
273 mutex_exit(&n2rng->n_lock);
276 if (ddi_taskq_dispatch(n2rng->n_taskq, unregister_task,
277 (void *)n2rng, DDI_SLEEP) != DDI_SUCCESS) {
278 cmn_err(CE_WARN, "n2rng: ddi_taskq_dispatch() failed");
287 n2rng_unconfigured(n2rng_t *n2rng)
292 mutex_enter(&n2rng->n_lock);
294 if (!n2rng_isconfigured(n2rng)) {
295 mutex_exit(&n2rng->n_lock);
299 cmn_err(CE_WARN, "n2rng: no longer generating entropy");
300 n2rng_clrconfigured(n2rng);
303 if (n2rng_iscontrol(n2rng)) {
304 for (rngid = 0; rngid < n2rng->n_ctl_data->n_num_rngs;
306 rng = &n2rng->n_ctl_data->n_rngs[rngid];
310 mutex_exit(&n2rng->n_lock);
313 if (ddi_taskq_dispatch(n2rng->n_taskq, unregister_task,
314 (void *)n2rng, DDI_SLEEP) != DDI_SUCCESS) {
315 cmn_err(CE_WARN, "n2rng: ddi_taskq_dispatch() failed");
318 n2rng_config_retry(n2rng, RNG_CFG_RETRY_SECS);
326 n2rng_init(n2rng_t *n2rng)
332 dip = n2rng->n_dip;
335 if (!n2rng_isinitialized(n2rng)) {
337 n2rng_ksinit(n2rng);
340 ret = fips_init(n2rng);
342 n2rng_ksdeinit(n2rng);
356 n2rng_prov_info.pi_provider_handle = n2rng;
357 n2rng_setinitialized(n2rng);
358 ret = n2rng_register_provider(n2rng);
360 fips_fini(n2rng);
361 n2rng_ksdeinit(n2rng);
362 n2rng_clrinitialized(n2rng);
373 n2rng_uninit(n2rng_t *n2rng)
376 if (n2rng_isinitialized(n2rng)) {
381 if (n2rng_unregister_provider(n2rng) != DDI_SUCCESS) {
385 fips_fini(n2rng);
388 n2rng_ksdeinit(n2rng);
389 n2rng_clrinitialized(n2rng);
414 n2rng_t *n2rng = (n2rng_t *)provider;
417 rv = fips_random(n2rng, buf, buflen);
419 atomic_add_64(&n2rng->n_stats[DS_RNGBYTES], buflen);
420 atomic_inc_64(&n2rng->n_stats[DS_RNGJOBS]);
426 fips_init(n2rng_t *n2rng)
431 n2rng->n_frs.fips_round_robin_j = 0;
433 rv = n2rng_fips_random_init(n2rng, &n2rng->n_frs.fipsarray[i]);
438 &n2rng->n_frs.fipsarray[i]);
447 fips_fini(n2rng_t *n2rng)
452 n2rng_fips_random_fini(&n2rng->n_frs.fipsarray[i]);