iPXE
Data Structures | Defines | Enumerations | Functions
qib7322.h File Reference

QLogic QIB7322 Infiniband HCA. More...

#include <ipxe/pseudobit.h>
#include "qib_7322_regs.h"

Go to the source code of this file.

Data Structures

struct  QIB_7322_GPIO_pb
 A QIB7322 GPIO register. More...
struct  QIB_7322_GPIO
struct  QIB_7322_scalar_pb
 A QIB7322 general scalar register. More...
struct  QIB_7322_scalar
struct  QIB_7322_feature_mask_pb
 QIB7322 feature mask. More...
struct  QIB_7322_feature_mask
struct  QIB_7322_SendPbc_pb
 QIB7322 send per-buffer control word. More...
struct  QIB_7322_SendPbc
struct  QIB_7322_SendBufAvail_pb
 QIB7322 send buffer availability. More...
struct  QIB_7322_SendBufAvail
struct  QIB_7322_RcvCtrl_P_pb
 QIB7322 port-specific receive control. More...
struct  QIB_7322_RcvCtrl_P
struct  QIB_7322_RcvEgr_pb
 A QIB7322 eager receive descriptor. More...
struct  QIB_7322_RcvEgr
struct  QIB_7322_RcvHdrFlags_pb
 QIB7322 receive header flags. More...
struct  QIB_7322_RcvHdrFlags
struct  QIB_7322_IBSD_DDS_MAP_TABLE_pb
 QIB7322 DDS tuning parameters. More...
struct  QIB_7322_IBSD_DDS_MAP_TABLE

Defines

#define PSEUDOBIT_LITTLE_ENDIAN
#define QIB7322_SENDBUFAVAIL_ALIGN   64
 DMA alignment for send buffer availability.
#define QIB7322_BAR0_SIZE   0x400000
 QIB7322 memory BAR size.
#define QIB7322_PORT_BASE   1
 QIB7322 base port number.
#define QIB7322_MAX_PORTS   2
 QIB7322 maximum number of ports.
#define QIB7322_MAX_WIDTH   4
 QIB7322 maximum width.
#define QIB7322_GPIO_SCL   0
 QIB7322 I2C SCL line GPIO number.
#define QIB7322_GPIO_SDA   1
 QIB7322 I2C SDA line GPIO number.
#define QIB7322_EEPROM_GUID_OFFSET   3
 GUID offset within EEPROM.
#define QIB7322_EEPROM_GUID_SIZE   8
 GUID size within EEPROM.
#define QIB7322_EEPROM_SERIAL_OFFSET   12
 Board serial number offset within EEPROM.
#define QIB7322_EEPROM_SERIAL_SIZE   12
 Board serial number size within EEPROM.
#define QIB7322_SMALL_SEND_BUF_SIZE   4096
 QIB7322 small send buffer size.
#define QIB7322_SMALL_SEND_BUF_START   0
 QIB7322 small send buffer starting index.
#define QIB7322_SMALL_SEND_BUF_COUNT   128
 QIB7322 small send buffer count.
#define QIB7322_LARGE_SEND_BUF_SIZE   8192
 QIB7322 large send buffer size.
#define QIB7322_LARGE_SEND_BUF_START   128
 QIB7322 large send buffer starting index.
#define QIB7322_LARGE_SEND_BUF_COUNT   32
 QIB7322 large send buffer count.
#define QIB7322_VL15_PORT0_SEND_BUF_START   160
 QIB7322 VL15 port 0 send buffer starting index.
#define QIB7322_VL15_PORT0_SEND_BUF_COUNT   1
 QIB7322 VL15 port 0 send buffer count.
#define QIB7322_VL15_PORT0_SEND_BUF_SIZE   8192
 QIB7322 VL15 port 0 send buffer size.
#define QIB7322_VL15_PORT1_SEND_BUF_START   161
 QIB7322 VL15 port 0 send buffer starting index.
#define QIB7322_VL15_PORT1_SEND_BUF_COUNT   1
 QIB7322 VL15 port 0 send buffer count.
#define QIB7322_VL15_PORT1_SEND_BUF_SIZE   8192
 QIB7322 VL15 port 0 send buffer size.
#define QIB7322_SMALL_SEND_BUF_USED   32
 Number of small send buffers used.
#define QIB7322_NUM_CONTEXTS   6
 Number of contexts (including kernel context)
#define QIB7322_EAGER_ARRAY_SIZE_6CTX_KERNEL   1024
 ContextCfg values for different numbers of contexts.
#define QIB7322_EAGER_ARRAY_SIZE_6CTX_USER   4096
#define QIB7322_EAGER_ARRAY_SIZE_10CTX_KERNEL   1024
#define QIB7322_EAGER_ARRAY_SIZE_10CTX_USER   2048
#define QIB7322_EAGER_ARRAY_SIZE_18CTX_KERNEL   1024
#define QIB7322_EAGER_ARRAY_SIZE_18CTX_USER   1024
#define QIB7322_EAGER_BUFFER_ALIGN   2048
 Eager buffer required alignment.
#define QIB7322_RECV_HEADER_COUNT   8
 Number of RX headers per context.
#define QIB7322_RECV_HEADER_SIZE   96
 Maximum size of each RX header.
#define QIB7322_RECV_HEADERS_SIZE   ( QIB7322_RECV_HEADER_SIZE * QIB7322_RECV_HEADER_COUNT )
 Total size of an RX header ring.
#define QIB7322_RECV_HEADERS_ALIGN   64
 RX header alignment.
#define QIB7322_RECV_PAYLOAD_SIZE   2048
 RX payload size.
#define QIB7322_MAX_CREDITS   ( ( 65536 / 64 ) / QIB7322_MAX_PORTS )
 Maximum number of credits per port.
#define QIB7322_MAX_CREDITS_VL15   9
 Number of credits to advertise for VL15.
#define QIB7322_MAX_CREDITS_VL0   ( QIB7322_MAX_CREDITS - QIB7322_MAX_CREDITS_VL15 )
 Number of credits to advertise for VL0.
#define QIB7322_QP_IDETH   0xdead0
 QPN used for Infinipath Packets.
#define QIB7322_AHB_MAX_WAIT_US   500
 Maximum time for wait for AHB, in us.
#define QIB7322_AHB_LOC_ADDRESS(_location)   ( (_location) & 0xffff )
 QIB7322 AHB locations.
#define QIB7322_AHB_LOC_TARGET(_location)   ( (_location) >> 16 )
#define QIB7322_AHB_CHAN_0   0
#define QIB7322_AHB_CHAN_1   1
#define QIB7322_AHB_PLL   2
#define QIB7322_AHB_CHAN_2   3
#define QIB7322_AHB_CHAN_3   4
#define QIB7322_AHB_SUBSYS   5
#define QIB7322_AHB_CHAN(_channel)   ( (_channel) + ( (_channel) >> 1 ) )
#define QIB7322_AHB_TARGET_0   2
#define QIB7322_AHB_TARGET_1   3
#define QIB7322_AHB_TARGET(_port)   ( (_port) + 2 )
#define QIB7322_AHB_LOCATION(_port, _channel, _register)
#define QIB7322_LINK_STATE_MAX_WAIT_US   20
 Maximum time to wait for link state changes, in us.

Enumerations

enum  qib7322_board_id {
  QIB7322_BOARD_QLE7342_EMULATION = 0, QIB7322_BOARD_QLE7340 = 1, QIB7322_BOARD_QLE7342 = 2, QIB7322_BOARD_QMI7342 = 3,
  QIB7322_BOARD_QMH7342_UNSUPPORTED = 4, QIB7322_BOARD_QME7342 = 5, QIB7322_BOARD_QMH7342 = 6, QIB7322_BOARD_QLE7342_TEST = 15
}
 QIB7322 board identifiers. More...
enum  qib7322_contextcfg { QIB7322_CONTEXTCFG_6CTX = 0, QIB7322_CONTEXTCFG_10CTX = 1, QIB7322_CONTEXTCFG_18CTX = 2 }
 ContextCfg values for different numbers of contexts. More...
enum  qib7322_eager_buffer_size {
  QIB7322_EAGER_BUFFER_NONE = 0, QIB7322_EAGER_BUFFER_2K = 1, QIB7322_EAGER_BUFFER_4K = 2, QIB7322_EAGER_BUFFER_8K = 3,
  QIB7322_EAGER_BUFFER_16K = 4, QIB7322_EAGER_BUFFER_32K = 5, QIB7322_EAGER_BUFFER_64K = 6
}
 Eager buffer size encodings. More...
enum  qib7322_link_state {
  QIB7322_LINK_STATE_DOWN = 0, QIB7322_LINK_STATE_INIT = 1, QIB7322_LINK_STATE_ARM = 2, QIB7322_LINK_STATE_ACTIVE = 3,
  QIB7322_LINK_STATE_ACT_DEFER = 4
}
 QIB7322 link states. More...

Functions

 FILE_LICENCE (GPL2_OR_LATER_OR_UBDL)

Detailed Description

QLogic QIB7322 Infiniband HCA.

Definition in file qib7322.h.


Define Documentation

Definition at line 36 of file qib7322.h.

#define QIB7322_SENDBUFAVAIL_ALIGN   64

DMA alignment for send buffer availability.

Definition at line 97 of file qib7322.h.

Referenced by qib7322_init_send().

#define QIB7322_BAR0_SIZE   0x400000

QIB7322 memory BAR size.

Definition at line 163 of file qib7322.h.

Referenced by qib7322_probe().

#define QIB7322_PORT_BASE   1
#define QIB7322_MAX_PORTS   2

QIB7322 maximum number of ports.

Definition at line 169 of file qib7322.h.

Referenced by qib7322_ahb_mod_reg_all(), qib7322_init_recv(), qib7322_probe(), and qib7322_remove().

#define QIB7322_MAX_WIDTH   4

QIB7322 maximum width.

Definition at line 172 of file qib7322.h.

Referenced by qib7322_ahb_mod_reg_all().

#define QIB7322_GPIO_SCL   0

QIB7322 I2C SCL line GPIO number.

Definition at line 187 of file qib7322.h.

#define QIB7322_GPIO_SDA   1

QIB7322 I2C SDA line GPIO number.

Definition at line 190 of file qib7322.h.

GUID offset within EEPROM.

Definition at line 193 of file qib7322.h.

Referenced by qib7322_read_eeprom().

#define QIB7322_EEPROM_GUID_SIZE   8

GUID size within EEPROM.

Definition at line 196 of file qib7322.h.

Board serial number offset within EEPROM.

Definition at line 199 of file qib7322.h.

Referenced by qib7322_read_eeprom().

#define QIB7322_EEPROM_SERIAL_SIZE   12

Board serial number size within EEPROM.

Definition at line 202 of file qib7322.h.

Referenced by qib7322_read_eeprom().

#define QIB7322_SMALL_SEND_BUF_SIZE   4096

QIB7322 small send buffer size.

Definition at line 205 of file qib7322.h.

Referenced by qib7322_init_send().

QIB7322 small send buffer starting index.

Definition at line 208 of file qib7322.h.

Referenced by qib7322_init_send().

#define QIB7322_SMALL_SEND_BUF_COUNT   128

QIB7322 small send buffer count.

Definition at line 211 of file qib7322.h.

#define QIB7322_LARGE_SEND_BUF_SIZE   8192

QIB7322 large send buffer size.

Definition at line 214 of file qib7322.h.

Referenced by qib7322_init_send().

#define QIB7322_LARGE_SEND_BUF_START   128

QIB7322 large send buffer starting index.

Definition at line 217 of file qib7322.h.

QIB7322 large send buffer count.

Definition at line 220 of file qib7322.h.

Referenced by qib7322_init_send().

QIB7322 VL15 port 0 send buffer starting index.

Definition at line 223 of file qib7322.h.

Referenced by qib7322_init_send().

QIB7322 VL15 port 0 send buffer count.

Definition at line 226 of file qib7322.h.

Referenced by qib7322_init_send().

QIB7322 VL15 port 0 send buffer size.

Definition at line 229 of file qib7322.h.

Referenced by qib7322_init_send().

QIB7322 VL15 port 0 send buffer starting index.

Definition at line 232 of file qib7322.h.

Referenced by qib7322_init_send().

QIB7322 VL15 port 0 send buffer count.

Definition at line 235 of file qib7322.h.

Referenced by qib7322_init_send().

QIB7322 VL15 port 0 send buffer size.

Definition at line 238 of file qib7322.h.

Referenced by qib7322_init_send().

#define QIB7322_SMALL_SEND_BUF_USED   32

Number of small send buffers used.

This is a policy decision. Must be less than or equal to the total number of small send buffers supported by the hardware (QIB7322_SMALL_SEND_BUF_COUNT).

Definition at line 246 of file qib7322.h.

Referenced by qib7322_init_send().

#define QIB7322_NUM_CONTEXTS   6

Number of contexts (including kernel context)

This is a policy decision. Must be 6, 10 or 18.

Definition at line 252 of file qib7322.h.

Referenced by qib7322_alloc_ctx(), and qib7322_init_recv().

ContextCfg values for different numbers of contexts.

Definition at line 262 of file qib7322.h.

Referenced by qib7322_init_recv().

Definition at line 263 of file qib7322.h.

Referenced by qib7322_init_recv().

Definition at line 264 of file qib7322.h.

Referenced by qib7322_init_recv().

Definition at line 265 of file qib7322.h.

Referenced by qib7322_init_recv().

Definition at line 266 of file qib7322.h.

Referenced by qib7322_init_recv().

Definition at line 267 of file qib7322.h.

Referenced by qib7322_init_recv().

#define QIB7322_EAGER_BUFFER_ALIGN   2048

Eager buffer required alignment.

Definition at line 270 of file qib7322.h.

Referenced by qib7322_post_recv().

#define QIB7322_RECV_HEADER_COUNT   8

Number of RX headers per context.

This is a policy decision.

Definition at line 287 of file qib7322.h.

Referenced by qib7322_init_recv().

#define QIB7322_RECV_HEADER_SIZE   96

Maximum size of each RX header.

This is a policy decision. Must be divisible by 4.

Definition at line 293 of file qib7322.h.

Referenced by qib7322_complete_recv(), qib7322_init_ib_serdes(), qib7322_init_recv(), and qib7322_poll_recv_wq().

Total size of an RX header ring.

Definition at line 296 of file qib7322.h.

Referenced by qib7322_create_recv_wq(), qib7322_destroy_recv_wq(), and qib7322_poll_recv_wq().

#define QIB7322_RECV_HEADERS_ALIGN   64

RX header alignment.

Definition at line 300 of file qib7322.h.

Referenced by qib7322_create_recv_wq().

#define QIB7322_RECV_PAYLOAD_SIZE   2048

RX payload size.

This is a policy decision. Must be a valid eager buffer size.

Definition at line 306 of file qib7322.h.

Referenced by qib7322_init_ib_serdes(), and qib7322_post_recv().

#define QIB7322_MAX_CREDITS   ( ( 65536 / 64 ) / QIB7322_MAX_PORTS )

Maximum number of credits per port.

64kB of internal RX buffer space, in units of 64 bytes, split between two ports.

Definition at line 313 of file qib7322.h.

#define QIB7322_MAX_CREDITS_VL15   9

Number of credits to advertise for VL15.

This is a policy decision. Using 9 credits allows for 9*64=576 bytes, which is enough for two MADs.

Definition at line 320 of file qib7322.h.

Referenced by qib7322_init_recv().

Number of credits to advertise for VL0.

This is a policy decision.

Definition at line 326 of file qib7322.h.

Referenced by qib7322_init_recv().

#define QIB7322_QP_IDETH   0xdead0

QPN used for Infinipath Packets.

This is a policy decision. Must have bit 0 clear. Must not be a QPN that we will use.

Definition at line 334 of file qib7322.h.

Referenced by qib7322_init_recv().

#define QIB7322_AHB_MAX_WAIT_US   500

Maximum time for wait for AHB, in us.

Definition at line 337 of file qib7322.h.

Referenced by qib7322_ahb_wait().

#define QIB7322_AHB_LOC_ADDRESS (   _location)    ( (_location) & 0xffff )

QIB7322 AHB locations.

Definition at line 340 of file qib7322.h.

Referenced by qib7322_ahb_read(), and qib7322_ahb_write().

#define QIB7322_AHB_LOC_TARGET (   _location)    ( (_location) >> 16 )

Definition at line 341 of file qib7322.h.

Referenced by qib7322_ahb_request().

#define QIB7322_AHB_CHAN_0   0

Definition at line 342 of file qib7322.h.

#define QIB7322_AHB_CHAN_1   1

Definition at line 343 of file qib7322.h.

#define QIB7322_AHB_PLL   2

Definition at line 344 of file qib7322.h.

#define QIB7322_AHB_CHAN_2   3

Definition at line 345 of file qib7322.h.

#define QIB7322_AHB_CHAN_3   4

Definition at line 346 of file qib7322.h.

#define QIB7322_AHB_SUBSYS   5

Definition at line 347 of file qib7322.h.

#define QIB7322_AHB_CHAN (   _channel)    ( (_channel) + ( (_channel) >> 1 ) )

Definition at line 348 of file qib7322.h.

#define QIB7322_AHB_TARGET_0   2

Definition at line 349 of file qib7322.h.

#define QIB7322_AHB_TARGET_1   3

Definition at line 350 of file qib7322.h.

#define QIB7322_AHB_TARGET (   _port)    ( (_port) + 2 )

Definition at line 351 of file qib7322.h.

#define QIB7322_AHB_LOCATION (   _port,
  _channel,
  _register 
)
Value:
( ( QIB7322_AHB_TARGET(_port) << 16 ) |                 \
          ( QIB7322_AHB_CHAN(_channel) << 7 ) |                 \
          ( (_register) << 1 ) )

Definition at line 352 of file qib7322.h.

Referenced by qib7322_ahb_mod_reg_all().

Maximum time to wait for link state changes, in us.

Definition at line 367 of file qib7322.h.

Referenced by qib7322_link_state_check().


Enumeration Type Documentation

QIB7322 board identifiers.

Enumerator:
QIB7322_BOARD_QLE7342_EMULATION 
QIB7322_BOARD_QLE7340 
QIB7322_BOARD_QLE7342 
QIB7322_BOARD_QMI7342 
QIB7322_BOARD_QMH7342_UNSUPPORTED 
QIB7322_BOARD_QME7342 
QIB7322_BOARD_QMH7342 
QIB7322_BOARD_QLE7342_TEST 

Definition at line 175 of file qib7322.h.

ContextCfg values for different numbers of contexts.

Enumerator:
QIB7322_CONTEXTCFG_6CTX 
QIB7322_CONTEXTCFG_10CTX 
QIB7322_CONTEXTCFG_18CTX 

Definition at line 255 of file qib7322.h.

Eager buffer size encodings.

Enumerator:
QIB7322_EAGER_BUFFER_NONE 
QIB7322_EAGER_BUFFER_2K 
QIB7322_EAGER_BUFFER_4K 
QIB7322_EAGER_BUFFER_8K 
QIB7322_EAGER_BUFFER_16K 
QIB7322_EAGER_BUFFER_32K 
QIB7322_EAGER_BUFFER_64K 

Definition at line 273 of file qib7322.h.

QIB7322 link states.

Enumerator:
QIB7322_LINK_STATE_DOWN 
QIB7322_LINK_STATE_INIT 
QIB7322_LINK_STATE_ARM 
QIB7322_LINK_STATE_ACTIVE 
QIB7322_LINK_STATE_ACT_DEFER 

Definition at line 358 of file qib7322.h.


Function Documentation

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )