lpfc.h
来自「linux 内核源代码」· C头文件 代码 · 共 603 行 · 第 1/2 页
H
603 行
struct lpfc_name fc_nodename; /* fc nodename */ struct lpfc_name fc_portname; /* fc portname */ struct lpfc_work_evt disc_timeout_evt; struct timer_list fc_disctmo; /* Discovery rescue timer */ uint8_t fc_ns_retry; /* retries for fabric nameserver */ uint32_t fc_prli_sent; /* cntr for outstanding PRLIs */ spinlock_t work_port_lock; uint32_t work_port_events; /* Timeout to be handled */#define WORKER_DISC_TMO 0x1 /* vport: Discovery timeout */#define WORKER_ELS_TMO 0x2 /* vport: ELS timeout */#define WORKER_FDMI_TMO 0x4 /* vport: FDMI timeout */#define WORKER_MBOX_TMO 0x100 /* hba: MBOX timeout */#define WORKER_HB_TMO 0x200 /* hba: Heart beat timeout */#define WORKER_FABRIC_BLOCK_TMO 0x400 /* hba: fabric block timout */#define WORKER_RAMP_DOWN_QUEUE 0x800 /* hba: Decrease Q depth */#define WORKER_RAMP_UP_QUEUE 0x1000 /* hba: Increase Q depth */ struct timer_list fc_fdmitmo; struct timer_list els_tmofunc; int unreg_vpi_cmpl; uint8_t load_flag;#define FC_LOADING 0x1 /* HBA in process of loading drvr */#define FC_UNLOADING 0x2 /* HBA in process of unloading drvr */ char *vname; /* Application assigned name */ /* Vport Config Parameters */ uint32_t cfg_scan_down; uint32_t cfg_lun_queue_depth; uint32_t cfg_nodev_tmo; uint32_t cfg_devloss_tmo; uint32_t cfg_restrict_login; uint32_t cfg_peer_port_login; uint32_t cfg_fcp_class; uint32_t cfg_use_adisc; uint32_t cfg_fdmi_on; uint32_t cfg_discovery_threads; uint32_t cfg_log_verbose; uint32_t cfg_max_luns; uint32_t dev_loss_tmo_changed; struct fc_vport *fc_vport;#ifdef CONFIG_LPFC_DEBUG_FS struct dentry *debug_disc_trc; struct dentry *debug_nodelist; struct dentry *vport_debugfs_root; struct lpfc_debugfs_trc *disc_trc; atomic_t disc_trc_cnt;#endif};struct hbq_s { uint16_t entry_count; /* Current number of HBQ slots */ uint32_t next_hbqPutIdx; /* Index to next HBQ slot to use */ uint32_t hbqPutIdx; /* HBQ slot to use */ uint32_t local_hbqGetIdx; /* Local copy of Get index from Port */ void *hbq_virt; /* Virtual ptr to this hbq */ struct list_head hbq_buffer_list; /* buffers assigned to this HBQ */ /* Callback for HBQ buffer allocation */ struct hbq_dmabuf *(*hbq_alloc_buffer) (struct lpfc_hba *); /* Callback for HBQ buffer free */ void (*hbq_free_buffer) (struct lpfc_hba *, struct hbq_dmabuf *);};#define LPFC_MAX_HBQS 4/* this matches the position in the lpfc_hbq_defs array */#define LPFC_ELS_HBQ 0#define LPFC_EXTRA_HBQ 1struct lpfc_hba { struct lpfc_sli sli; uint32_t sli_rev; /* SLI2 or SLI3 */ uint32_t sli3_options; /* Mask of enabled SLI3 options */#define LPFC_SLI3_ENABLED 0x01#define LPFC_SLI3_HBQ_ENABLED 0x02#define LPFC_SLI3_NPIV_ENABLED 0x04#define LPFC_SLI3_VPORT_TEARDOWN 0x08 uint32_t iocb_cmd_size; uint32_t iocb_rsp_size; enum hba_state link_state; uint32_t link_flag; /* link state flags */#define LS_LOOPBACK_MODE 0x1 /* NPort is in Loopback mode */ /* This flag is set while issuing */ /* INIT_LINK mailbox command */#define LS_NPIV_FAB_SUPPORTED 0x2 /* Fabric supports NPIV */#define LS_IGNORE_ERATT 0x3 /* intr handler should ignore ERATT */ struct lpfc_sli2_slim *slim2p; struct lpfc_dmabuf hbqslimp; dma_addr_t slim2p_mapping; uint16_t pci_cfg_value; uint8_t work_found;#define LPFC_MAX_WORKER_ITERATION 4 uint8_t fc_linkspeed; /* Link speed after last READ_LA */ uint32_t fc_eventTag; /* event tag for link attention */ struct timer_list fc_estabtmo; /* link establishment timer */ /* These fields used to be binfo */ uint32_t fc_pref_DID; /* preferred D_ID */ uint8_t fc_pref_ALPA; /* preferred AL_PA */ uint32_t fc_edtov; /* E_D_TOV timer value */ uint32_t fc_arbtov; /* ARB_TOV timer value */ uint32_t fc_ratov; /* R_A_TOV timer value */ uint32_t fc_rttov; /* R_T_TOV timer value */ uint32_t fc_altov; /* AL_TOV timer value */ uint32_t fc_crtov; /* C_R_TOV timer value */ uint32_t fc_citov; /* C_I_TOV timer value */ struct serv_parm fc_fabparam; /* fabric service parameters buffer */ uint8_t alpa_map[128]; /* AL_PA map from READ_LA */ uint32_t lmt; uint32_t fc_topology; /* link topology, from LINK INIT */ struct lpfc_stats fc_stat; struct lpfc_nodelist fc_fcpnodev; /* nodelist entry for no device */ uint32_t nport_event_cnt; /* timestamp for nlplist entry */ uint8_t wwnn[8]; uint8_t wwpn[8]; uint32_t RandomData[7]; /* HBA Config Parameters */ uint32_t cfg_ack0; uint32_t cfg_enable_npiv; uint32_t cfg_topology; uint32_t cfg_link_speed; uint32_t cfg_cr_delay; uint32_t cfg_cr_count; uint32_t cfg_multi_ring_support; uint32_t cfg_multi_ring_rctl; uint32_t cfg_multi_ring_type; uint32_t cfg_poll; uint32_t cfg_poll_tmo; uint32_t cfg_use_msi; uint32_t cfg_sg_seg_cnt; uint32_t cfg_sg_dma_buf_size; uint64_t cfg_soft_wwnn; uint64_t cfg_soft_wwpn; uint32_t cfg_hba_queue_depth; lpfc_vpd_t vpd; /* vital product data */ struct pci_dev *pcidev; struct list_head work_list; uint32_t work_ha; /* Host Attention Bits for WT */ uint32_t work_ha_mask; /* HA Bits owned by WT */ uint32_t work_hs; /* HS stored in case of ERRAT */ uint32_t work_status[2]; /* Extra status from SLIM */ wait_queue_head_t *work_wait; struct task_struct *worker_thread; uint32_t hbq_count; /* Count of configured HBQs */ struct hbq_s hbqs[LPFC_MAX_HBQS]; /* local copy of hbq indicies */ unsigned long pci_bar0_map; /* Physical address for PCI BAR0 */ unsigned long pci_bar2_map; /* Physical address for PCI BAR2 */ void __iomem *slim_memmap_p; /* Kernel memory mapped address for PCI BAR0 */ void __iomem *ctrl_regs_memmap_p;/* Kernel memory mapped address for PCI BAR2 */ void __iomem *MBslimaddr; /* virtual address for mbox cmds */ void __iomem *HAregaddr; /* virtual address for host attn reg */ void __iomem *CAregaddr; /* virtual address for chip attn reg */ void __iomem *HSregaddr; /* virtual address for host status reg */ void __iomem *HCregaddr; /* virtual address for host ctl reg */ struct lpfc_hgp __iomem *host_gp; /* Host side get/put pointers */ uint32_t __iomem *hbq_put; /* Address in SLIM to HBQ put ptrs */ uint32_t *hbq_get; /* Host mem address of HBQ get ptrs */ int brd_no; /* FC board number */ char SerialNumber[32]; /* adapter Serial Number */ char OptionROMVersion[32]; /* adapter BIOS / Fcode version */ char ModelDesc[256]; /* Model Description */ char ModelName[80]; /* Model Name */ char ProgramType[256]; /* Program Type */ char Port[20]; /* Port No */ uint8_t vpd_flag; /* VPD data flag */#define VPD_MODEL_DESC 0x1 /* valid vpd model description */#define VPD_MODEL_NAME 0x2 /* valid vpd model name */#define VPD_PROGRAM_TYPE 0x4 /* valid vpd program type */#define VPD_PORT 0x8 /* valid vpd port data */#define VPD_MASK 0xf /* mask for any vpd data */ uint8_t soft_wwn_enable; struct timer_list fcp_poll_timer; /* * stat counters */ uint64_t fc4InputRequests; uint64_t fc4OutputRequests; uint64_t fc4ControlRequests; struct lpfc_sysfs_mbox sysfs_mbox; /* fastpath list. */ spinlock_t scsi_buf_list_lock; struct list_head lpfc_scsi_buf_list; uint32_t total_scsi_bufs; struct list_head lpfc_iocb_list; uint32_t total_iocbq_bufs; spinlock_t hbalock; /* pci_mem_pools */ struct pci_pool *lpfc_scsi_dma_buf_pool; struct pci_pool *lpfc_mbuf_pool; struct pci_pool *lpfc_hbq_pool; struct lpfc_dma_pool lpfc_mbuf_safety_pool; mempool_t *mbox_mem_pool; mempool_t *nlp_mem_pool; struct fc_host_statistics link_stats; uint8_t using_msi; struct list_head port_list; struct lpfc_vport *pport; /* physical lpfc_vport pointer */ uint16_t max_vpi; /* Maximum virtual nports */#define LPFC_MAX_VPI 100 /* Max number of VPI supported */#define LPFC_MAX_VPORTS (LPFC_MAX_VPI+1)/* Max number of VPorts supported */ unsigned long *vpi_bmask; /* vpi allocation table */ /* Data structure used by fabric iocb scheduler */ struct list_head fabric_iocb_list; atomic_t fabric_iocb_count; struct timer_list fabric_block_timer; unsigned long bit_flags;#define FABRIC_COMANDS_BLOCKED 0 atomic_t num_rsrc_err; atomic_t num_cmd_success; unsigned long last_rsrc_error_time; unsigned long last_ramp_down_time; unsigned long last_ramp_up_time;#ifdef CONFIG_LPFC_DEBUG_FS struct dentry *hba_debugfs_root; atomic_t debugfs_vport_count; struct dentry *debug_hbqinfo; struct dentry *debug_dumpslim; struct dentry *debug_slow_ring_trc; struct lpfc_debugfs_trc *slow_ring_trc; atomic_t slow_ring_trc_cnt;#endif /* Fields used for heart beat. */ unsigned long last_completion_time; struct timer_list hb_tmofunc; uint8_t hb_outstanding;};static inline struct Scsi_Host *lpfc_shost_from_vport(struct lpfc_vport *vport){ return container_of((void *) vport, struct Scsi_Host, hostdata[0]);}static inline voidlpfc_set_loopback_flag(struct lpfc_hba *phba){ if (phba->cfg_topology == FLAGS_LOCAL_LB) phba->link_flag |= LS_LOOPBACK_MODE; else phba->link_flag &= ~LS_LOOPBACK_MODE;}static inline intlpfc_is_link_up(struct lpfc_hba *phba){ return phba->link_state == LPFC_LINK_UP || phba->link_state == LPFC_CLEAR_LA || phba->link_state == LPFC_HBA_READY;}#define FC_REG_DUMP_EVENT 0x10 /* Register for Dump events */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?