Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ocs_hal_t Struct Reference

HAL object. More...

#include <ocs_hal.h>

Detailed Description

HAL object.

Definition at line 902 of file ocs_hal.h.

Data Fields

ocs_os_handle_t os
 
sli4_t sli
 
uint16_t ulp_start
 
uint16_t ulp_max
 
uint32_t dump_size
 
ocs_hal_state_e state
 
uint8_t hal_setup_called
 
uint8_t sliport_healthcheck
 
uint8_t disable_fec
 
uint8_t enable_fw_ag_rsp
 
uint16_t watchdog_timeout
 
unsigned long jiffies_prev
 
ocs_lock_t watchdog_lock
 
const char * sliport_pause_errors
 
struct {
   uint32_t   n_eq
 
   uint32_t   n_cq
 
   uint32_t   n_mq
 
   uint32_t   n_rq
 
   uint32_t   n_wq
 
   uint32_t   n_io
 
   uint32_t   n_sgl
 
   uint32_t   speed
 
   uint32_t   topology
 
   uint32_t   rq_default_buffer_size
 
   uint32_t   tow_feature
 
   uint32_t   tow_xri_cnt
 
   uint32_t   tow_io_size
 
   uint8_t   esoc
 
   uint16_t   dif_seed
 
   uint16_t   tow_app_tag_value
 
   uint8_t   dif_mode
 
   uint8_t   i_only_aab
 
   uint8_t   emulate_tgt_wqe_timeout
 
   uint32_t   bounce:1
 
   const char *   queue_topology
 
   uint8_t   tow_blksize_chip
 
   uint8_t   tow_t10_enable
 
   uint8_t   tow_p_type
 
   uint8_t   tow_ref_tag_lba
 
   uint8_t   tow_app_tag_valid
 
   uint8_t   rq_selection_policy
 
   uint8_t   rr_quanta
 
   uint32_t   filter_def [SLI4_CMD_REG_FCFI_NUM_RQ_CFG]
 
   uint32_t   cq_process_limit
 
   uint32_t   suppress_rsp_capable
 
} config
 
uint32_t num_qentries [SLI_QTYPE_MAX]
 
sli4_queue_t * wq [OCS_HAL_MAX_NUM_WQ]
 
sli4_queue_t * rq [OCS_HAL_MAX_NUM_RQ]
 
uint16_t hal_rq_lookup [OCS_HAL_MAX_NUM_RQ]
 
sli4_queue_t * mq [OCS_HAL_MAX_NUM_MQ]
 
sli4_queue_t * cq [OCS_HAL_MAX_NUM_CQ]
 
sli4_queue_t * eq [OCS_HAL_MAX_NUM_EQ]
 
uint32_t eq_count
 
uint32_t cq_count
 
uint32_t mq_count
 
uint32_t wq_count
 
uint32_t rq_count
 
ocs_list_t eq_list
 
ocs_queue_hash_t * cq_hash
 
ocs_queue_hash_t * rq_hash
 
ocs_queue_hash_t * wq_hash
 
hal_wq_t * hal_wq [OCS_HAL_MAX_NUM_WQ]
 
hal_rq_t * hal_rq [OCS_HAL_MAX_NUM_RQ]
 
hal_mq_t * hal_mq [OCS_HAL_MAX_NUM_MQ]
 
hal_cq_t * hal_cq [OCS_HAL_MAX_NUM_CQ]
 
hal_eq_t * hal_eq [OCS_HAL_MAX_NUM_EQ]
 
uint32_t hal_rq_count
 
bool hal_mrq_used
 
ocs_varray_t * wq_class_array [OCS_HAL_MAX_WQ_CLASS]
 
ocs_varray_t * wq_cpu_array [OCS_HAL_MAX_WQ_CPU]
 
ocs_array_t * seq_pool
 
uint32_t tow_enabled:1
 
uint32_t ocs_pool_t * tow_buffer_pool:31
 
ocs_sem_t bmbx_sem
 
ocs_lock_t cmd_lock
 
ocs_list_t cmd_head
 
ocs_list_t cmd_pending
 
uint32_t cmd_head_count
 
sli4_link_event_t link
 
ocs_hal_linkcfg_e linkcfg
 
uint32_t eth_license
 
struct {
   int32_t(*   domain )(void
      *, ocs_hal_domain_event_e,
      void *)
 
   int32_t(*   port )(void *, ocs_hal_port_event_e,
      void *)
 
   int32_t(*   unsolicited )(void *, ocs_hal_sequence_t *)
 
   int32_t(*   rnode )(void
      *, ocs_hal_remote_node_event_e,
      void *)
 
   int32_t(*   bounce )(void(*)(void *arg), void
      *arg, uint32_t s_id, uint32_t
      d_id, uint32_t ox_id)
 
   int32_t(*   xport )(void *, ocs_hal_xport_event_e)
 
} callback
 
struct {
   void *   domain
 
   void *   port
 
   void *   unsolicited
 
   void *   rnode
 
   void *   bounce
 
   void *   xport
 
} args
 
int32_t first_domain_idx
 
ocs_domain_t * domains [SLI4_MAX_FCFI]
 
uint16_t fcf_index_fcfi [SLI4_MAX_FCF_INDEX]
 
uint16_t fcf_indicator
 
ocs_hal_io_t ** io
 
ocs_dma_t * nvmet_sgls
 
uint8_t * wqe_buffs
 
ocs_lock_t io_lock
 
ocs_lock_t io_abort_lock
 
ocs_list_t io_inuse
 
ocs_list_t io_timed_wqe
 
ocs_list_t io_wait_free
 
ocs_list_t io_free
 
ocs_list_t io_port_owned
 
ocs_list_t io_port_dnrx
 
ocs_dma_t loop_map
 
ocs_dma_t xfer_rdy
 
ocs_dma_t chip_dump_sges
 
ocs_dma_t func_dump_sges
 
ocs_dma_t rnode_mem
 
ocs_hal_rpi_ref_t * rpi_ref
 
char * hal_war_version
 
ocs_hal_workaround_t workaround
 
ocs_atomic_t io_alloc_failed_count
 
ocs_list_t sec_hio_wait_list
 
uint32_t sec_hio_wait_count
 
ocs_hal_qtop_t * qtop
 
uint32_t tcmd_wq_submit [OCS_HAL_MAX_NUM_WQ]
 
uint32_t tcmd_wq_complete [OCS_HAL_MAX_NUM_WQ]
 
ocs_timer_t wqe_timer
 
ocs_timer_t watchdog_timer
 
bool expiration_logged
 
uint32_t in_active_wqe_timer:1
 
uint32_t active_wqe_timer_shutdown:1
 
uint32_t ocs_list_t iopc_list:30
 
ocs_lock_t iopc_list_lock
 
ocs_pool_t * wq_reqtag_pool
 
ocs_atomic_t send_frame_seq_id
 

Field Documentation

uint32_t ocs_hal_t::active_wqe_timer_shutdown

Definition at line 1099 of file ocs_hal.h.

struct { ... } ocs_hal_t::args
ocs_sem_t ocs_hal_t::bmbx_sem

Definition at line 996 of file ocs_hal.h.

uint32_t ocs_hal_t::bounce

Enable driver target wqe timeouts

Definition at line 939 of file ocs_hal.h.

int32_t(* ocs_hal_t::bounce)(void(*)(void *arg), void *arg, uint32_t s_id, uint32_t d_id, uint32_t ox_id)

Definition at line 1031 of file ocs_hal.h.

void* ocs_hal_t::bounce

Definition at line 1039 of file ocs_hal.h.

struct { ... } ocs_hal_t::callback
ocs_dma_t ocs_hal_t::chip_dump_sges

Definition at line 1069 of file ocs_hal.h.

ocs_list_t ocs_hal_t::cmd_head

Definition at line 1000 of file ocs_hal.h.

uint32_t ocs_hal_t::cmd_head_count

Definition at line 1002 of file ocs_hal.h.

ocs_lock_t ocs_hal_t::cmd_lock

Maintain an ordered, linked list of outstanding HAL commands.

Definition at line 999 of file ocs_hal.h.

ocs_list_t ocs_hal_t::cmd_pending

Definition at line 1001 of file ocs_hal.h.

struct { ... } ocs_hal_t::config

HAL configuration, subject to ocs_hal_set()

Definition at line 961 of file ocs_hal.h.

uint32_t ocs_hal_t::cq_count

Definition at line 966 of file ocs_hal.h.

ocs_queue_hash_t* ocs_hal_t::cq_hash

Definition at line 972 of file ocs_hal.h.

uint32_t ocs_hal_t::cq_process_limit

Definition at line 949 of file ocs_hal.h.

uint8_t ocs_hal_t::dif_mode

DIF mode to use

Definition at line 936 of file ocs_hal.h.

uint16_t ocs_hal_t::dif_seed

Definition at line 934 of file ocs_hal.h.

uint8_t ocs_hal_t::disable_fec

Definition at line 911 of file ocs_hal.h.

int32_t(* ocs_hal_t::domain)(void *, ocs_hal_domain_event_e, void *)

Function + argument used to notify upper layer of domain events.

The final argument to the callback is a generic data pointer:

  • ocs_domain_record_t on OCS_HAL_DOMAIN_FOUND
  • ocs_domain_t on OCS_HAL_DOMAIN_ALLOC_FAIL, OCS_HAL_DOMAIN_ALLOC_OK, OCS_HAL_DOMAIN_FREE_FAIL, OCS_HAL_DOMAIN_FREE_OK, OCS_HAL_DOMAIN_ATTACH_FAIL, OCS_HAL_DOMAIN_ATTACH_OK, and OCS_HAL_DOMAIN_LOST.

Definition at line 1020 of file ocs_hal.h.

void* ocs_hal_t::domain

Definition at line 1035 of file ocs_hal.h.

ocs_domain_t* ocs_hal_t::domains[SLI4_MAX_FCFI]

Definition at line 1045 of file ocs_hal.h.

uint32_t ocs_hal_t::dump_size

Definition at line 907 of file ocs_hal.h.

uint8_t ocs_hal_t::emulate_tgt_wqe_timeout

Enable initiator-only auto-abort

Definition at line 938 of file ocs_hal.h.

uint8_t ocs_hal_t::enable_fw_ag_rsp

Definition at line 912 of file ocs_hal.h.

Definition at line 962 of file ocs_hal.h.

uint32_t ocs_hal_t::eq_count

Definition at line 965 of file ocs_hal.h.

ocs_list_t ocs_hal_t::eq_list

Definition at line 970 of file ocs_hal.h.

uint8_t ocs_hal_t::esoc

Definition at line 933 of file ocs_hal.h.

uint32_t ocs_hal_t::eth_license

Ethernet license; to enable FCoE on Lancer

Definition at line 1007 of file ocs_hal.h.

bool ocs_hal_t::expiration_logged

Definition at line 1098 of file ocs_hal.h.

uint16_t ocs_hal_t::fcf_index_fcfi[SLI4_MAX_FCF_INDEX]

Definition at line 1048 of file ocs_hal.h.

uint16_t ocs_hal_t::fcf_indicator

Definition at line 1050 of file ocs_hal.h.

uint32_t ocs_hal_t::filter_def[SLI4_CMD_REG_FCFI_NUM_RQ_CFG]

RQ quanta if rq_selection_policy == 2

Definition at line 948 of file ocs_hal.h.

int32_t ocs_hal_t::first_domain_idx

Definition at line 1044 of file ocs_hal.h.

ocs_dma_t ocs_hal_t::func_dump_sges

Definition at line 1070 of file ocs_hal.h.

hal_cq_t* ocs_hal_t::hal_cq[OCS_HAL_MAX_NUM_CQ]

Definition at line 980 of file ocs_hal.h.

hal_eq_t* ocs_hal_t::hal_eq[OCS_HAL_MAX_NUM_EQ]

Definition at line 981 of file ocs_hal.h.

hal_mq_t* ocs_hal_t::hal_mq[OCS_HAL_MAX_NUM_MQ]

Definition at line 979 of file ocs_hal.h.

bool ocs_hal_t::hal_mrq_used

Definition at line 983 of file ocs_hal.h.

hal_rq_t* ocs_hal_t::hal_rq[OCS_HAL_MAX_NUM_RQ]

Definition at line 978 of file ocs_hal.h.

uint32_t ocs_hal_t::hal_rq_count

count of hal_rq[] entries

Definition at line 982 of file ocs_hal.h.

uint16_t ocs_hal_t::hal_rq_lookup[OCS_HAL_MAX_NUM_RQ]

Definition at line 959 of file ocs_hal.h.

uint8_t ocs_hal_t::hal_setup_called

Definition at line 909 of file ocs_hal.h.

char* ocs_hal_t::hal_war_version

Definition at line 1076 of file ocs_hal.h.

hal_wq_t* ocs_hal_t::hal_wq[OCS_HAL_MAX_NUM_WQ]

Definition at line 977 of file ocs_hal.h.

uint8_t ocs_hal_t::i_only_aab

Definition at line 937 of file ocs_hal.h.

uint32_t ocs_hal_t::in_active_wqe_timer

TRUE if currently in active wqe timer handler

Definition at line 1099 of file ocs_hal.h.

ocs_hal_io_t** ocs_hal_t::io

pointer array of IO objects

Definition at line 1052 of file ocs_hal.h.

ocs_lock_t ocs_hal_t::io_abort_lock

IO lock to synchronize IO aborting

Definition at line 1057 of file ocs_hal.h.

ocs_atomic_t ocs_hal_t::io_alloc_failed_count

Definition at line 1079 of file ocs_hal.h.

ocs_list_t ocs_hal_t::io_free

List of IO objects available for allocation

Definition at line 1061 of file ocs_hal.h.

ocs_list_t ocs_hal_t::io_inuse

List of IO objects in use

Definition at line 1058 of file ocs_hal.h.

ocs_lock_t ocs_hal_t::io_lock

IO lock to synchronize list access

Definition at line 1056 of file ocs_hal.h.

ocs_list_t ocs_hal_t::io_port_dnrx

List of IO objects needing TOW buffers

Definition at line 1063 of file ocs_hal.h.

ocs_list_t ocs_hal_t::io_port_owned

List of IO objects posted for chip use

Definition at line 1062 of file ocs_hal.h.

ocs_list_t ocs_hal_t::io_timed_wqe

List of IO objects with a timed target WQE

Definition at line 1059 of file ocs_hal.h.

ocs_list_t ocs_hal_t::io_wait_free

List of IO objects waiting to be freed

Definition at line 1060 of file ocs_hal.h.

uint32_t ocs_list_t ocs_hal_t::iopc_list

TRUE if wqe timer is to be shutdown list of IO processing contexts

Definition at line 1099 of file ocs_hal.h.

ocs_lock_t ocs_hal_t::iopc_list_lock

lock for iopc_list

Definition at line 1104 of file ocs_hal.h.

unsigned long ocs_hal_t::jiffies_prev

Definition at line 914 of file ocs_hal.h.

sli4_link_event_t ocs_hal_t::link

Definition at line 1005 of file ocs_hal.h.

ocs_hal_linkcfg_e ocs_hal_t::linkcfg

link configuration setting

Definition at line 1006 of file ocs_hal.h.

ocs_dma_t ocs_hal_t::loop_map

Definition at line 1065 of file ocs_hal.h.

Definition at line 960 of file ocs_hal.h.

uint32_t ocs_hal_t::mq_count

Definition at line 967 of file ocs_hal.h.

uint32_t ocs_hal_t::n_cq

number of completion queues

Definition at line 921 of file ocs_hal.h.

uint32_t ocs_hal_t::n_eq

number of event queues

Definition at line 920 of file ocs_hal.h.

uint32_t ocs_hal_t::n_io

total number of IO objects

Definition at line 925 of file ocs_hal.h.

uint32_t ocs_hal_t::n_mq

number of mailbox queues

Definition at line 922 of file ocs_hal.h.

uint32_t ocs_hal_t::n_rq

number of receive queues

Definition at line 923 of file ocs_hal.h.

uint32_t ocs_hal_t::n_sgl

length of SGL

Definition at line 926 of file ocs_hal.h.

uint32_t ocs_hal_t::n_wq

number of work queues

Definition at line 924 of file ocs_hal.h.

uint32_t ocs_hal_t::num_qentries[SLI_QTYPE_MAX]

Definition at line 954 of file ocs_hal.h.

ocs_dma_t* ocs_hal_t::nvmet_sgls

pointer to array of sgls used by nvmet backend

Definition at line 1053 of file ocs_hal.h.

ocs_os_handle_t ocs_hal_t::os

Definition at line 903 of file ocs_hal.h.

int32_t(* ocs_hal_t::port)(void *, ocs_hal_port_event_e, void *)

Function + argument used to notify upper layers of port events.

The final argument to the callback is a pointer to the effected SLI port for all events.

Definition at line 1027 of file ocs_hal.h.

void* ocs_hal_t::port

Definition at line 1036 of file ocs_hal.h.

ocs_hal_qtop_t* ocs_hal_t::qtop

pointer to queue topology

Definition at line 1091 of file ocs_hal.h.

const char* ocs_hal_t::queue_topology

Queue topology string

Definition at line 940 of file ocs_hal.h.

int32_t(* ocs_hal_t::rnode)(void *, ocs_hal_remote_node_event_e, void *)

Definition at line 1030 of file ocs_hal.h.

void* ocs_hal_t::rnode

Definition at line 1038 of file ocs_hal.h.

ocs_dma_t ocs_hal_t::rnode_mem

Definition at line 1072 of file ocs_hal.h.

ocs_hal_rpi_ref_t* ocs_hal_t::rpi_ref

Definition at line 1074 of file ocs_hal.h.

Definition at line 958 of file ocs_hal.h.

uint32_t ocs_hal_t::rq_count

count of SLI RQs

Definition at line 969 of file ocs_hal.h.

uint32_t ocs_hal_t::rq_default_buffer_size

requested link topology

Definition at line 929 of file ocs_hal.h.

ocs_queue_hash_t* ocs_hal_t::rq_hash

Definition at line 973 of file ocs_hal.h.

uint8_t ocs_hal_t::rq_selection_policy

Definition at line 946 of file ocs_hal.h.

uint8_t ocs_hal_t::rr_quanta

MRQ RQ selection policy

Definition at line 947 of file ocs_hal.h.

uint32_t ocs_hal_t::sec_hio_wait_count
          BZ 161832 Workaround: Count of IOs that were put on the

Secondary HAL IO wait list

Definition at line 1086 of file ocs_hal.h.

ocs_list_t ocs_hal_t::sec_hio_wait_list

BZ 161832 Workaround: Secondary HAL IO context wait list

Definition at line 1085 of file ocs_hal.h.

ocs_atomic_t ocs_hal_t::send_frame_seq_id

send frame sequence ID

Definition at line 1108 of file ocs_hal.h.

ocs_array_t* ocs_hal_t::seq_pool

Definition at line 989 of file ocs_hal.h.

sli4_t ocs_hal_t::sli

Definition at line 904 of file ocs_hal.h.

uint8_t ocs_hal_t::sliport_healthcheck

Definition at line 910 of file ocs_hal.h.

const char* ocs_hal_t::sliport_pause_errors

Definition at line 916 of file ocs_hal.h.

uint32_t ocs_hal_t::speed

Definition at line 927 of file ocs_hal.h.

ocs_hal_state_e ocs_hal_t::state

Definition at line 908 of file ocs_hal.h.

uint32_t ocs_hal_t::suppress_rsp_capable

Number of CQE`s to be processed in cq

Definition at line 950 of file ocs_hal.h.

uint32_t ocs_hal_t::tcmd_wq_complete[OCS_HAL_MAX_NUM_WQ]

stat: wq complete count

Definition at line 1094 of file ocs_hal.h.

uint32_t ocs_hal_t::tcmd_wq_submit[OCS_HAL_MAX_NUM_WQ]

stat: wq sumbit count

Definition at line 1093 of file ocs_hal.h.

uint32_t ocs_hal_t::topology

requested link speed in Mbps

Definition at line 928 of file ocs_hal.h.

uint8_t ocs_hal_t::tow_app_tag_valid

Definition at line 945 of file ocs_hal.h.

uint16_t ocs_hal_t::tow_app_tag_value

The seed for the DIF CRC calculation

Definition at line 935 of file ocs_hal.h.

uint8_t ocs_hal_t::tow_blksize_chip

Definition at line 941 of file ocs_hal.h.

uint32_t ocs_pool_t* ocs_hal_t::tow_buffer_pool

pool of ocs_hal_tow_buffer_t objects

Definition at line 992 of file ocs_hal.h.

uint32_t ocs_hal_t::tow_enabled

TRUE if TOW is enabled

Definition at line 992 of file ocs_hal.h.

uint32_t ocs_hal_t::tow_feature

size of the buffers for first burst

Definition at line 930 of file ocs_hal.h.

uint32_t ocs_hal_t::tow_io_size

Definition at line 932 of file ocs_hal.h.

uint8_t ocs_hal_t::tow_p_type

Definition at line 943 of file ocs_hal.h.

uint8_t ocs_hal_t::tow_ref_tag_lba

Definition at line 944 of file ocs_hal.h.

uint8_t ocs_hal_t::tow_t10_enable

Definition at line 942 of file ocs_hal.h.

uint32_t ocs_hal_t::tow_xri_cnt

Target Optimized Write feature

Definition at line 931 of file ocs_hal.h.

uint16_t ocs_hal_t::ulp_max

Definition at line 906 of file ocs_hal.h.

uint16_t ocs_hal_t::ulp_start

Definition at line 905 of file ocs_hal.h.

int32_t(* ocs_hal_t::unsolicited)(void *, ocs_hal_sequence_t *)

Function + argument used to announce arrival of unsolicited frames

Definition at line 1029 of file ocs_hal.h.

void* ocs_hal_t::unsolicited

Definition at line 1037 of file ocs_hal.h.

ocs_lock_t ocs_hal_t::watchdog_lock

Definition at line 915 of file ocs_hal.h.

uint16_t ocs_hal_t::watchdog_timeout

Definition at line 913 of file ocs_hal.h.

ocs_timer_t ocs_hal_t::watchdog_timer

Timer for heartbeat

Definition at line 1097 of file ocs_hal.h.

ocs_hal_workaround_t ocs_hal_t::workaround

Definition at line 1077 of file ocs_hal.h.

Definition at line 957 of file ocs_hal.h.

ocs_varray_t* ocs_hal_t::wq_class_array[OCS_HAL_MAX_WQ_CLASS]

pool per class WQs

Definition at line 985 of file ocs_hal.h.

uint32_t ocs_hal_t::wq_count

Definition at line 968 of file ocs_hal.h.

ocs_varray_t* ocs_hal_t::wq_cpu_array[OCS_HAL_MAX_WQ_CPU]

pool per CPU WQs

Definition at line 986 of file ocs_hal.h.

ocs_queue_hash_t* ocs_hal_t::wq_hash

Definition at line 974 of file ocs_hal.h.

ocs_pool_t* ocs_hal_t::wq_reqtag_pool

pool of hal_wq_callback_t objects

Definition at line 1106 of file ocs_hal.h.

uint8_t* ocs_hal_t::wqe_buffs

array of WQE buffs mapped to IO objects

Definition at line 1054 of file ocs_hal.h.

ocs_timer_t ocs_hal_t::wqe_timer

Timer to periodically check for WQE timeouts

Definition at line 1096 of file ocs_hal.h.

ocs_dma_t ocs_hal_t::xfer_rdy

Definition at line 1067 of file ocs_hal.h.

int32_t(* ocs_hal_t::xport)(void *, ocs_hal_xport_event_e)

Definition at line 1032 of file ocs_hal.h.

void* ocs_hal_t::xport

Definition at line 1040 of file ocs_hal.h.


The documentation for this struct was generated from the following file: