Emulex Logo
OneCoreā„¢ Storage SDK Release 11.2
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ocs_hal_queues.h File Reference

Go to the source code of this file.

Data Structures

struct  ocs_hal_qtop_entry_t
 
struct  ocs_hal_rqs_info_t
 
struct  ocs_hal_rqs_info_t::rq_config
 
struct  ocs_hal_mrq_info_t
 
struct  ocs_hal_qtop_t
 

Macros

#define OCS_HAL_EQ_ENTRIES_MIN   1024
 
#define OCS_HAL_EQ_ENTRIES_DEF   1024
 
#define OCS_HAL_EQ_ENTRIES_MAX   4096
 
#define OCS_HAL_CQ_ENTRIES_MIN   256
 
#define OCS_HAL_CQ_ENTRIES_DEF   4096
 
#define OCS_HAL_CQ_ENTRIES_MAX   4096
 
#define OCS_HAL_WQ_ENTRIES_MIN   64
 
#define OCS_HAL_WQ_ENTRIES_DEF   2048
 
#define OCS_HAL_WQ_ENTRIES_MAX   2048
 
#define OCS_HAL_RQ_ENTRIES_MIN   512
 
#define OCS_HAL_RQ_ENTRIES_DEF   1024
 
#define OCS_HAL_RQ_ENTRIES_MAX   4096
 
#define OCS_HAL_MQ_ENTRIES_MIN   16
 
#define OCS_HAL_MQ_ENTRIES_DEF   128
 
#define OCS_HAL_MQ_ENTRIES_MAX   128
 
#define MAX_TOKENS   256
 
#define OCS_HAL_MAX_QTOP_ENTRIES   200
 

Enumerations

enum  ocs_hal_qtop_entry_e {
  QTOP_EQ = 0, QTOP_CQ, QTOP_WQ, QTOP_RQ,
  QTOP_MQ, QTOP_LAST
}
 

Functions

ocs_hal_qtop_t * ocs_hal_qtop_parse (ocs_hal_t *hal, const char *qtop_string)
 Parse queue topology string. More...
 
void ocs_hal_qtop_free (ocs_hal_qtop_t *qtop)
 free queue topology object More...
 
const char * ocs_hal_qtop_entry_name (ocs_hal_qtop_entry_e entry)
 
uint32_t ocs_hal_qtop_eq_count (ocs_hal_t *hal)
 Return count of EQs for a queue topology object. More...
 
ocs_hal_rtn_e ocs_hal_init_queues (ocs_hal_t *hal, ocs_hal_qtop_t *qtop)
 Initialize queues. More...
 
void hal_thread_eq_handler (ocs_hal_t *hal, hal_eq_t *eq, uint32_t max_isr_time_msec)
 
void hal_thread_cq_handler (ocs_hal_t *hal, hal_cq_t *cq)
 
hal_wq_t * ocs_hal_queue_next_wq (ocs_hal_t *hal, ocs_hal_io_t *io)
 Allocate a WQ to an IO object. More...
 
static bool ocs_power_of_2 (size_t len)
 
static bool ocs_qlen_valid (uint32_t qlen, uint32_t min, uint32_t max)
 

Macro Details

#define MAX_TOKENS   256

Definition at line 112 of file ocs_hal_queues.h.

#define OCS_HAL_CQ_ENTRIES_DEF   4096

Definition at line 46 of file ocs_hal_queues.h.

#define OCS_HAL_CQ_ENTRIES_MAX   4096

Definition at line 47 of file ocs_hal_queues.h.

#define OCS_HAL_CQ_ENTRIES_MIN   256

Definition at line 45 of file ocs_hal_queues.h.

#define OCS_HAL_EQ_ENTRIES_DEF   1024

Definition at line 42 of file ocs_hal_queues.h.

#define OCS_HAL_EQ_ENTRIES_MAX   4096

Definition at line 43 of file ocs_hal_queues.h.

#define OCS_HAL_EQ_ENTRIES_MIN   1024

Definition at line 41 of file ocs_hal_queues.h.

#define OCS_HAL_MAX_QTOP_ENTRIES   200

Definition at line 113 of file ocs_hal_queues.h.

#define OCS_HAL_MQ_ENTRIES_DEF   128

Definition at line 58 of file ocs_hal_queues.h.

#define OCS_HAL_MQ_ENTRIES_MAX   128

Definition at line 59 of file ocs_hal_queues.h.

#define OCS_HAL_MQ_ENTRIES_MIN   16

Definition at line 57 of file ocs_hal_queues.h.

#define OCS_HAL_RQ_ENTRIES_DEF   1024

Definition at line 54 of file ocs_hal_queues.h.

#define OCS_HAL_RQ_ENTRIES_MAX   4096

Definition at line 55 of file ocs_hal_queues.h.

#define OCS_HAL_RQ_ENTRIES_MIN   512

Definition at line 53 of file ocs_hal_queues.h.

#define OCS_HAL_WQ_ENTRIES_DEF   2048

Definition at line 50 of file ocs_hal_queues.h.

#define OCS_HAL_WQ_ENTRIES_MAX   2048

Definition at line 51 of file ocs_hal_queues.h.

#define OCS_HAL_WQ_ENTRIES_MIN   64

Definition at line 49 of file ocs_hal_queues.h.

Enumeration Details

Enumerator
QTOP_EQ 
QTOP_CQ 
QTOP_WQ 
QTOP_RQ 
QTOP_MQ 
QTOP_LAST 

Definition at line 61 of file ocs_hal_queues.h.

Function Details

void hal_thread_cq_handler ( ocs_hal_t *  hal,
hal_cq_t *  cq 
)
void hal_thread_eq_handler ( ocs_hal_t *  hal,
hal_eq_t *  eq,
uint32_t  max_isr_time_msec 
)
ocs_hal_rtn_e ocs_hal_init_queues ( ocs_hal_t *  hal,
ocs_hal_qtop_t *  qtop 
)

Initialize queues.

Given the parsed queue topology spec, the SLI queues are created and initialized

Parameters
halpointer to HAL object
qtoppointer to queue topology
Returns
returns 0 for success, an error code value for failure.

Definition at line 56 of file ocs_hal_queues.c.

const char* ocs_hal_qtop_entry_name ( ocs_hal_qtop_entry_e  entry)
uint32_t ocs_hal_qtop_eq_count ( ocs_hal_t *  hal)

Return count of EQs for a queue topology object.

The EQ count for in the HALs queue topology (hal->qtop) object is returned

Parameters
halpointer to HAL object
Returns
count of EQs

Definition at line 1097 of file ocs_hal_queues.c.

void ocs_hal_qtop_free ( ocs_hal_qtop_t *  qtop)

free queue topology object

Parameters
qtoppointer to QTOP object
Returns
none

Definition at line 1765 of file ocs_hal_queues.c.

ocs_hal_qtop_t* ocs_hal_qtop_parse ( ocs_hal_t *  hal,
const char *  qtop_string 
)

Parse queue topology string.

The queue topology object is allocated, and filled with the results of parsing the passed in queue topology string

Parameters
halpointer to HAL object
qtop_stringinput queue topology string
Returns
pointer to allocated QTOP object, or NULL if there was an error

Definition at line 1687 of file ocs_hal_queues.c.

hal_wq_t* ocs_hal_queue_next_wq ( ocs_hal_t *  hal,
ocs_hal_io_t *  io 
)

Allocate a WQ to an IO object.

The next work queue index is used to assign a WQ to an IO.

If wq_steering is OCS_HAL_WQ_STEERING_CLASS, a WQ from io->wq_class is selected.

If wq_steering is OCS_HAL_WQ_STEERING_REQUEST, then a WQ from the EQ that the IO request came in on is selected.

If wq_steering is OCS_HAL_WQ_STEERING_CPU, then a WQ associted with the CPU the request is made on is selected.

Parameters
halpointer to HAL object
iopointer to IO object
Returns
Return pointer to next WQ

Definition at line 1053 of file ocs_hal_queues.c.

static bool ocs_power_of_2 ( size_t  len)
inlinestatic

Definition at line 136 of file ocs_hal_queues.h.

static bool ocs_qlen_valid ( uint32_t  qlen,
uint32_t  min,
uint32_t  max 
)
inlinestatic

Definition at line 142 of file ocs_hal_queues.h.