image image image image image

On This Page

The following commands are used for general device operations, allowing the user to query information about devices that are on the system as well as opening and closing a specific device.

ibv_get_device_list

Template: struct ibv_device **{*}ibv_get_device_list{*}(int *num_devices)

Input Parameters: none

Output Parameters: num_devices(optional) If non-null, the number of devices returned in the array will be stored here

Return Value: NULL terminated array of VPI devices or NULL on failure.

Description: ibv_get_device_list returns a list of VPI devices available on the system. Each entry on the list is a pointer to a struct ibv_device.

struct ibv_device is defined as:

struct ibv_device 
{
	struct ibv_device_ops	ops;
	enum ibv_node_type	node_type;
	enum ibv_transport_type	transport_type;
	char	name[IBV_SYSFS_NAME_MAX];
	char	dev_name[IBV_SYSFS_NAME_MAX];
	char	dev_path[IBV_SYSFS_PATH_MAX];
	char	ibdev_path[IBV_SYSFS_PATH_MAX];
};

ops	pointers to alloc and free functions
node_type	IBV_NODE_UNKNOWN
	IBV_NODE_CA
	IBV_NODE_SWITCH
	IBV_NODE_ROUTER
	IBV_NODE_RNIC
transport_type	IBV_TRANSPORT_UNKNOWN
	IBV_TRANSPORT_IB
	IBV_TRANSPORT_IWARP
name	kernel device name eg “mthca0”
dev_name	uverbs device name eg “uverbs0”
dev_path	path to infiniband_verbs class device in sysfs
ibdev_path	path to infiniband class device in sysfs

The list of ibv_device structs shall remain valid until the list is freed. After calling ibv_get_device_list, the user should open any desired devices and promptly free the list via the ibv_free_device_list command.


ibv_free_device_list

Template: void ibv_free_device_list(struct ibv_device **list)

Input Parameters: list list of devices provided from ibv_get_device_list command

Output Parameters: none

Return Value: none

Description: ibv_free_device_list frees the list of ibv_device structs provided by ibv_get_device_list. Any desired devices should be opened prior to calling this command. Once the list is freed, all ibv_de- vice structs that were on the list are invalid and can no longer be used.

ibv_get_device_name

Template: const char {}ibv_get_device_name{*}(struct ibv_device *device)

Input Parameters: devicestruct ibv_device for desired device

Output Parameters: none

Return Value: Pointer to device name char string or NULL on failure.

Description: ibv_get_device_name returns a pointer to the device name contained within the ibv_device struct.

ibv_get_device_guid

Template: uint64_t ibv_get_device_guid(struct ibv_device *device)

Input Parameters: devicestruct ibv_device for desired device

Output Parameters: none 

Return Value: 64 bit GUID

Description: ibv_get_device_guid returns the devices 64 bit Global Unique Identifier (GUID) in network byte order.

ibv_open_device

Template: struct ibv_context {}ibv_open_device{*}(struct ibv_device *device)

Input Parameters: devicestruct ibv_device for desired device

Output Parameters: none

Return Value: A verbs context that can be used for future operations on the device or NULL on failure.

Description: ibv_open_device provides the user with a verbs context which is the object that will be used for all other verb operations.

ibv_close_device

Template: int ibv_close_device(struct ibv_context *context)

Input Parameters: context struct ibv_context from ibv_open_device

Output Parameters: none

Return Value: 0 on success, -1 on error. If the call fails, errno will be set to indicate the reason for the failure.

Description: ibv_close_device closes the verb context previously opened with ibv_open_device. This operation does not free any other objects associated with the context. To avoid memory leaks, all other objects must be independently freed prior to calling this command.

ibv_node_type_str

Template: const char {}ibv_node_type_str* (enum ibv_node_type node_type)

Input Parameters: node_typeibv_node_typeenumvaluewhich may be an HCA, Switch, Router, RNIC or Unknown

Output Parameters: none

Return Value: A constant string which describes the enum value node_type

Description: ibv_node_type_str returns a string describing the node type enum value, node_type. This value can be an InfiniBand HCA, Switch, Router, an RDMA enabled NIC or unknown

enum ibv_node_type {
IBV_NODE_UNKNOWN = -1,
IBV_NODE_CA = 1,
IBV_NODE_SWITCH, IBV_NODE_ROUTER, IBV_NODE_RNIC
}; 

ibv_port_state_str

Template: const char {}ibv_port_state_str* (enum ibv_port_state port_state)

Input Parameters: port_state The enumerated value of the port state

Output Parameters: None

Return Value: A constant string which describes the enum value port_state

Description: ibv_port_state_str returns a string describing the port state enum value, port_state. 

enum ibv_port_state {
IBV_PORT_NOP = 0,
IBV_PORT_DOWN = 1,
IBV_PORT_INIT = 2,
IBV_PORT_ARMED = 3,
IBV_PORT_ACTIVE = 4,
IBV_PORT_ACTIVE_DEFER = 5
};