iPXE
Data Structures | Macros | 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
 

Macros

#define PSEUDOBIT_LITTLE_ENDIAN
 
#define QIB7322_SENDBUFAVAIL_ALIGN   64
 DMA alignment for send buffer availability. More...
 
#define QIB7322_BAR0_SIZE   0x400000
 QIB7322 memory BAR size. More...
 
#define QIB7322_PORT_BASE   1
 QIB7322 base port number. More...
 
#define QIB7322_MAX_PORTS   2
 QIB7322 maximum number of ports. More...
 
#define QIB7322_MAX_WIDTH   4
 QIB7322 maximum width. More...
 
#define QIB7322_GPIO_SCL   0
 QIB7322 I2C SCL line GPIO number. More...
 
#define QIB7322_GPIO_SDA   1
 QIB7322 I2C SDA line GPIO number. More...
 
#define QIB7322_EEPROM_GUID_OFFSET   3
 GUID offset within EEPROM. More...
 
#define QIB7322_EEPROM_GUID_SIZE   8
 GUID size within EEPROM. More...
 
#define QIB7322_EEPROM_SERIAL_OFFSET   12
 Board serial number offset within EEPROM. More...
 
#define QIB7322_EEPROM_SERIAL_SIZE   12
 Board serial number size within EEPROM. More...
 
#define QIB7322_SMALL_SEND_BUF_SIZE   4096
 QIB7322 small send buffer size. More...
 
#define QIB7322_SMALL_SEND_BUF_START   0
 QIB7322 small send buffer starting index. More...
 
#define QIB7322_SMALL_SEND_BUF_COUNT   128
 QIB7322 small send buffer count. More...
 
#define QIB7322_LARGE_SEND_BUF_SIZE   8192
 QIB7322 large send buffer size. More...
 
#define QIB7322_LARGE_SEND_BUF_START   128
 QIB7322 large send buffer starting index. More...
 
#define QIB7322_LARGE_SEND_BUF_COUNT   32
 QIB7322 large send buffer count. More...
 
#define QIB7322_VL15_PORT0_SEND_BUF_START   160
 QIB7322 VL15 port 0 send buffer starting index. More...
 
#define QIB7322_VL15_PORT0_SEND_BUF_COUNT   1
 QIB7322 VL15 port 0 send buffer count. More...
 
#define QIB7322_VL15_PORT0_SEND_BUF_SIZE   8192
 QIB7322 VL15 port 0 send buffer size. More...
 
#define QIB7322_VL15_PORT1_SEND_BUF_START   161
 QIB7322 VL15 port 0 send buffer starting index. More...
 
#define QIB7322_VL15_PORT1_SEND_BUF_COUNT   1
 QIB7322 VL15 port 0 send buffer count. More...
 
#define QIB7322_VL15_PORT1_SEND_BUF_SIZE   8192
 QIB7322 VL15 port 0 send buffer size. More...
 
#define QIB7322_SMALL_SEND_BUF_USED   32
 Number of small send buffers used. More...
 
#define QIB7322_NUM_CONTEXTS   6
 Number of contexts (including kernel context) More...
 
#define QIB7322_EAGER_ARRAY_SIZE_6CTX_KERNEL   1024
 ContextCfg values for different numbers of contexts. More...
 
#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. More...
 
#define QIB7322_RECV_HEADER_COUNT   8
 Number of RX headers per context. More...
 
#define QIB7322_RECV_HEADER_SIZE   96
 Maximum size of each RX header. More...
 
#define QIB7322_RECV_HEADERS_SIZE   ( QIB7322_RECV_HEADER_SIZE * QIB7322_RECV_HEADER_COUNT )
 Total size of an RX header ring. More...
 
#define QIB7322_RECV_HEADERS_ALIGN   64
 RX header alignment. More...
 
#define QIB7322_RECV_PAYLOAD_SIZE   2048
 RX payload size. More...
 
#define QIB7322_MAX_CREDITS   ( ( 65536 / 64 ) / QIB7322_MAX_PORTS )
 Maximum number of credits per port. More...
 
#define QIB7322_MAX_CREDITS_VL15   9
 Number of credits to advertise for VL15. More...
 
#define QIB7322_MAX_CREDITS_VL0   ( QIB7322_MAX_CREDITS - QIB7322_MAX_CREDITS_VL15 )
 Number of credits to advertise for VL0. More...
 
#define QIB7322_QP_IDETH   0xdead0
 QPN used for Infinipath Packets. More...
 
#define QIB7322_AHB_MAX_WAIT_US   500
 Maximum time for wait for AHB, in us. More...
 
#define QIB7322_AHB_LOC_ADDRESS(_location)   ( (_location) & 0xffff )
 QIB7322 AHB locations. More...
 
#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. More...
 

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.

Macro Definition Documentation

◆ PSEUDOBIT_LITTLE_ENDIAN

#define PSEUDOBIT_LITTLE_ENDIAN

Definition at line 36 of file qib7322.h.

◆ QIB7322_SENDBUFAVAIL_ALIGN

#define QIB7322_SENDBUFAVAIL_ALIGN   64

DMA alignment for send buffer availability.

Definition at line 97 of file qib7322.h.

◆ QIB7322_BAR0_SIZE

#define QIB7322_BAR0_SIZE   0x400000

QIB7322 memory BAR size.

Definition at line 163 of file qib7322.h.

◆ QIB7322_PORT_BASE

#define QIB7322_PORT_BASE   1

QIB7322 base port number.

Definition at line 166 of file qib7322.h.

◆ QIB7322_MAX_PORTS

#define QIB7322_MAX_PORTS   2

QIB7322 maximum number of ports.

Definition at line 169 of file qib7322.h.

◆ QIB7322_MAX_WIDTH

#define QIB7322_MAX_WIDTH   4

QIB7322 maximum width.

Definition at line 172 of file qib7322.h.

◆ QIB7322_GPIO_SCL

#define QIB7322_GPIO_SCL   0

QIB7322 I2C SCL line GPIO number.

Definition at line 187 of file qib7322.h.

◆ QIB7322_GPIO_SDA

#define QIB7322_GPIO_SDA   1

QIB7322 I2C SDA line GPIO number.

Definition at line 190 of file qib7322.h.

◆ QIB7322_EEPROM_GUID_OFFSET

#define QIB7322_EEPROM_GUID_OFFSET   3

GUID offset within EEPROM.

Definition at line 193 of file qib7322.h.

◆ QIB7322_EEPROM_GUID_SIZE

#define QIB7322_EEPROM_GUID_SIZE   8

GUID size within EEPROM.

Definition at line 196 of file qib7322.h.

◆ QIB7322_EEPROM_SERIAL_OFFSET

#define QIB7322_EEPROM_SERIAL_OFFSET   12

Board serial number offset within EEPROM.

Definition at line 199 of file qib7322.h.

◆ QIB7322_EEPROM_SERIAL_SIZE

#define QIB7322_EEPROM_SERIAL_SIZE   12

Board serial number size within EEPROM.

Definition at line 202 of file qib7322.h.

◆ QIB7322_SMALL_SEND_BUF_SIZE

#define QIB7322_SMALL_SEND_BUF_SIZE   4096

QIB7322 small send buffer size.

Definition at line 205 of file qib7322.h.

◆ QIB7322_SMALL_SEND_BUF_START

#define QIB7322_SMALL_SEND_BUF_START   0

QIB7322 small send buffer starting index.

Definition at line 208 of file qib7322.h.

◆ QIB7322_SMALL_SEND_BUF_COUNT

#define QIB7322_SMALL_SEND_BUF_COUNT   128

QIB7322 small send buffer count.

Definition at line 211 of file qib7322.h.

◆ QIB7322_LARGE_SEND_BUF_SIZE

#define QIB7322_LARGE_SEND_BUF_SIZE   8192

QIB7322 large send buffer size.

Definition at line 214 of file qib7322.h.

◆ QIB7322_LARGE_SEND_BUF_START

#define QIB7322_LARGE_SEND_BUF_START   128

QIB7322 large send buffer starting index.

Definition at line 217 of file qib7322.h.

◆ QIB7322_LARGE_SEND_BUF_COUNT

#define QIB7322_LARGE_SEND_BUF_COUNT   32

QIB7322 large send buffer count.

Definition at line 220 of file qib7322.h.

◆ QIB7322_VL15_PORT0_SEND_BUF_START

#define QIB7322_VL15_PORT0_SEND_BUF_START   160

QIB7322 VL15 port 0 send buffer starting index.

Definition at line 223 of file qib7322.h.

◆ QIB7322_VL15_PORT0_SEND_BUF_COUNT

#define QIB7322_VL15_PORT0_SEND_BUF_COUNT   1

QIB7322 VL15 port 0 send buffer count.

Definition at line 226 of file qib7322.h.

◆ QIB7322_VL15_PORT0_SEND_BUF_SIZE

#define QIB7322_VL15_PORT0_SEND_BUF_SIZE   8192

QIB7322 VL15 port 0 send buffer size.

Definition at line 229 of file qib7322.h.

◆ QIB7322_VL15_PORT1_SEND_BUF_START

#define QIB7322_VL15_PORT1_SEND_BUF_START   161

QIB7322 VL15 port 0 send buffer starting index.

Definition at line 232 of file qib7322.h.

◆ QIB7322_VL15_PORT1_SEND_BUF_COUNT

#define QIB7322_VL15_PORT1_SEND_BUF_COUNT   1

QIB7322 VL15 port 0 send buffer count.

Definition at line 235 of file qib7322.h.

◆ QIB7322_VL15_PORT1_SEND_BUF_SIZE

#define QIB7322_VL15_PORT1_SEND_BUF_SIZE   8192

QIB7322 VL15 port 0 send buffer size.

Definition at line 238 of file qib7322.h.

◆ QIB7322_SMALL_SEND_BUF_USED

#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.

◆ QIB7322_NUM_CONTEXTS

#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.

◆ QIB7322_EAGER_ARRAY_SIZE_6CTX_KERNEL

#define QIB7322_EAGER_ARRAY_SIZE_6CTX_KERNEL   1024

ContextCfg values for different numbers of contexts.

Definition at line 262 of file qib7322.h.

◆ QIB7322_EAGER_ARRAY_SIZE_6CTX_USER

#define QIB7322_EAGER_ARRAY_SIZE_6CTX_USER   4096

Definition at line 263 of file qib7322.h.

◆ QIB7322_EAGER_ARRAY_SIZE_10CTX_KERNEL

#define QIB7322_EAGER_ARRAY_SIZE_10CTX_KERNEL   1024

Definition at line 264 of file qib7322.h.

◆ QIB7322_EAGER_ARRAY_SIZE_10CTX_USER

#define QIB7322_EAGER_ARRAY_SIZE_10CTX_USER   2048

Definition at line 265 of file qib7322.h.

◆ QIB7322_EAGER_ARRAY_SIZE_18CTX_KERNEL

#define QIB7322_EAGER_ARRAY_SIZE_18CTX_KERNEL   1024

Definition at line 266 of file qib7322.h.

◆ QIB7322_EAGER_ARRAY_SIZE_18CTX_USER

#define QIB7322_EAGER_ARRAY_SIZE_18CTX_USER   1024

Definition at line 267 of file qib7322.h.

◆ QIB7322_EAGER_BUFFER_ALIGN

#define QIB7322_EAGER_BUFFER_ALIGN   2048

Eager buffer required alignment.

Definition at line 270 of file qib7322.h.

◆ QIB7322_RECV_HEADER_COUNT

#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.

◆ QIB7322_RECV_HEADER_SIZE

#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.

◆ QIB7322_RECV_HEADERS_SIZE

#define QIB7322_RECV_HEADERS_SIZE   ( QIB7322_RECV_HEADER_SIZE * QIB7322_RECV_HEADER_COUNT )

Total size of an RX header ring.

Definition at line 296 of file qib7322.h.

◆ QIB7322_RECV_HEADERS_ALIGN

#define QIB7322_RECV_HEADERS_ALIGN   64

RX header alignment.

Definition at line 300 of file qib7322.h.

◆ QIB7322_RECV_PAYLOAD_SIZE

#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.

◆ QIB7322_MAX_CREDITS

#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.

◆ QIB7322_MAX_CREDITS_VL15

#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.

◆ QIB7322_MAX_CREDITS_VL0

#define QIB7322_MAX_CREDITS_VL0   ( QIB7322_MAX_CREDITS - QIB7322_MAX_CREDITS_VL15 )

Number of credits to advertise for VL0.

This is a policy decision.

Definition at line 326 of file qib7322.h.

◆ QIB7322_QP_IDETH

#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.

◆ QIB7322_AHB_MAX_WAIT_US

#define QIB7322_AHB_MAX_WAIT_US   500

Maximum time for wait for AHB, in us.

Definition at line 337 of file qib7322.h.

◆ QIB7322_AHB_LOC_ADDRESS

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

QIB7322 AHB locations.

Definition at line 340 of file qib7322.h.

◆ QIB7322_AHB_LOC_TARGET

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

Definition at line 341 of file qib7322.h.

◆ QIB7322_AHB_CHAN_0

#define QIB7322_AHB_CHAN_0   0

Definition at line 342 of file qib7322.h.

◆ QIB7322_AHB_CHAN_1

#define QIB7322_AHB_CHAN_1   1

Definition at line 343 of file qib7322.h.

◆ QIB7322_AHB_PLL

#define QIB7322_AHB_PLL   2

Definition at line 344 of file qib7322.h.

◆ QIB7322_AHB_CHAN_2

#define QIB7322_AHB_CHAN_2   3

Definition at line 345 of file qib7322.h.

◆ QIB7322_AHB_CHAN_3

#define QIB7322_AHB_CHAN_3   4

Definition at line 346 of file qib7322.h.

◆ QIB7322_AHB_SUBSYS

#define QIB7322_AHB_SUBSYS   5

Definition at line 347 of file qib7322.h.

◆ QIB7322_AHB_CHAN

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

Definition at line 348 of file qib7322.h.

◆ QIB7322_AHB_TARGET_0

#define QIB7322_AHB_TARGET_0   2

Definition at line 349 of file qib7322.h.

◆ QIB7322_AHB_TARGET_1

#define QIB7322_AHB_TARGET_1   3

Definition at line 350 of file qib7322.h.

◆ QIB7322_AHB_TARGET

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

Definition at line 351 of file qib7322.h.

◆ QIB7322_AHB_LOCATION

#define QIB7322_AHB_LOCATION (   _port,
  _channel,
  _register 
)
Value:
( ( QIB7322_AHB_TARGET(_port) << 16 ) | \
( QIB7322_AHB_CHAN(_channel) << 7 ) | \
( (_register) << 1 ) )
#define QIB7322_AHB_TARGET(_port)
Definition: qib7322.h:351
#define QIB7322_AHB_CHAN(_channel)
Definition: qib7322.h:348

Definition at line 352 of file qib7322.h.

◆ QIB7322_LINK_STATE_MAX_WAIT_US

#define QIB7322_LINK_STATE_MAX_WAIT_US   20

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

Definition at line 367 of file qib7322.h.

Enumeration Type Documentation

◆ qib7322_board_id

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.

◆ qib7322_contextcfg

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.

◆ qib7322_eager_buffer_size

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_state

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()

FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL  )