Licensing Information
Open Source Used In Cisco Nexus 9000 Series 7.0(3)I5(1)
3229
crypt_func = "ixCryptoAccHashPerform";
status = ixCryptoAccHashPerform(ixp->ixp_ctx.authCtx.authAlgo,
&q->ixp_q_mbuf, ixp_hash_perform_cb, 0, auth_len, auth_len,
&ixp->ixp_hash_key_id);
}
else {
crypt_func = "ixCryptoAccAuthCryptPerform";
status = ixCryptoAccAuthCryptPerform(ixp->ixp_ctx_id, &q->ixp_q_mbuf,
NULL, auth_off, auth_len, crypt_off, crypt_len, icv_off,
q->ixp_q_iv);
}
if (IX_CRYPTO_ACC_STATUS_SUCCESS == status)
return;
if (IX_CRYPTO_ACC_STATUS_QUEUE_FULL == status) {
q->ixp_q_crp->crp_etype = ENOMEM;
goto done;
}
printk("ixp: %s failed %u\n", crypt_func, status);
q->ixp_q_crp->crp_etype = EINVAL;
done:
crypto_done(q->ixp_q_crp);
kmem_cache_free(qcache, q);
}
/*
* because we cannot process the Q from the Register callback
* we do it here on a task Q.
*/
static void
ixp_process_pending(void *arg)
{
struct ixp_data *ixp = arg;
struct ixp_q *q = NULL;
dprintk("%s(%p)\n", __FUNCTION__, arg);
if (!ixp)
return;
while (!list_empty(&ixp->ixp_q)) {
q = list_entry(ixp->ixp_q.next, struct ixp_q, ixp_q_list);
list_del(&q->ixp_q_list);










