hermon.h File Reference

Mellanox Hermon Infiniband HCA driver. More...

#include <stdint.h>
#include <gpxe/uaccess.h>
#include <gpxe/ib_packet.h>
#include "mlx_bitops.h"
#include "MT25408_PRM.h"

Go to the source code of this file.

Data Structures

struct  hermonprm_mgm_hash_st
struct  hermonprm_mcg_entry_st
struct  hermonprm_cq_db_record_st
struct  hermonprm_send_db_register_st
struct  hermonprm_event_db_register_st
struct  hermonprm_scalar_parameter_st
struct  hermonprm_event_mask_st
struct  hermonprm_port_state_change_event_st
struct  hermonprm_sense_port_st
 Hermon sense port. More...
struct  hermonprm_write_mtt
struct  hermonprm_ud_send_wqe
struct  hermonprm_mlx_send_wqe
struct  hermonprm_rc_send_wqe
struct  hermonprm_recv_wqe
union  hermonprm_completion_entry
union  hermonprm_event_entry
union  hermonprm_doorbell_register
union  hermonprm_mad
struct  hermon_dev_cap
 Hermon device capabilitiess. More...
struct  hermon_icm_map
 Hermon ICM memory map entry. More...
struct  hermon_mtt
 A Hermon MTT descriptor. More...
union  hermon_send_wqe
 A Hermon send work queue entry. More...
struct  hermon_send_work_queue
 A Hermon send work queue. More...
union  hermon_recv_wqe
 A Hermon receive work queue entry. More...
struct  hermon_recv_work_queue
 A Hermon receive work queue. More...
struct  hermon_queue_pair
 A Hermon queue pair. More...
struct  hermon_completion_queue
 A Hermon completion queue. More...
struct  hermon_event_queue
 A Hermon event queue. More...
struct  hermon
 A Hermon device. More...

Defines

#define HERMON_MAX_PORTS   2
#define HERMON_PORT_BASE   1
#define HERMON_PCI_CONFIG_BAR   PCI_BASE_ADDRESS_0
#define HERMON_PCI_CONFIG_BAR_SIZE   0x100000
#define HERMON_PCI_UAR_BAR   PCI_BASE_ADDRESS_2
#define HERMON_RESET_OFFSET   0x0f0010
#define HERMON_RESET_MAGIC   0x01000000UL
#define HERMON_RESET_WAIT_TIME_MS   1000
#define HERMON_OPCODE_NOP   0x00
#define HERMON_OPCODE_SEND   0x0a
#define HERMON_OPCODE_RECV_ERROR   0xfe
#define HERMON_OPCODE_SEND_ERROR   0xff
#define HERMON_HCR_QUERY_DEV_CAP   0x0003
#define HERMON_HCR_QUERY_FW   0x0004
#define HERMON_HCR_INIT_HCA   0x0007
#define HERMON_HCR_CLOSE_HCA   0x0008
#define HERMON_HCR_INIT_PORT   0x0009
#define HERMON_HCR_CLOSE_PORT   0x000a
#define HERMON_HCR_SW2HW_MPT   0x000d
#define HERMON_HCR_WRITE_MTT   0x0011
#define HERMON_HCR_MAP_EQ   0x0012
#define HERMON_HCR_SW2HW_EQ   0x0013
#define HERMON_HCR_HW2SW_EQ   0x0014
#define HERMON_HCR_QUERY_EQ   0x0015
#define HERMON_HCR_SW2HW_CQ   0x0016
#define HERMON_HCR_HW2SW_CQ   0x0017
#define HERMON_HCR_RST2INIT_QP   0x0019
#define HERMON_HCR_INIT2RTR_QP   0x001a
#define HERMON_HCR_RTR2RTS_QP   0x001b
#define HERMON_HCR_RTS2RTS_QP   0x001c
#define HERMON_HCR_2RST_QP   0x0021
#define HERMON_HCR_QUERY_QP   0x0022
#define HERMON_HCR_CONF_SPECIAL_QP   0x0023
#define HERMON_HCR_MAD_IFC   0x0024
#define HERMON_HCR_READ_MCG   0x0025
#define HERMON_HCR_WRITE_MCG   0x0026
#define HERMON_HCR_MGID_HASH   0x0027
#define HERMON_HCR_SENSE_PORT   0x004d
#define HERMON_HCR_RUN_FW   0x0ff6
#define HERMON_HCR_DISABLE_LAM   0x0ff7
#define HERMON_HCR_ENABLE_LAM   0x0ff8
#define HERMON_HCR_UNMAP_ICM   0x0ff9
#define HERMON_HCR_MAP_ICM   0x0ffa
#define HERMON_HCR_UNMAP_ICM_AUX   0x0ffb
#define HERMON_HCR_MAP_ICM_AUX   0x0ffc
#define HERMON_HCR_SET_ICM_SIZE   0x0ffd
#define HERMON_HCR_UNMAP_FA   0x0ffe
#define HERMON_HCR_MAP_FA   0x0fff
#define HERMON_ST_RC   0x00
#define HERMON_ST_UD   0x03
#define HERMON_ST_MLX   0x07
#define HERMON_MTU_2048   0x04
#define HERMON_INVALID_LKEY   0x00000100UL
#define HERMON_PAGE_SIZE   4096
#define HERMON_DB_POST_SND_OFFSET   0x14
#define HERMON_DB_EQ_OFFSET(_eqn)   ( 0x800 + HERMON_PAGE_SIZE * ( (_eqn) / 4 ) + 0x08 * ( (_eqn) % 4 ) )
#define HERMON_QP_OPT_PARAM_PM_STATE   0x00000400UL
#define HERMON_QP_OPT_PARAM_QKEY   0x00000020UL
#define HERMON_QP_OPT_PARAM_ALT_PATH   0x00000001UL
#define HERMON_MAP_EQ   ( 0UL << 31 )
#define HERMON_UNMAP_EQ   ( 1UL << 31 )
#define HERMON_EV_PORT_STATE_CHANGE   0x09
#define HERMON_SCHED_QP0   0x3f
#define HERMON_SCHED_DEFAULT   0x83
#define HERMON_PM_STATE_ARMED   0x00
#define HERMON_PM_STATE_REARM   0x01
#define HERMON_PM_STATE_MIGRATED   0x03
#define HERMON_RETRY_MAX   0x07
#define HERMON_PORT_TYPE_IB   1
#define HERMON_MAX_GATHER   2
#define HERMON_MAX_SCATTER   1
#define HERMON_CMPT_MAX_ENTRIES   ( 1 << 24 )
 Number of cMPT entries of each type.
#define HERMON_UAR_NON_EQ_PAGE   128
 UAR page for doorbell accesses.
#define HERMON_MAX_MTTS   64
 Maximum number of allocatable MTT entries.
#define HERMON_SEND_WQE_ALIGN   128
 Alignment of Hermon send work queue entries.
#define HERMON_RECV_WQE_ALIGN   16
 Alignment of Hermon receive work queue entries.
#define HERMON_NUM_SPECIAL_QPS   8
 Number of special queue pairs.
#define HERMON_RSVD_SPECIAL_QPS   ( ( HERMON_NUM_SPECIAL_QPS << 1 ) - 1 )
 Number of queue pairs reserved for the "special QP" block.
#define HERMON_MAX_QPS   8
 Maximum number of allocatable queue pairs.
#define HERMON_QPN_RANDOM_MASK   0xfff000
 Queue pair number randomisation mask.
#define HERMON_MAX_CQS   8
 Maximum number of allocatable completion queues.
#define HERMON_MAX_EQS   8
 Maximum number of allocatable event queues.
#define HERMON_NUM_EQES   4
 Number of event queue entries.
#define HERMON_BITMASK_SIZE(max_entries)
 Size of a hermon resource bitmask.
#define HERMON_GLOBAL_PD   0x123456
 Global protection domain.
#define HERMON_MKEY_PREFIX   0x77000000UL
 Memory key prefix.
#define HERMON_HCR_BASE   0x80680
#define HERMON_HCR_REG(x)   ( HERMON_HCR_BASE + 4 * (x) )
#define HERMON_HCR_MAX_WAIT_MS   2000
#define HERMON_MBOX_ALIGN   4096
#define HERMON_MBOX_SIZE   512
#define HERMON_HCR_IN_MBOX   0x00001000UL
#define HERMON_HCR_OUT_MBOX   0x00002000UL
#define HERMON_HCR_OPCODE(_command)   ( (_command) & 0xfff )
#define HERMON_HCR_IN_LEN(_command)   ( ( (_command) >> 12 ) & 0x7fc )
#define HERMON_HCR_OUT_LEN(_command)   ( ( (_command) >> 21 ) & 0x7fc )
#define HERMON_HCR_INOUT_CMD(_opcode, _in_mbox, _in_len,_out_mbox, _out_len)
 Build HCR command from component parts.
#define HERMON_HCR_IN_CMD(_opcode, _in_mbox, _in_len)   HERMON_HCR_INOUT_CMD ( _opcode, _in_mbox, _in_len, 0, 0 )
#define HERMON_HCR_OUT_CMD(_opcode, _out_mbox, _out_len)   HERMON_HCR_INOUT_CMD ( _opcode, 0, 0, _out_mbox, _out_len )
#define HERMON_HCR_VOID_CMD(_opcode)   HERMON_HCR_INOUT_CMD ( _opcode, 0, 0, 0, 0 )

Typedefs

typedef uint32_t hermon_bitmask_t
 A Hermon resource bitmask.

Enumerations

enum  hermon_icm_map_regions {
  HERMON_ICM_QP_CMPT = 0, HERMON_ICM_SRQ_CMPT, HERMON_ICM_CQ_CMPT, HERMON_ICM_EQ_CMPT,
  HERMON_ICM_OTHER, HERMON_ICM_NUM_REGIONS
}
 Discontiguous regions within Hermon ICM. More...
enum  hermon_queue_pair_state { HERMON_QP_ST_RST = 0, HERMON_QP_ST_INIT, HERMON_QP_ST_RTR, HERMON_QP_ST_RTS }
 Hermon queue pair state. More...

Functions

 FILE_LICENCE (GPL2_OR_LATER)
struct MLX_DECLARE_STRUCT (hermonprm_completion_queue_context)
struct MLX_DECLARE_STRUCT (hermonprm_completion_queue_entry)
struct MLX_DECLARE_STRUCT (hermonprm_completion_with_error)
struct MLX_DECLARE_STRUCT (hermonprm_cq_db_record)
struct MLX_DECLARE_STRUCT (hermonprm_eqc)
struct MLX_DECLARE_STRUCT (hermonprm_event_db_register)
struct MLX_DECLARE_STRUCT (hermonprm_event_mask)
struct MLX_DECLARE_STRUCT (hermonprm_event_queue_entry)
struct MLX_DECLARE_STRUCT (hermonprm_hca_command_register)
struct MLX_DECLARE_STRUCT (hermonprm_init_hca)
struct MLX_DECLARE_STRUCT (hermonprm_init_port)
struct MLX_DECLARE_STRUCT (hermonprm_mad_ifc)
struct MLX_DECLARE_STRUCT (hermonprm_mcg_entry)
struct MLX_DECLARE_STRUCT (hermonprm_mgm_hash)
struct MLX_DECLARE_STRUCT (hermonprm_mpt)
struct MLX_DECLARE_STRUCT (hermonprm_mtt)
struct MLX_DECLARE_STRUCT (hermonprm_port_state_change_event)
struct MLX_DECLARE_STRUCT (hermonprm_qp_db_record)
struct MLX_DECLARE_STRUCT (hermonprm_qp_ee_state_transitions)
struct MLX_DECLARE_STRUCT (hermonprm_query_dev_cap)
struct MLX_DECLARE_STRUCT (hermonprm_query_fw)
struct MLX_DECLARE_STRUCT (hermonprm_queue_pair_ee_context_entry)
struct MLX_DECLARE_STRUCT (hermonprm_scalar_parameter)
struct MLX_DECLARE_STRUCT (hermonprm_sense_port)
struct MLX_DECLARE_STRUCT (hermonprm_send_db_register)
struct MLX_DECLARE_STRUCT (hermonprm_ud_address_vector)
struct MLX_DECLARE_STRUCT (hermonprm_virtual_physical_mapping)
struct MLX_DECLARE_STRUCT (hermonprm_wqe_segment_ctrl_mlx)
struct MLX_DECLARE_STRUCT (hermonprm_wqe_segment_ctrl_send)
struct MLX_DECLARE_STRUCT (hermonprm_wqe_segment_data_ptr)
struct MLX_DECLARE_STRUCT (hermonprm_wqe_segment_ud)

Variables

struct hermonprm_mgm_hash_st packed
 A Hermon send work queue entry.


Detailed Description

Mellanox Hermon Infiniband HCA driver.

Definition in file hermon.h.


Define Documentation

#define HERMON_MAX_PORTS   2

Definition at line 24 of file hermon.h.

Referenced by hermon_get_cap().

#define HERMON_PORT_BASE   1

Definition at line 25 of file hermon.h.

Referenced by hermon_alloc_qpn(), and hermon_probe().

#define HERMON_PCI_CONFIG_BAR   PCI_BASE_ADDRESS_0

Definition at line 28 of file hermon.h.

Referenced by hermon_probe().

#define HERMON_PCI_CONFIG_BAR_SIZE   0x100000

Definition at line 29 of file hermon.h.

Referenced by hermon_probe().

#define HERMON_PCI_UAR_BAR   PCI_BASE_ADDRESS_2

Definition at line 30 of file hermon.h.

Referenced by hermon_probe().

#define HERMON_RESET_OFFSET   0x0f0010

Definition at line 33 of file hermon.h.

Referenced by hermon_reset().

#define HERMON_RESET_MAGIC   0x01000000UL

Definition at line 34 of file hermon.h.

Referenced by hermon_reset().

#define HERMON_RESET_WAIT_TIME_MS   1000

Definition at line 35 of file hermon.h.

Referenced by hermon_reset().

#define HERMON_OPCODE_NOP   0x00

Definition at line 38 of file hermon.h.

#define HERMON_OPCODE_SEND   0x0a

#define HERMON_OPCODE_RECV_ERROR   0xfe

Definition at line 40 of file hermon.h.

Referenced by hermon_complete().

#define HERMON_OPCODE_SEND_ERROR   0xff

Definition at line 41 of file hermon.h.

Referenced by hermon_complete().

#define HERMON_HCR_QUERY_DEV_CAP   0x0003

Definition at line 44 of file hermon.h.

Referenced by hermon_cmd_query_dev_cap().

#define HERMON_HCR_QUERY_FW   0x0004

Definition at line 45 of file hermon.h.

Referenced by hermon_cmd_query_fw().

#define HERMON_HCR_INIT_HCA   0x0007

Definition at line 46 of file hermon.h.

Referenced by hermon_cmd_init_hca().

#define HERMON_HCR_CLOSE_HCA   0x0008

Definition at line 47 of file hermon.h.

Referenced by hermon_cmd_close_hca().

#define HERMON_HCR_INIT_PORT   0x0009

Definition at line 48 of file hermon.h.

Referenced by hermon_cmd_init_port().

#define HERMON_HCR_CLOSE_PORT   0x000a

Definition at line 49 of file hermon.h.

Referenced by hermon_cmd_close_port().

#define HERMON_HCR_SW2HW_MPT   0x000d

Definition at line 50 of file hermon.h.

Referenced by hermon_cmd_sw2hw_mpt().

#define HERMON_HCR_WRITE_MTT   0x0011

Definition at line 51 of file hermon.h.

Referenced by hermon_cmd_write_mtt().

#define HERMON_HCR_MAP_EQ   0x0012

Definition at line 52 of file hermon.h.

Referenced by hermon_cmd_map_eq().

#define HERMON_HCR_SW2HW_EQ   0x0013

Definition at line 53 of file hermon.h.

Referenced by hermon_cmd_sw2hw_eq().

#define HERMON_HCR_HW2SW_EQ   0x0014

Definition at line 54 of file hermon.h.

Referenced by hermon_cmd_hw2sw_eq().

#define HERMON_HCR_QUERY_EQ   0x0015

Definition at line 55 of file hermon.h.

Referenced by hermon_cmd_query_eq().

#define HERMON_HCR_SW2HW_CQ   0x0016

Definition at line 56 of file hermon.h.

Referenced by hermon_cmd_sw2hw_cq().

#define HERMON_HCR_HW2SW_CQ   0x0017

Definition at line 57 of file hermon.h.

Referenced by hermon_cmd_hw2sw_cq().

#define HERMON_HCR_RST2INIT_QP   0x0019

Definition at line 58 of file hermon.h.

Referenced by hermon_cmd_rst2init_qp().

#define HERMON_HCR_INIT2RTR_QP   0x001a

Definition at line 59 of file hermon.h.

Referenced by hermon_cmd_init2rtr_qp().

#define HERMON_HCR_RTR2RTS_QP   0x001b

Definition at line 60 of file hermon.h.

Referenced by hermon_cmd_rtr2rts_qp().

#define HERMON_HCR_RTS2RTS_QP   0x001c

Definition at line 61 of file hermon.h.

Referenced by hermon_cmd_rts2rts_qp().

#define HERMON_HCR_2RST_QP   0x0021

Definition at line 62 of file hermon.h.

Referenced by hermon_cmd_2rst_qp().

#define HERMON_HCR_QUERY_QP   0x0022

Definition at line 63 of file hermon.h.

Referenced by hermon_cmd_query_qp().

#define HERMON_HCR_CONF_SPECIAL_QP   0x0023

Definition at line 64 of file hermon.h.

Referenced by hermon_cmd_conf_special_qp().

#define HERMON_HCR_MAD_IFC   0x0024

Definition at line 65 of file hermon.h.

Referenced by hermon_cmd_mad_ifc().

#define HERMON_HCR_READ_MCG   0x0025

Definition at line 66 of file hermon.h.

Referenced by hermon_cmd_read_mcg().

#define HERMON_HCR_WRITE_MCG   0x0026

Definition at line 67 of file hermon.h.

Referenced by hermon_cmd_write_mcg().

#define HERMON_HCR_MGID_HASH   0x0027

Definition at line 68 of file hermon.h.

Referenced by hermon_cmd_mgid_hash().

#define HERMON_HCR_SENSE_PORT   0x004d

Definition at line 69 of file hermon.h.

Referenced by hermon_cmd_sense_port().

#define HERMON_HCR_RUN_FW   0x0ff6

Definition at line 70 of file hermon.h.

Referenced by hermon_cmd_run_fw().

#define HERMON_HCR_DISABLE_LAM   0x0ff7

Definition at line 71 of file hermon.h.

#define HERMON_HCR_ENABLE_LAM   0x0ff8

Definition at line 72 of file hermon.h.

#define HERMON_HCR_UNMAP_ICM   0x0ff9

Definition at line 73 of file hermon.h.

Referenced by hermon_cmd_unmap_icm().

#define HERMON_HCR_MAP_ICM   0x0ffa

Definition at line 74 of file hermon.h.

Referenced by hermon_cmd_map_icm().

#define HERMON_HCR_UNMAP_ICM_AUX   0x0ffb

Definition at line 75 of file hermon.h.

Referenced by hermon_cmd_unmap_icm_aux().

#define HERMON_HCR_MAP_ICM_AUX   0x0ffc

Definition at line 76 of file hermon.h.

Referenced by hermon_cmd_map_icm_aux().

#define HERMON_HCR_SET_ICM_SIZE   0x0ffd

Definition at line 77 of file hermon.h.

Referenced by hermon_cmd_set_icm_size().

#define HERMON_HCR_UNMAP_FA   0x0ffe

Definition at line 78 of file hermon.h.

Referenced by hermon_cmd_unmap_fa().

#define HERMON_HCR_MAP_FA   0x0fff

Definition at line 79 of file hermon.h.

Referenced by hermon_cmd_map_fa().

#define HERMON_ST_RC   0x00

Definition at line 82 of file hermon.h.

#define HERMON_ST_UD   0x03

Definition at line 83 of file hermon.h.

#define HERMON_ST_MLX   0x07

Definition at line 84 of file hermon.h.

#define HERMON_MTU_2048   0x04

Definition at line 87 of file hermon.h.

Referenced by hermon_modify_qp(), and hermon_open().

#define HERMON_INVALID_LKEY   0x00000100UL

Definition at line 89 of file hermon.h.

#define HERMON_PAGE_SIZE   4096

#define HERMON_DB_POST_SND_OFFSET   0x14

Definition at line 93 of file hermon.h.

Referenced by hermon_create_qp().

#define HERMON_DB_EQ_OFFSET ( _eqn   )     ( 0x800 + HERMON_PAGE_SIZE * ( (_eqn) / 4 ) + 0x08 * ( (_eqn) % 4 ) )

Definition at line 94 of file hermon.h.

Referenced by hermon_create_eq().

#define HERMON_QP_OPT_PARAM_PM_STATE   0x00000400UL

Definition at line 97 of file hermon.h.

#define HERMON_QP_OPT_PARAM_QKEY   0x00000020UL

Definition at line 98 of file hermon.h.

Referenced by hermon_modify_qp().

#define HERMON_QP_OPT_PARAM_ALT_PATH   0x00000001UL

Definition at line 99 of file hermon.h.

#define HERMON_MAP_EQ   ( 0UL << 31 )

Definition at line 101 of file hermon.h.

Referenced by hermon_create_eq().

#define HERMON_UNMAP_EQ   ( 1UL << 31 )

Definition at line 102 of file hermon.h.

Referenced by hermon_destroy_eq().

#define HERMON_EV_PORT_STATE_CHANGE   0x09

Definition at line 104 of file hermon.h.

Referenced by hermon_poll_eq().

#define HERMON_SCHED_QP0   0x3f

Definition at line 106 of file hermon.h.

Referenced by hermon_sched_queue().

#define HERMON_SCHED_DEFAULT   0x83

Definition at line 107 of file hermon.h.

Referenced by hermon_sched_queue().

#define HERMON_PM_STATE_ARMED   0x00

Definition at line 109 of file hermon.h.

#define HERMON_PM_STATE_REARM   0x01

Definition at line 110 of file hermon.h.

#define HERMON_PM_STATE_MIGRATED   0x03

Definition at line 111 of file hermon.h.

Referenced by hermon_create_qp().

#define HERMON_RETRY_MAX   0x07

Definition at line 113 of file hermon.h.

Referenced by hermon_modify_qp().

#define HERMON_PORT_TYPE_IB   1

Definition at line 179 of file hermon.h.

Referenced by hermon_open(), and hermon_sense_port_type().

#define HERMON_MAX_GATHER   2

Definition at line 229 of file hermon.h.

#define HERMON_MAX_SCATTER   1

Definition at line 248 of file hermon.h.

#define HERMON_CMPT_MAX_ENTRIES   ( 1 << 24 )

Number of cMPT entries of each type.

Definition at line 321 of file hermon.h.

Referenced by hermon_alloc_icm().

#define HERMON_UAR_NON_EQ_PAGE   128

UAR page for doorbell accesses.

Pages 0-127 are reserved for event queue doorbells only, so we use page 128.

Definition at line 346 of file hermon.h.

Referenced by hermon_create_cq(), hermon_create_qp(), and hermon_probe().

#define HERMON_MAX_MTTS   64

Maximum number of allocatable MTT entries.

This is a policy decision, not a device limit.

Definition at line 352 of file hermon.h.

Referenced by hermon_alloc_icm(), and hermon_alloc_mtt().

#define HERMON_SEND_WQE_ALIGN   128

Alignment of Hermon send work queue entries.

Definition at line 367 of file hermon.h.

#define HERMON_RECV_WQE_ALIGN   16

Alignment of Hermon receive work queue entries.

Definition at line 396 of file hermon.h.

#define HERMON_NUM_SPECIAL_QPS   8

Number of special queue pairs.

Definition at line 415 of file hermon.h.

Referenced by hermon_configure_special_qps().

#define HERMON_RSVD_SPECIAL_QPS   ( ( HERMON_NUM_SPECIAL_QPS << 1 ) - 1 )

Number of queue pairs reserved for the "special QP" block.

The special QPs must be within a contiguous block aligned on its own size.

Definition at line 422 of file hermon.h.

Referenced by hermon_alloc_icm().

#define HERMON_MAX_QPS   8

Maximum number of allocatable queue pairs.

This is a policy decision, not a device limit.

Definition at line 428 of file hermon.h.

Referenced by hermon_alloc_icm(), and hermon_alloc_qpn().

#define HERMON_QPN_RANDOM_MASK   0xfff000

Queue pair number randomisation mask.

Definition at line 431 of file hermon.h.

Referenced by hermon_alloc_qpn(), and hermon_free_qpn().

#define HERMON_MAX_CQS   8

Maximum number of allocatable completion queues.

This is a policy decision, not a device limit.

Definition at line 461 of file hermon.h.

Referenced by hermon_alloc_icm(), and hermon_create_cq().

#define HERMON_MAX_EQS   8

Maximum number of allocatable event queues.

This is a policy decision, not a device limit.

Definition at line 479 of file hermon.h.

Referenced by hermon_alloc_icm().

#define HERMON_NUM_EQES   4

Number of event queue entries.

This is a policy decision.

Definition at line 501 of file hermon.h.

Referenced by hermon_create_eq(), and hermon_poll_eq().

#define HERMON_BITMASK_SIZE ( max_entries   ) 

Value:

( ( (max_entries) + ( 8 * sizeof ( hermon_bitmask_t ) ) - 1 ) /      \
          ( 8 * sizeof ( hermon_bitmask_t ) ) )
Size of a hermon resource bitmask.

Definition at line 507 of file hermon.h.

#define HERMON_GLOBAL_PD   0x123456

Global protection domain.

Definition at line 559 of file hermon.h.

Referenced by hermon_create_qp(), hermon_fill_ud_send_wqe(), and hermon_setup_mpt().

#define HERMON_MKEY_PREFIX   0x77000000UL

Memory key prefix.

Definition at line 562 of file hermon.h.

Referenced by hermon_setup_mpt().

#define HERMON_HCR_BASE   0x80680

Definition at line 569 of file hermon.h.

Referenced by hermon_cmd().

#define HERMON_HCR_REG (  )     ( HERMON_HCR_BASE + 4 * (x) )

Definition at line 570 of file hermon.h.

Referenced by hermon_cmd(), and hermon_cmd_wait().

#define HERMON_HCR_MAX_WAIT_MS   2000

Definition at line 571 of file hermon.h.

Referenced by hermon_cmd_wait().

#define HERMON_MBOX_ALIGN   4096

Definition at line 572 of file hermon.h.

Referenced by hermon_probe().

#define HERMON_MBOX_SIZE   512

Definition at line 573 of file hermon.h.

Referenced by hermon_cmd(), hermon_probe(), and hermon_remove().

#define HERMON_HCR_IN_MBOX   0x00001000UL

Definition at line 586 of file hermon.h.

Referenced by hermon_cmd().

#define HERMON_HCR_OUT_MBOX   0x00002000UL

Definition at line 587 of file hermon.h.

Referenced by hermon_cmd().

#define HERMON_HCR_OPCODE ( _command   )     ( (_command) & 0xfff )

Definition at line 588 of file hermon.h.

Referenced by hermon_cmd().

#define HERMON_HCR_IN_LEN ( _command   )     ( ( (_command) >> 12 ) & 0x7fc )

Definition at line 589 of file hermon.h.

Referenced by hermon_cmd().

#define HERMON_HCR_OUT_LEN ( _command   )     ( ( (_command) >> 21 ) & 0x7fc )

Definition at line 590 of file hermon.h.

Referenced by hermon_cmd().

#define HERMON_HCR_INOUT_CMD ( _opcode,
_in_mbox,
_in_len,
_out_mbox,
_out_len   ) 

Value:

( (_opcode) |                                                        \
          ( (_in_mbox) ? HERMON_HCR_IN_MBOX : 0 ) |                          \
          ( ( (_in_len) / 4 ) << 14 ) |                                      \
          ( (_out_mbox) ? HERMON_HCR_OUT_MBOX : 0 ) |                        \
          ( ( (_out_len) / 4 ) << 23 ) )
Build HCR command from component parts.

Definition at line 594 of file hermon.h.

Referenced by hermon_cmd_mad_ifc(), hermon_cmd_mgid_hash(), and hermon_cmd_set_icm_size().

#define HERMON_HCR_IN_CMD ( _opcode,
_in_mbox,
_in_len   )     HERMON_HCR_INOUT_CMD ( _opcode, _in_mbox, _in_len, 0, 0 )

#define HERMON_HCR_OUT_CMD ( _opcode,
_out_mbox,
_out_len   )     HERMON_HCR_INOUT_CMD ( _opcode, 0, 0, _out_mbox, _out_len )

#define HERMON_HCR_VOID_CMD ( _opcode   )     HERMON_HCR_INOUT_CMD ( _opcode, 0, 0, 0, 0 )


Typedef Documentation

A Hermon resource bitmask.

Definition at line 504 of file hermon.h.


Enumeration Type Documentation

Discontiguous regions within Hermon ICM.

Enumerator:
HERMON_ICM_QP_CMPT 
HERMON_ICM_SRQ_CMPT 
HERMON_ICM_CQ_CMPT 
HERMON_ICM_EQ_CMPT 
HERMON_ICM_OTHER 
HERMON_ICM_NUM_REGIONS 

Definition at line 332 of file hermon.h.

Hermon queue pair state.

Enumerator:
HERMON_QP_ST_RST 
HERMON_QP_ST_INIT 
HERMON_QP_ST_RTR 
HERMON_QP_ST_RTS 

Definition at line 434 of file hermon.h.

00434                              {
00435         HERMON_QP_ST_RST = 0,
00436         HERMON_QP_ST_INIT,
00437         HERMON_QP_ST_RTR,
00438         HERMON_QP_ST_RTS,
00439 };


Function Documentation

FILE_LICENCE ( GPL2_OR_LATER   ) 

struct MLX_DECLARE_STRUCT ( hermonprm_completion_queue_context   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_completion_queue_entry   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_completion_with_error   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_cq_db_record   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_eqc   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_event_db_register   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_event_mask   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_event_queue_entry   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_hca_command_register   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_init_hca   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_init_port   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_mad_ifc   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_mcg_entry   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_mgm_hash   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_mpt   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_mtt   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_port_state_change_event   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_qp_db_record   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_qp_ee_state_transitions   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_query_dev_cap   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_query_fw   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_queue_pair_ee_context_entry   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_scalar_parameter   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_sense_port   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_send_db_register   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_ud_address_vector   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_virtual_physical_mapping   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_wqe_segment_ctrl_mlx   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_wqe_segment_ctrl_send   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_wqe_segment_data_ptr   )  [read]

struct MLX_DECLARE_STRUCT ( hermonprm_wqe_segment_ud   )  [read]


Variable Documentation

A Hermon send work queue entry.

A Hermon receive work queue entry.


Generated on Tue Apr 6 20:01:17 2010 for gPXE by  doxygen 1.5.7.1