Licensing Information
Open Source Used In Cisco Nexus 9000 Series 7.0(3)I5(1)
3221
DEVMETHOD(cryptodev_freesession,ixp_freesession),
DEVMETHOD(cryptodev_process,ixp_process),
#ifdef __ixp46X
DEVMETHOD(cryptodev_kprocess,ixp_kprocess),
#endif
};
/*
* Generate a new software session.
*/
static int
ixp_newsession(device_t dev, u_int32_t *sid, struct cryptoini *cri)
{
struct ixp_data *ixp;
u_int32_t i;
#define AUTH_LEN(cri, def) \
(cri->cri_mlen ? cri->cri_mlen : (def))
dprintk("%s():alg %d\n", __FUNCTION__,cri->cri_alg);
if (sid == NULL || cri == NULL) {
dprintk("%s,%d - EINVAL\n", __FILE__, __LINE__);
return EINVAL;
}
if (ixp_sessions) {
for (i = 1; i < ixp_sesnum; i++)
if (ixp_sessions[i] == NULL)
break;
} else
i = 1;/* NB: to silence compiler warning */
if (ixp_sessions == NULL || i == ixp_sesnum) {
struct ixp_data **ixpd;
if (ixp_sessions == NULL) {
i = 1; /* We leave ixp_sessions[0] empty */
ixp_sesnum = CRYPTO_SW_SESSIONS;
} else
ixp_sesnum *= 2;
ixpd = kmalloc(ixp_sesnum * sizeof(struct ixp_data *), SLAB_ATOMIC);
if (ixpd == NULL) {
/* Reset session number */
if (ixp_sesnum == CRYPTO_SW_SESSIONS)
ixp_sesnum = 0;
else
ixp_sesnum /= 2;
dprintk("%s,%d: ENOBUFS\n", __FILE__, __LINE__);










