/** * Called by rport when a new rport is created. * * @param[in] rport - remote port. */ struct bfa_fcs_itnim_s * bfa_fcs_itnim_create(struct bfa_fcs_rport_s *rport) { struct bfa_fcs_port_s *port = rport->port; struct bfa_fcs_itnim_s *itnim; struct bfad_itnim_s *itnim_drv; struct bfa_itnim_s *bfa_itnim; /* * call bfad to allocate the itnim */ bfa_fcb_itnim_alloc(port->fcs->bfad, &itnim, &itnim_drv); if (itnim == NULL) { bfa_trc(port->fcs, rport->pwwn); return NULL; } /* * Initialize itnim */ itnim->rport = rport; itnim->fcs = rport->fcs; itnim->itnim_drv = itnim_drv; /* * call BFA to create the itnim */ bfa_itnim = bfa_itnim_create(port->fcs->bfa, rport->bfa_rport, itnim); if (bfa_itnim == NULL) { bfa_trc(port->fcs, rport->pwwn); bfa_fcb_itnim_free(port->fcs->bfad, itnim_drv); bfa_assert(0); return NULL; } itnim->bfa_itnim = bfa_itnim; itnim->seq_rec = BFA_FALSE; itnim->rec_support = BFA_FALSE; itnim->conf_comp = BFA_FALSE; itnim->task_retry_id = BFA_FALSE; /* * Set State machine */ bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); return itnim; }
/* * Called by rport when a new rport is created. * * @param[in] rport - remote port. */ struct bfa_fcs_itnim_s * bfa_fcs_itnim_create(struct bfa_fcs_rport_s *rport) { struct bfa_fcs_lport_s *port = rport->port; struct bfa_fcs_itnim_s *itnim; struct bfad_itnim_s *itnim_drv; int ret; /* * call bfad to allocate the itnim */ ret = bfa_fcb_itnim_alloc(port->fcs->bfad, &itnim, &itnim_drv); if (ret) { bfa_trc(port->fcs, rport->pwwn); return NULL; } /* * Initialize itnim */ itnim->rport = rport; itnim->fcs = rport->fcs; itnim->itnim_drv = itnim_drv; itnim->bfa_itnim = NULL; itnim->seq_rec = BFA_FALSE; itnim->rec_support = BFA_FALSE; itnim->conf_comp = BFA_FALSE; itnim->task_retry_id = BFA_FALSE; /* * Set State machine */ bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); return itnim; }