Commit e2187d7f authored by Krishna Gudipati's avatar Krishna Gudipati Committed by James Bottomley

[SCSI] bfa: Enhancement for fcpim and IO tag handling.

- Enhancements to FCPIM module.
- Introduced IO tag management to allocate/release IOs to FCPIM module
  from a free IOtag pool.
Signed-off-by: default avatarKrishna Gudipati <kgudipat@brocade.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent be540a99
...@@ -31,7 +31,7 @@ static struct bfa_module_s *hal_mods[] = { ...@@ -31,7 +31,7 @@ static struct bfa_module_s *hal_mods[] = {
&hal_mod_lps, &hal_mod_lps,
&hal_mod_uf, &hal_mod_uf,
&hal_mod_rport, &hal_mod_rport,
&hal_mod_fcpim, &hal_mod_fcp,
NULL NULL
}; };
...@@ -51,7 +51,7 @@ static bfa_isr_func_t bfa_isrs[BFI_MC_MAX] = { ...@@ -51,7 +51,7 @@ static bfa_isr_func_t bfa_isrs[BFI_MC_MAX] = {
bfa_fcxp_isr, /* BFI_MC_FCXP */ bfa_fcxp_isr, /* BFI_MC_FCXP */
bfa_lps_isr, /* BFI_MC_LPS */ bfa_lps_isr, /* BFI_MC_LPS */
bfa_rport_isr, /* BFI_MC_RPORT */ bfa_rport_isr, /* BFI_MC_RPORT */
bfa_itnim_isr, /* BFI_MC_ITN */ bfa_itn_isr, /* BFI_MC_ITN */
bfa_isr_unhandled, /* BFI_MC_IOIM_READ */ bfa_isr_unhandled, /* BFI_MC_IOIM_READ */
bfa_isr_unhandled, /* BFI_MC_IOIM_WRITE */ bfa_isr_unhandled, /* BFI_MC_IOIM_WRITE */
bfa_isr_unhandled, /* BFI_MC_IOIM_IO */ bfa_isr_unhandled, /* BFI_MC_IOIM_IO */
...@@ -448,6 +448,8 @@ bfa_iocfc_send_cfg(void *bfa_arg) ...@@ -448,6 +448,8 @@ bfa_iocfc_send_cfg(void *bfa_arg)
*/ */
cfg_info->endian_sig = BFI_IOC_ENDIAN_SIG; cfg_info->endian_sig = BFI_IOC_ENDIAN_SIG;
cfg_info->num_cqs = cfg->fwcfg.num_cqs; cfg_info->num_cqs = cfg->fwcfg.num_cqs;
cfg_info->num_ioim_reqs = cpu_to_be16(cfg->fwcfg.num_ioim_reqs);
cfg_info->num_fwtio_reqs = cpu_to_be16(cfg->fwcfg.num_fwtio_reqs);
bfa_dma_be_addr_set(cfg_info->cfgrsp_addr, iocfc->cfgrsp_dma.pa); bfa_dma_be_addr_set(cfg_info->cfgrsp_addr, iocfc->cfgrsp_dma.pa);
/* /*
...@@ -729,6 +731,7 @@ bfa_iocfc_cfgrsp(struct bfa_s *bfa) ...@@ -729,6 +731,7 @@ bfa_iocfc_cfgrsp(struct bfa_s *bfa)
fwcfg->num_cqs = fwcfg->num_cqs; fwcfg->num_cqs = fwcfg->num_cqs;
fwcfg->num_ioim_reqs = be16_to_cpu(fwcfg->num_ioim_reqs); fwcfg->num_ioim_reqs = be16_to_cpu(fwcfg->num_ioim_reqs);
fwcfg->num_fwtio_reqs = be16_to_cpu(fwcfg->num_fwtio_reqs);
fwcfg->num_tskim_reqs = be16_to_cpu(fwcfg->num_tskim_reqs); fwcfg->num_tskim_reqs = be16_to_cpu(fwcfg->num_tskim_reqs);
fwcfg->num_fcxp_reqs = be16_to_cpu(fwcfg->num_fcxp_reqs); fwcfg->num_fcxp_reqs = be16_to_cpu(fwcfg->num_fcxp_reqs);
fwcfg->num_uf_bufs = be16_to_cpu(fwcfg->num_uf_bufs); fwcfg->num_uf_bufs = be16_to_cpu(fwcfg->num_uf_bufs);
...@@ -1272,6 +1275,7 @@ bfa_cfg_get_default(struct bfa_iocfc_cfg_s *cfg) ...@@ -1272,6 +1275,7 @@ bfa_cfg_get_default(struct bfa_iocfc_cfg_s *cfg)
cfg->fwcfg.num_fcxp_reqs = DEF_CFG_NUM_FCXP_REQS; cfg->fwcfg.num_fcxp_reqs = DEF_CFG_NUM_FCXP_REQS;
cfg->fwcfg.num_uf_bufs = DEF_CFG_NUM_UF_BUFS; cfg->fwcfg.num_uf_bufs = DEF_CFG_NUM_UF_BUFS;
cfg->fwcfg.num_cqs = DEF_CFG_NUM_CQS; cfg->fwcfg.num_cqs = DEF_CFG_NUM_CQS;
cfg->fwcfg.num_fwtio_reqs = 0;
cfg->drvcfg.num_reqq_elems = DEF_CFG_NUM_REQQ_ELEMS; cfg->drvcfg.num_reqq_elems = DEF_CFG_NUM_REQQ_ELEMS;
cfg->drvcfg.num_rspq_elems = DEF_CFG_NUM_RSPQ_ELEMS; cfg->drvcfg.num_rspq_elems = DEF_CFG_NUM_RSPQ_ELEMS;
...@@ -1293,6 +1297,7 @@ bfa_cfg_get_min(struct bfa_iocfc_cfg_s *cfg) ...@@ -1293,6 +1297,7 @@ bfa_cfg_get_min(struct bfa_iocfc_cfg_s *cfg)
cfg->fwcfg.num_fcxp_reqs = BFA_FCXP_MIN; cfg->fwcfg.num_fcxp_reqs = BFA_FCXP_MIN;
cfg->fwcfg.num_uf_bufs = BFA_UF_MIN; cfg->fwcfg.num_uf_bufs = BFA_UF_MIN;
cfg->fwcfg.num_rports = BFA_RPORT_MIN; cfg->fwcfg.num_rports = BFA_RPORT_MIN;
cfg->fwcfg.num_fwtio_reqs = 0;
cfg->drvcfg.num_sgpgs = BFA_SGPG_MIN; cfg->drvcfg.num_sgpgs = BFA_SGPG_MIN;
cfg->drvcfg.num_reqq_elems = BFA_REQQ_NELEMS_MIN; cfg->drvcfg.num_reqq_elems = BFA_REQQ_NELEMS_MIN;
......
...@@ -47,11 +47,12 @@ struct bfa_iocfc_fwcfg_s { ...@@ -47,11 +47,12 @@ struct bfa_iocfc_fwcfg_s {
u16 num_rports; /* number of remote ports */ u16 num_rports; /* number of remote ports */
u16 num_ioim_reqs; /* number of IO reqs */ u16 num_ioim_reqs; /* number of IO reqs */
u16 num_tskim_reqs; /* task management requests */ u16 num_tskim_reqs; /* task management requests */
u16 num_fwtio_reqs; /* number of TM IO reqs in FW */
u16 num_fcxp_reqs; /* unassisted FC exchanges */ u16 num_fcxp_reqs; /* unassisted FC exchanges */
u16 num_uf_bufs; /* unsolicited recv buffers */ u16 num_uf_bufs; /* unsolicited recv buffers */
u8 num_cqs; u8 num_cqs;
u8 fw_tick_res; /* FW clock resolution in ms */ u8 fw_tick_res; /* FW clock resolution in ms */
u8 rsvd[4]; u8 rsvd[2];
}; };
#pragma pack() #pragma pack()
......
This diff is collapsed.
...@@ -24,6 +24,32 @@ ...@@ -24,6 +24,32 @@
#include "bfa_defs_svc.h" #include "bfa_defs_svc.h"
#include "bfa_cs.h" #include "bfa_cs.h"
/* FCP module related definitions */
#define BFA_IO_MAX 2000
#define BFA_FWTIO_MAX 0
struct bfa_fcp_mod_s;
struct bfa_iotag_s {
struct list_head qe; /* queue element */
u16 tag; /* FW IO tag */
};
struct bfa_itn_s {
bfa_isr_func_t isr;
};
void bfa_itn_create(struct bfa_s *bfa, struct bfa_rport_s *rport,
void (*isr)(struct bfa_s *bfa, struct bfi_msg_s *m));
void bfa_itn_isr(struct bfa_s *bfa, struct bfi_msg_s *m);
void bfa_iotag_attach(struct bfa_fcp_mod_s *fcp, struct bfa_meminfo_s *minfo);
#define BFA_FCP_MOD(_hal) (&(_hal)->modules.fcp_mod)
#define BFA_IOTAG_FROM_TAG(_fcp, _tag) \
(&(_fcp)->iotag_arr[(_tag & BFA_IOIM_IOTAG_MASK)])
#define BFA_ITN_FROM_TAG(_fcp, _tag) \
((_fcp)->itn_arr + ((_tag) & ((_fcp)->num_itns - 1)))
#define BFA_SNSINFO_FROM_TAG(_fcp, _tag) \
(((u8 *)(_fcp)->snsbase.kva) + (_tag * BFI_IOIM_SNSLEN))
#define BFA_ITNIM_MIN 32 #define BFA_ITNIM_MIN 32
#define BFA_ITNIM_MAX 1024 #define BFA_ITNIM_MAX 1024
...@@ -75,22 +101,20 @@ struct bfad_tskim_s; ...@@ -75,22 +101,20 @@ struct bfad_tskim_s;
typedef void (*bfa_fcpim_profile_t) (struct bfa_ioim_s *ioim); typedef void (*bfa_fcpim_profile_t) (struct bfa_ioim_s *ioim);
struct bfa_fcpim_mod_s { struct bfa_fcpim_s {
struct bfa_s *bfa; struct bfa_s *bfa;
struct bfa_fcp_mod_s *fcp;
struct bfa_itnim_s *itnim_arr; struct bfa_itnim_s *itnim_arr;
struct bfa_ioim_s *ioim_arr; struct bfa_ioim_s *ioim_arr;
struct bfa_ioim_sp_s *ioim_sp_arr; struct bfa_ioim_sp_s *ioim_sp_arr;
struct bfa_tskim_s *tskim_arr; struct bfa_tskim_s *tskim_arr;
struct bfa_dma_s snsbase;
int num_itnims; int num_itnims;
int num_ioim_reqs;
int num_tskim_reqs; int num_tskim_reqs;
u32 path_tov; u32 path_tov;
u16 q_depth; u16 q_depth;
u8 reqq; /* Request queue to be used */ u8 reqq; /* Request queue to be used */
u8 rsvd; u8 rsvd;
struct list_head itnim_q; /* queue of active itnim */ struct list_head itnim_q; /* queue of active itnim */
struct list_head ioim_free_q; /* free IO resources */
struct list_head ioim_resfree_q; /* IOs waiting for f/w */ struct list_head ioim_resfree_q; /* IOs waiting for f/w */
struct list_head ioim_comp_q; /* IO global comp Q */ struct list_head ioim_comp_q; /* IO global comp Q */
struct list_head tskim_free_q; struct list_head tskim_free_q;
...@@ -104,6 +128,19 @@ struct bfa_fcpim_mod_s { ...@@ -104,6 +128,19 @@ struct bfa_fcpim_mod_s {
bfa_fcpim_profile_t profile_start; bfa_fcpim_profile_t profile_start;
}; };
struct bfa_fcp_mod_s {
struct bfa_s *bfa;
struct list_head iotag_ioim_free_q; /* free IO resources */
struct list_head iotag_tio_free_q; /* free IO resources */
struct bfa_iotag_s *iotag_arr;
struct bfa_itn_s *itn_arr;
int num_ioim_reqs;
int num_fwtio_reqs;
int num_itns;
struct bfa_dma_s snsbase;
struct bfa_fcpim_s fcpim;
};
/* /*
* BFA IO (initiator mode) * BFA IO (initiator mode)
*/ */
...@@ -111,7 +148,7 @@ struct bfa_ioim_s { ...@@ -111,7 +148,7 @@ struct bfa_ioim_s {
struct list_head qe; /* queue elememt */ struct list_head qe; /* queue elememt */
bfa_sm_t sm; /* BFA ioim state machine */ bfa_sm_t sm; /* BFA ioim state machine */
struct bfa_s *bfa; /* BFA module */ struct bfa_s *bfa; /* BFA module */
struct bfa_fcpim_mod_s *fcpim; /* parent fcpim module */ struct bfa_fcpim_s *fcpim; /* parent fcpim module */
struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */ struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */
struct bfad_ioim_s *dio; /* driver IO handle */ struct bfad_ioim_s *dio; /* driver IO handle */
u16 iotag; /* FWI IO tag */ u16 iotag; /* FWI IO tag */
...@@ -129,7 +166,6 @@ struct bfa_ioim_s { ...@@ -129,7 +166,6 @@ struct bfa_ioim_s {
struct bfa_ioim_sp_s { struct bfa_ioim_sp_s {
struct bfi_msg_s comp_rspmsg; /* IO comp f/w response */ struct bfi_msg_s comp_rspmsg; /* IO comp f/w response */
u8 *snsinfo; /* sense info for this IO */
struct bfa_sgpg_wqe_s sgpg_wqe; /* waitq elem for sgpg */ struct bfa_sgpg_wqe_s sgpg_wqe; /* waitq elem for sgpg */
struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */
bfa_boolean_t abort_explicit; /* aborted by OS */ bfa_boolean_t abort_explicit; /* aborted by OS */
...@@ -143,7 +179,7 @@ struct bfa_tskim_s { ...@@ -143,7 +179,7 @@ struct bfa_tskim_s {
struct list_head qe; struct list_head qe;
bfa_sm_t sm; bfa_sm_t sm;
struct bfa_s *bfa; /* BFA module */ struct bfa_s *bfa; /* BFA module */
struct bfa_fcpim_mod_s *fcpim; /* parent fcpim module */ struct bfa_fcpim_s *fcpim; /* parent fcpim module */
struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */ struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */
struct bfad_tskim_s *dtsk; /* driver task mgmt cmnd */ struct bfad_tskim_s *dtsk; /* driver task mgmt cmnd */
bfa_boolean_t notify; /* notify itnim on TM comp */ bfa_boolean_t notify; /* notify itnim on TM comp */
...@@ -182,13 +218,13 @@ struct bfa_itnim_s { ...@@ -182,13 +218,13 @@ struct bfa_itnim_s {
struct bfa_wc_s wc; /* waiting counter */ struct bfa_wc_s wc; /* waiting counter */
struct bfa_timer_s timer; /* pending IO TOV */ struct bfa_timer_s timer; /* pending IO TOV */
struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */
struct bfa_fcpim_mod_s *fcpim; /* fcpim module */ struct bfa_fcpim_s *fcpim; /* fcpim module */
struct bfa_itnim_iostats_s stats; struct bfa_itnim_iostats_s stats;
struct bfa_itnim_ioprofile_s ioprofile; struct bfa_itnim_ioprofile_s ioprofile;
}; };
#define bfa_itnim_is_online(_itnim) ((_itnim)->is_online) #define bfa_itnim_is_online(_itnim) ((_itnim)->is_online)
#define BFA_FCPIM_MOD(_hal) (&(_hal)->modules.fcpim_mod) #define BFA_FCPIM(_hal) (&(_hal)->modules.fcp_mod.fcpim)
#define BFA_IOIM_TAG_2_ID(_iotag) ((_iotag) & BFA_IOIM_IOTAG_MASK) #define BFA_IOIM_TAG_2_ID(_iotag) ((_iotag) & BFA_IOIM_IOTAG_MASK)
#define BFA_IOIM_FROM_TAG(_fcpim, _iotag) \ #define BFA_IOIM_FROM_TAG(_fcpim, _iotag) \
(&fcpim->ioim_arr[(_iotag & BFA_IOIM_IOTAG_MASK)]) (&fcpim->ioim_arr[(_iotag & BFA_IOIM_IOTAG_MASK)])
...@@ -196,9 +232,9 @@ struct bfa_itnim_s { ...@@ -196,9 +232,9 @@ struct bfa_itnim_s {
(&fcpim->tskim_arr[_tmtag & (fcpim->num_tskim_reqs - 1)]) (&fcpim->tskim_arr[_tmtag & (fcpim->num_tskim_reqs - 1)])
#define bfa_io_profile_start_time(_bfa) \ #define bfa_io_profile_start_time(_bfa) \
(_bfa->modules.fcpim_mod.io_profile_start_time) ((_bfa)->modules.fcp_mod.fcpim.io_profile_start_time)
#define bfa_fcpim_get_io_profile(_bfa) \ #define bfa_fcpim_get_io_profile(_bfa) \
(_bfa->modules.fcpim_mod.io_profile) ((_bfa)->modules.fcp_mod.fcpim.io_profile)
#define bfa_ioim_update_iotag(__ioim) do { \ #define bfa_ioim_update_iotag(__ioim) do { \
uint16_t k = (__ioim)->iotag >> BFA_IOIM_RETRY_TAG_OFFSET; \ uint16_t k = (__ioim)->iotag >> BFA_IOIM_RETRY_TAG_OFFSET; \
k++; (__ioim)->iotag &= BFA_IOIM_IOTAG_MASK; \ k++; (__ioim)->iotag &= BFA_IOIM_IOTAG_MASK; \
...@@ -217,7 +253,7 @@ bfa_ioim_maxretry_reached(struct bfa_ioim_s *ioim) ...@@ -217,7 +253,7 @@ bfa_ioim_maxretry_reached(struct bfa_ioim_s *ioim)
/* /*
* function prototypes * function prototypes
*/ */
void bfa_ioim_attach(struct bfa_fcpim_mod_s *fcpim, void bfa_ioim_attach(struct bfa_fcpim_s *fcpim,
struct bfa_meminfo_s *minfo); struct bfa_meminfo_s *minfo);
void bfa_ioim_isr(struct bfa_s *bfa, struct bfi_msg_s *msg); void bfa_ioim_isr(struct bfa_s *bfa, struct bfi_msg_s *msg);
void bfa_ioim_good_comp_isr(struct bfa_s *bfa, void bfa_ioim_good_comp_isr(struct bfa_s *bfa,
...@@ -228,7 +264,7 @@ void bfa_ioim_cleanup_tm(struct bfa_ioim_s *ioim, ...@@ -228,7 +264,7 @@ void bfa_ioim_cleanup_tm(struct bfa_ioim_s *ioim,
void bfa_ioim_iocdisable(struct bfa_ioim_s *ioim); void bfa_ioim_iocdisable(struct bfa_ioim_s *ioim);
void bfa_ioim_tov(struct bfa_ioim_s *ioim); void bfa_ioim_tov(struct bfa_ioim_s *ioim);
void bfa_tskim_attach(struct bfa_fcpim_mod_s *fcpim, void bfa_tskim_attach(struct bfa_fcpim_s *fcpim,
struct bfa_meminfo_s *minfo); struct bfa_meminfo_s *minfo);
void bfa_tskim_isr(struct bfa_s *bfa, struct bfi_msg_s *msg); void bfa_tskim_isr(struct bfa_s *bfa, struct bfi_msg_s *msg);
void bfa_tskim_iodone(struct bfa_tskim_s *tskim); void bfa_tskim_iodone(struct bfa_tskim_s *tskim);
...@@ -237,9 +273,8 @@ void bfa_tskim_cleanup(struct bfa_tskim_s *tskim); ...@@ -237,9 +273,8 @@ void bfa_tskim_cleanup(struct bfa_tskim_s *tskim);
void bfa_itnim_meminfo(struct bfa_iocfc_cfg_s *cfg, u32 *km_len, void bfa_itnim_meminfo(struct bfa_iocfc_cfg_s *cfg, u32 *km_len,
u32 *dm_len); u32 *dm_len);
void bfa_itnim_attach(struct bfa_fcpim_mod_s *fcpim, void bfa_itnim_attach(struct bfa_fcpim_s *fcpim,
struct bfa_meminfo_s *minfo); struct bfa_meminfo_s *minfo);
void bfa_itnim_detach(struct bfa_fcpim_mod_s *fcpim);
void bfa_itnim_iocdisable(struct bfa_itnim_s *itnim); void bfa_itnim_iocdisable(struct bfa_itnim_s *itnim);
void bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *msg); void bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *msg);
void bfa_itnim_iodone(struct bfa_itnim_s *itnim); void bfa_itnim_iodone(struct bfa_itnim_s *itnim);
...@@ -254,11 +289,11 @@ u16 bfa_fcpim_path_tov_get(struct bfa_s *bfa); ...@@ -254,11 +289,11 @@ u16 bfa_fcpim_path_tov_get(struct bfa_s *bfa);
u16 bfa_fcpim_qdepth_get(struct bfa_s *bfa); u16 bfa_fcpim_qdepth_get(struct bfa_s *bfa);
#define bfa_fcpim_ioredirect_enabled(__bfa) \ #define bfa_fcpim_ioredirect_enabled(__bfa) \
(((struct bfa_fcpim_mod_s *)(BFA_FCPIM_MOD(__bfa)))->ioredirect) (((struct bfa_fcpim_s *)(BFA_FCPIM(__bfa)))->ioredirect)
#define bfa_fcpim_get_next_reqq(__bfa, __qid) \ #define bfa_fcpim_get_next_reqq(__bfa, __qid) \
{ \ { \
struct bfa_fcpim_mod_s *__fcpim = BFA_FCPIM_MOD(__bfa); \ struct bfa_fcpim_s *__fcpim = BFA_FCPIM(__bfa); \
__fcpim->reqq++; \ __fcpim->reqq++; \
__fcpim->reqq &= (BFI_IOC_MAX_CQS - 1); \ __fcpim->reqq &= (BFI_IOC_MAX_CQS - 1); \
*(__qid) = __fcpim->reqq; \ *(__qid) = __fcpim->reqq; \
......
...@@ -34,7 +34,7 @@ struct bfa_modules_s { ...@@ -34,7 +34,7 @@ struct bfa_modules_s {
struct bfa_lps_mod_s lps_mod; /* fcxp module */ struct bfa_lps_mod_s lps_mod; /* fcxp module */
struct bfa_uf_mod_s uf_mod; /* unsolicited frame module */ struct bfa_uf_mod_s uf_mod; /* unsolicited frame module */
struct bfa_rport_mod_s rport_mod; /* remote port module */ struct bfa_rport_mod_s rport_mod; /* remote port module */
struct bfa_fcpim_mod_s fcpim_mod; /* FCP initiator module */ struct bfa_fcp_mod_s fcp_mod; /* FCP initiator module */
struct bfa_sgpg_mod_s sgpg_mod; /* SG page module */ struct bfa_sgpg_mod_s sgpg_mod; /* SG page module */
struct bfa_port_s port; /* Physical port module */ struct bfa_port_s port; /* Physical port module */
}; };
...@@ -51,7 +51,6 @@ enum { ...@@ -51,7 +51,6 @@ enum {
BFA_TRC_HAL_IOCFC_CB = 5, BFA_TRC_HAL_IOCFC_CB = 5,
}; };
/* /*
* Macro to define a new BFA module * Macro to define a new BFA module
*/ */
...@@ -122,6 +121,6 @@ extern struct bfa_module_s hal_mod_fcxp; ...@@ -122,6 +121,6 @@ extern struct bfa_module_s hal_mod_fcxp;
extern struct bfa_module_s hal_mod_lps; extern struct bfa_module_s hal_mod_lps;
extern struct bfa_module_s hal_mod_uf; extern struct bfa_module_s hal_mod_uf;
extern struct bfa_module_s hal_mod_rport; extern struct bfa_module_s hal_mod_rport;
extern struct bfa_module_s hal_mod_fcpim; extern struct bfa_module_s hal_mod_fcp;
#endif /* __BFA_MODULES_H__ */ #endif /* __BFA_MODULES_H__ */
...@@ -40,6 +40,9 @@ struct bfi_iocfc_cfg_s { ...@@ -40,6 +40,9 @@ struct bfi_iocfc_cfg_s {
u8 sense_buf_len; /* SCSI sense length */ u8 sense_buf_len; /* SCSI sense length */
u16 rsvd_1; u16 rsvd_1;
u32 endian_sig; /* endian signature of host */ u32 endian_sig; /* endian signature of host */
__be16 num_ioim_reqs;
__be16 num_fwtio_reqs;
u8 rsvd[4];
/* /*
* Request and response circular queue base addresses, size and * Request and response circular queue base addresses, size and
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment