[SCSI] bfa: Changes to support vport disable and enable operations.
Made changes to FCS lport, vport state machines to support vport enable / disable operations. Signed-off-by: Krishna Gudipati <kgudipat@brocade.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
111892082e
commit
dd5aaf4536
9 changed files with 181 additions and 44 deletions
|
@ -51,7 +51,7 @@ static bfa_isr_func_t bfa_isrs[BFI_MC_MAX] = {
|
|||
bfa_fcxp_isr, /* BFI_MC_FCXP */
|
||||
bfa_lps_isr, /* BFI_MC_LPS */
|
||||
bfa_rport_isr, /* BFI_MC_RPORT */
|
||||
bfa_itnim_isr, /* BFI_MC_ITNIM */
|
||||
bfa_itnim_isr, /* BFI_MC_ITN */
|
||||
bfa_isr_unhandled, /* BFI_MC_IOIM_READ */
|
||||
bfa_isr_unhandled, /* BFI_MC_IOIM_WRITE */
|
||||
bfa_isr_unhandled, /* BFI_MC_IOIM_IO */
|
||||
|
|
|
@ -47,8 +47,6 @@ struct bfa_iocfc_fwcfg_s {
|
|||
u16 num_rports; /* number of remote ports */
|
||||
u16 num_ioim_reqs; /* number of IO reqs */
|
||||
u16 num_tskim_reqs; /* task management requests */
|
||||
u16 num_iotm_reqs; /* number of TM IO reqs */
|
||||
u16 num_tsktm_reqs; /* TM task management requests*/
|
||||
u16 num_fcxp_reqs; /* unassisted FC exchanges */
|
||||
u16 num_uf_bufs; /* unsolicited recv buffers */
|
||||
u8 num_cqs;
|
||||
|
|
|
@ -1048,15 +1048,6 @@ struct fc_vft_s {
|
|||
u32 res_c:24;
|
||||
};
|
||||
|
||||
/*
|
||||
* FCP
|
||||
*/
|
||||
enum {
|
||||
FCP_RJT = 0x01000000, /* SRR reject */
|
||||
FCP_SRR_ACCEPT = 0x02000000, /* SRR accept */
|
||||
FCP_SRR = 0x14000000, /* Sequence Retransmission Request */
|
||||
};
|
||||
|
||||
/*
|
||||
* FCP_CMND definitions
|
||||
*/
|
||||
|
|
|
@ -1043,7 +1043,7 @@ bfa_itnim_iocdisable(struct bfa_itnim_s *itnim)
|
|||
static bfa_boolean_t
|
||||
bfa_itnim_send_fwcreate(struct bfa_itnim_s *itnim)
|
||||
{
|
||||
struct bfi_itnim_create_req_s *m;
|
||||
struct bfi_itn_create_req_s *m;
|
||||
|
||||
itnim->msg_no++;
|
||||
|
||||
|
@ -1056,7 +1056,7 @@ bfa_itnim_send_fwcreate(struct bfa_itnim_s *itnim)
|
|||
return BFA_FALSE;
|
||||
}
|
||||
|
||||
bfi_h2i_set(m->mh, BFI_MC_ITNIM, BFI_ITNIM_H2I_CREATE_REQ,
|
||||
bfi_h2i_set(m->mh, BFI_MC_ITN, BFI_ITN_H2I_CREATE_REQ,
|
||||
bfa_lpuid(itnim->bfa));
|
||||
m->fw_handle = itnim->rport->fw_handle;
|
||||
m->class = FC_CLASS_3;
|
||||
|
@ -1074,7 +1074,7 @@ bfa_itnim_send_fwcreate(struct bfa_itnim_s *itnim)
|
|||
static bfa_boolean_t
|
||||
bfa_itnim_send_fwdelete(struct bfa_itnim_s *itnim)
|
||||
{
|
||||
struct bfi_itnim_delete_req_s *m;
|
||||
struct bfi_itn_delete_req_s *m;
|
||||
|
||||
/*
|
||||
* check for room in queue to send request now
|
||||
|
@ -1085,7 +1085,7 @@ bfa_itnim_send_fwdelete(struct bfa_itnim_s *itnim)
|
|||
return BFA_FALSE;
|
||||
}
|
||||
|
||||
bfi_h2i_set(m->mh, BFI_MC_ITNIM, BFI_ITNIM_H2I_DELETE_REQ,
|
||||
bfi_h2i_set(m->mh, BFI_MC_ITN, BFI_ITN_H2I_DELETE_REQ,
|
||||
bfa_lpuid(itnim->bfa));
|
||||
m->fw_handle = itnim->rport->fw_handle;
|
||||
bfa_stats(itnim, fw_delete);
|
||||
|
@ -1251,7 +1251,7 @@ void
|
|||
bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
|
||||
{
|
||||
struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa);
|
||||
union bfi_itnim_i2h_msg_u msg;
|
||||
union bfi_itn_i2h_msg_u msg;
|
||||
struct bfa_itnim_s *itnim;
|
||||
|
||||
bfa_trc(bfa, m->mhdr.msg_id);
|
||||
|
@ -1259,7 +1259,7 @@ bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
|
|||
msg.msg = m;
|
||||
|
||||
switch (m->mhdr.msg_id) {
|
||||
case BFI_ITNIM_I2H_CREATE_RSP:
|
||||
case BFI_ITN_I2H_CREATE_RSP:
|
||||
itnim = BFA_ITNIM_FROM_TAG(fcpim,
|
||||
msg.create_rsp->bfa_handle);
|
||||
WARN_ON(msg.create_rsp->status != BFA_STATUS_OK);
|
||||
|
@ -1267,7 +1267,7 @@ bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
|
|||
bfa_sm_send_event(itnim, BFA_ITNIM_SM_FWRSP);
|
||||
break;
|
||||
|
||||
case BFI_ITNIM_I2H_DELETE_RSP:
|
||||
case BFI_ITN_I2H_DELETE_RSP:
|
||||
itnim = BFA_ITNIM_FROM_TAG(fcpim,
|
||||
msg.delete_rsp->bfa_handle);
|
||||
WARN_ON(msg.delete_rsp->status != BFA_STATUS_OK);
|
||||
|
@ -1275,7 +1275,7 @@ bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m)
|
|||
bfa_sm_send_event(itnim, BFA_ITNIM_SM_FWRSP);
|
||||
break;
|
||||
|
||||
case BFI_ITNIM_I2H_SLER_EVENT:
|
||||
case BFI_ITN_I2H_SLER_EVENT:
|
||||
itnim = BFA_ITNIM_FROM_TAG(fcpim,
|
||||
msg.sler_event->bfa_handle);
|
||||
bfa_stats(itnim, sler_events);
|
||||
|
|
|
@ -269,8 +269,8 @@ bfa_fcs_fabric_sm_created(struct bfa_fcs_fabric_s *fabric,
|
|||
break;
|
||||
|
||||
case BFA_FCS_FABRIC_SM_DELETE:
|
||||
bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_uninit);
|
||||
bfa_wc_down(&fabric->fcs->wc);
|
||||
bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting);
|
||||
bfa_fcs_fabric_delete(fabric);
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
@ -379,6 +379,7 @@ void bfa_fcs_vport_online(struct bfa_fcs_vport_s *vport);
|
|||
void bfa_fcs_vport_offline(struct bfa_fcs_vport_s *vport);
|
||||
void bfa_fcs_vport_delete_comp(struct bfa_fcs_vport_s *vport);
|
||||
void bfa_fcs_vport_fcs_delete(struct bfa_fcs_vport_s *vport);
|
||||
void bfa_fcs_vport_stop_comp(struct bfa_fcs_vport_s *vport);
|
||||
|
||||
#define BFA_FCS_RPORT_DEF_DEL_TIMEOUT 90 /* in secs */
|
||||
#define BFA_FCS_RPORT_MAX_RETRIES (5)
|
||||
|
|
|
@ -74,6 +74,7 @@ enum bfa_fcs_lport_event {
|
|||
BFA_FCS_PORT_SM_OFFLINE = 3,
|
||||
BFA_FCS_PORT_SM_DELETE = 4,
|
||||
BFA_FCS_PORT_SM_DELRPORT = 5,
|
||||
BFA_FCS_PORT_SM_STOP = 6,
|
||||
};
|
||||
|
||||
static void bfa_fcs_lport_sm_uninit(struct bfa_fcs_lport_s *port,
|
||||
|
@ -86,6 +87,8 @@ static void bfa_fcs_lport_sm_offline(struct bfa_fcs_lport_s *port,
|
|||
enum bfa_fcs_lport_event event);
|
||||
static void bfa_fcs_lport_sm_deleting(struct bfa_fcs_lport_s *port,
|
||||
enum bfa_fcs_lport_event event);
|
||||
static void bfa_fcs_lport_sm_stopping(struct bfa_fcs_lport_s *port,
|
||||
enum bfa_fcs_lport_event event);
|
||||
|
||||
static void
|
||||
bfa_fcs_lport_sm_uninit(
|
||||
|
@ -123,6 +126,12 @@ bfa_fcs_lport_sm_init(struct bfa_fcs_lport_s *port,
|
|||
bfa_fcs_lport_deleted(port);
|
||||
break;
|
||||
|
||||
case BFA_FCS_PORT_SM_STOP:
|
||||
/* If vport - send completion call back */
|
||||
if (port->vport)
|
||||
bfa_fcs_vport_stop_comp(port->vport);
|
||||
break;
|
||||
|
||||
case BFA_FCS_PORT_SM_OFFLINE:
|
||||
break;
|
||||
|
||||
|
@ -148,6 +157,23 @@ bfa_fcs_lport_sm_online(
|
|||
bfa_fcs_lport_offline_actions(port);
|
||||
break;
|
||||
|
||||
case BFA_FCS_PORT_SM_STOP:
|
||||
__port_action[port->fabric->fab_type].offline(port);
|
||||
|
||||
if (port->num_rports == 0) {
|
||||
bfa_sm_set_state(port, bfa_fcs_lport_sm_init);
|
||||
/* If vport - send completion call back */
|
||||
if (port->vport)
|
||||
bfa_fcs_vport_stop_comp(port->vport);
|
||||
} else {
|
||||
bfa_sm_set_state(port, bfa_fcs_lport_sm_stopping);
|
||||
list_for_each_safe(qe, qen, &port->rport_q) {
|
||||
rport = (struct bfa_fcs_rport_s *) qe;
|
||||
bfa_sm_send_event(rport, RPSM_EVENT_DELETE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case BFA_FCS_PORT_SM_DELETE:
|
||||
|
||||
__port_action[port->fabric->fab_type].offline(port);
|
||||
|
@ -189,6 +215,21 @@ bfa_fcs_lport_sm_offline(
|
|||
bfa_fcs_lport_online_actions(port);
|
||||
break;
|
||||
|
||||
case BFA_FCS_PORT_SM_STOP:
|
||||
if (port->num_rports == 0) {
|
||||
bfa_sm_set_state(port, bfa_fcs_lport_sm_init);
|
||||
/* If vport - send completion call back */
|
||||
if (port->vport)
|
||||
bfa_fcs_vport_stop_comp(port->vport);
|
||||
} else {
|
||||
bfa_sm_set_state(port, bfa_fcs_lport_sm_stopping);
|
||||
list_for_each_safe(qe, qen, &port->rport_q) {
|
||||
rport = (struct bfa_fcs_rport_s *) qe;
|
||||
bfa_sm_send_event(rport, RPSM_EVENT_DELETE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case BFA_FCS_PORT_SM_DELETE:
|
||||
if (port->num_rports == 0) {
|
||||
bfa_sm_set_state(port, bfa_fcs_lport_sm_uninit);
|
||||
|
@ -211,6 +252,28 @@ bfa_fcs_lport_sm_offline(
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
bfa_fcs_lport_sm_stopping(struct bfa_fcs_lport_s *port,
|
||||
enum bfa_fcs_lport_event event)
|
||||
{
|
||||
bfa_trc(port->fcs, port->port_cfg.pwwn);
|
||||
bfa_trc(port->fcs, event);
|
||||
|
||||
switch (event) {
|
||||
case BFA_FCS_PORT_SM_DELRPORT:
|
||||
if (port->num_rports == 0) {
|
||||
bfa_sm_set_state(port, bfa_fcs_lport_sm_init);
|
||||
/* If vport - send completion call back */
|
||||
if (port->vport)
|
||||
bfa_fcs_vport_stop_comp(port->vport);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(port->fcs, event);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
bfa_fcs_lport_sm_deleting(
|
||||
struct bfa_fcs_lport_s *port,
|
||||
|
@ -1672,7 +1735,7 @@ bfa_fcs_lport_fdmi_build_rhba_pyld(struct bfa_fcs_lport_fdmi_s *fdmi, u8 *pyld)
|
|||
memcpy(attr->value, fcs_hba_attr->driver_version, templen);
|
||||
templen = fc_roundup(templen, sizeof(u32));
|
||||
curr_ptr += sizeof(attr->type) + sizeof(templen) + templen;
|
||||
len += templen;;
|
||||
len += templen;
|
||||
count++;
|
||||
attr->len = cpu_to_be16(templen + sizeof(attr->type) +
|
||||
sizeof(templen));
|
||||
|
@ -4918,6 +4981,7 @@ enum bfa_fcs_vport_event {
|
|||
BFA_FCS_VPORT_SM_DELCOMP = 11, /* lport delete completion */
|
||||
BFA_FCS_VPORT_SM_RSP_DUP_WWN = 12, /* Dup wnn error*/
|
||||
BFA_FCS_VPORT_SM_RSP_FAILED = 13, /* non-retryable failure */
|
||||
BFA_FCS_VPORT_SM_STOPCOMP = 14, /* vport delete completion */
|
||||
};
|
||||
|
||||
static void bfa_fcs_vport_sm_uninit(struct bfa_fcs_vport_s *vport,
|
||||
|
@ -4940,6 +5004,10 @@ static void bfa_fcs_vport_sm_logo(struct bfa_fcs_vport_s *vport,
|
|||
enum bfa_fcs_vport_event event);
|
||||
static void bfa_fcs_vport_sm_error(struct bfa_fcs_vport_s *vport,
|
||||
enum bfa_fcs_vport_event event);
|
||||
static void bfa_fcs_vport_sm_stopping(struct bfa_fcs_vport_s *vport,
|
||||
enum bfa_fcs_vport_event event);
|
||||
static void bfa_fcs_vport_sm_logo_for_stop(struct bfa_fcs_vport_s *vport,
|
||||
enum bfa_fcs_vport_event event);
|
||||
|
||||
static struct bfa_sm_table_s vport_sm_table[] = {
|
||||
{BFA_SM(bfa_fcs_vport_sm_uninit), BFA_FCS_VPORT_UNINIT},
|
||||
|
@ -5042,6 +5110,11 @@ bfa_fcs_vport_sm_offline(struct bfa_fcs_vport_s *vport,
|
|||
bfa_fcs_vport_do_fdisc(vport);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_STOP:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
|
||||
bfa_sm_send_event(&vport->lport, BFA_FCS_PORT_SM_STOP);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_OFFLINE:
|
||||
/*
|
||||
* This can happen if the vport couldn't be initialzied
|
||||
|
@ -5155,6 +5228,11 @@ bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport,
|
|||
bfa_fcs_lport_delete(&vport->lport);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_STOP:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_stopping);
|
||||
bfa_sm_send_event(&vport->lport, BFA_FCS_PORT_SM_STOP);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_OFFLINE:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline);
|
||||
bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE);
|
||||
|
@ -5166,6 +5244,32 @@ bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport,
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Vport is being stopped - awaiting lport stop completion to send
|
||||
* LOGO to fabric.
|
||||
*/
|
||||
static void
|
||||
bfa_fcs_vport_sm_stopping(struct bfa_fcs_vport_s *vport,
|
||||
enum bfa_fcs_vport_event event)
|
||||
{
|
||||
bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
|
||||
bfa_trc(__vport_fcs(vport), event);
|
||||
|
||||
switch (event) {
|
||||
case BFA_FCS_VPORT_SM_STOPCOMP:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_logo_for_stop);
|
||||
bfa_fcs_vport_do_logo(vport);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_OFFLINE:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup);
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(__vport_fcs(vport), event);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Vport is being deleted - awaiting lport delete completion to send
|
||||
* LOGO to fabric.
|
||||
|
@ -5236,6 +5340,10 @@ bfa_fcs_vport_sm_cleanup(struct bfa_fcs_vport_s *vport,
|
|||
bfa_fcs_vport_free(vport);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_STOPCOMP:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_created);
|
||||
break;
|
||||
|
||||
case BFA_FCS_VPORT_SM_DELETE:
|
||||
break;
|
||||
|
||||
|
@ -5244,6 +5352,34 @@ bfa_fcs_vport_sm_cleanup(struct bfa_fcs_vport_s *vport,
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* LOGO is sent to fabric. Vport stop is in progress. Lport stop cleanup
|
||||
* is done.
|
||||
*/
|
||||
static void
|
||||
bfa_fcs_vport_sm_logo_for_stop(struct bfa_fcs_vport_s *vport,
|
||||
enum bfa_fcs_vport_event event)
|
||||
{
|
||||
bfa_trc(__vport_fcs(vport), __vport_pwwn(vport));
|
||||
bfa_trc(__vport_fcs(vport), event);
|
||||
|
||||
switch (event) {
|
||||
case BFA_FCS_VPORT_SM_OFFLINE:
|
||||
bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE);
|
||||
/*
|
||||
* !!! fall through !!!
|
||||
*/
|
||||
|
||||
case BFA_FCS_VPORT_SM_RSP_OK:
|
||||
case BFA_FCS_VPORT_SM_RSP_ERROR:
|
||||
bfa_sm_set_state(vport, bfa_fcs_vport_sm_created);
|
||||
break;
|
||||
|
||||
default:
|
||||
bfa_sm_fault(__vport_fcs(vport), event);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* LOGO is sent to fabric. Vport delete is in progress. Lport delete cleanup
|
||||
* is done.
|
||||
|
@ -5421,6 +5557,15 @@ bfa_fcs_vport_fcs_delete(struct bfa_fcs_vport_s *vport)
|
|||
bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_DELETE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Stop completion callback from associated lport
|
||||
*/
|
||||
void
|
||||
bfa_fcs_vport_stop_comp(struct bfa_fcs_vport_s *vport)
|
||||
{
|
||||
bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_STOPCOMP);
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete completion callback from associated lport
|
||||
*/
|
||||
|
|
|
@ -172,7 +172,7 @@ enum bfi_mclass {
|
|||
BFI_MC_FCXP = 9, /* FC Transport */
|
||||
BFI_MC_LPS = 10, /* lport fc login services */
|
||||
BFI_MC_RPORT = 11, /* Remote port */
|
||||
BFI_MC_ITNIM = 12, /* I-T nexus (Initiator mode) */
|
||||
BFI_MC_ITN = 12, /* I-T nexus (Initiator mode) */
|
||||
BFI_MC_IOIM_READ = 13, /* read IO (Initiator mode) */
|
||||
BFI_MC_IOIM_WRITE = 14, /* write IO (Initiator mode) */
|
||||
BFI_MC_IOIM_IO = 15, /* IO (Initiator mode) */
|
||||
|
|
|
@ -373,7 +373,8 @@ struct bfi_lps_login_req_s {
|
|||
wwn_t nwwn;
|
||||
u8 fdisc;
|
||||
u8 auth_en;
|
||||
u8 rsvd[2];
|
||||
u8 lps_role;
|
||||
u8 rsvd[1];
|
||||
};
|
||||
|
||||
struct bfi_lps_login_rsp_s {
|
||||
|
@ -515,62 +516,63 @@ union bfi_rport_i2h_msg_u {
|
|||
* Initiator mode I-T nexus interface defines.
|
||||
*/
|
||||
|
||||
enum bfi_itnim_h2i {
|
||||
BFI_ITNIM_H2I_CREATE_REQ = 1, /* i-t nexus creation */
|
||||
BFI_ITNIM_H2I_DELETE_REQ = 2, /* i-t nexus deletion */
|
||||
enum bfi_itn_h2i {
|
||||
BFI_ITN_H2I_CREATE_REQ = 1, /* i-t nexus creation */
|
||||
BFI_ITN_H2I_DELETE_REQ = 2, /* i-t nexus deletion */
|
||||
};
|
||||
|
||||
enum bfi_itnim_i2h {
|
||||
BFI_ITNIM_I2H_CREATE_RSP = BFA_I2HM(1),
|
||||
BFI_ITNIM_I2H_DELETE_RSP = BFA_I2HM(2),
|
||||
BFI_ITNIM_I2H_SLER_EVENT = BFA_I2HM(3),
|
||||
enum bfi_itn_i2h {
|
||||
BFI_ITN_I2H_CREATE_RSP = BFA_I2HM(1),
|
||||
BFI_ITN_I2H_DELETE_RSP = BFA_I2HM(2),
|
||||
BFI_ITN_I2H_SLER_EVENT = BFA_I2HM(3),
|
||||
};
|
||||
|
||||
struct bfi_itnim_create_req_s {
|
||||
struct bfi_itn_create_req_s {
|
||||
struct bfi_mhdr_s mh; /* common msg header */
|
||||
u16 fw_handle; /* f/w handle for itnim */
|
||||
u8 class; /* FC class for IO */
|
||||
u8 seq_rec; /* sequence recovery support */
|
||||
u8 msg_no; /* seq id of the msg */
|
||||
u8 role;
|
||||
};
|
||||
|
||||
struct bfi_itnim_create_rsp_s {
|
||||
struct bfi_itn_create_rsp_s {
|
||||
struct bfi_mhdr_s mh; /* common msg header */
|
||||
u16 bfa_handle; /* bfa handle for itnim */
|
||||
u8 status; /* fcp request status */
|
||||
u8 seq_id; /* seq id of the msg */
|
||||
};
|
||||
|
||||
struct bfi_itnim_delete_req_s {
|
||||
struct bfi_itn_delete_req_s {
|
||||
struct bfi_mhdr_s mh; /* common msg header */
|
||||
u16 fw_handle; /* f/w itnim handle */
|
||||
u8 seq_id; /* seq id of the msg */
|
||||
u8 rsvd;
|
||||
};
|
||||
|
||||
struct bfi_itnim_delete_rsp_s {
|
||||
struct bfi_itn_delete_rsp_s {
|
||||
struct bfi_mhdr_s mh; /* common msg header */
|
||||
u16 bfa_handle; /* bfa handle for itnim */
|
||||
u8 status; /* fcp request status */
|
||||
u8 seq_id; /* seq id of the msg */
|
||||
};
|
||||
|
||||
struct bfi_itnim_sler_event_s {
|
||||
struct bfi_itn_sler_event_s {
|
||||
struct bfi_mhdr_s mh; /* common msg header */
|
||||
u16 bfa_handle; /* bfa handle for itnim */
|
||||
u16 rsvd;
|
||||
};
|
||||
|
||||
union bfi_itnim_h2i_msg_u {
|
||||
struct bfi_itnim_create_req_s *create_req;
|
||||
struct bfi_itnim_delete_req_s *delete_req;
|
||||
union bfi_itn_h2i_msg_u {
|
||||
struct bfi_itn_create_req_s *create_req;
|
||||
struct bfi_itn_delete_req_s *delete_req;
|
||||
struct bfi_msg_s *msg;
|
||||
};
|
||||
|
||||
union bfi_itnim_i2h_msg_u {
|
||||
struct bfi_itnim_create_rsp_s *create_rsp;
|
||||
struct bfi_itnim_delete_rsp_s *delete_rsp;
|
||||
struct bfi_itnim_sler_event_s *sler_event;
|
||||
union bfi_itn_i2h_msg_u {
|
||||
struct bfi_itn_create_rsp_s *create_rsp;
|
||||
struct bfi_itn_delete_rsp_s *delete_rsp;
|
||||
struct bfi_itn_sler_event_s *sler_event;
|
||||
struct bfi_msg_s *msg;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue