iPXE
|
Infiniband protocol. More...
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <byteswap.h>
#include <errno.h>
#include <assert.h>
#include <ipxe/list.h>
#include <ipxe/errortab.h>
#include <ipxe/if_arp.h>
#include <ipxe/netdevice.h>
#include <ipxe/iobuf.h>
#include <ipxe/process.h>
#include <ipxe/profile.h>
#include <ipxe/infiniband.h>
#include <ipxe/ib_mi.h>
#include <ipxe/ib_sma.h>
Go to the source code of this file.
Macros | |
#define | EINPROGRESS_INIT __einfo_error ( EINFO_EINPROGRESS_INIT ) |
#define | EINFO_EINPROGRESS_INIT |
#define | EINPROGRESS_ARMED __einfo_error ( EINFO_EINPROGRESS_ARMED ) |
#define | EINFO_EINPROGRESS_ARMED |
Functions | |
FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
int | ib_create_cq (struct ib_device *ibdev, unsigned int num_cqes, struct ib_completion_queue_operations *op, struct ib_completion_queue **new_cq) |
Create completion queue. More... | |
void | ib_destroy_cq (struct ib_device *ibdev, struct ib_completion_queue *cq) |
Destroy completion queue. More... | |
void | ib_poll_cq (struct ib_device *ibdev, struct ib_completion_queue *cq) |
Poll completion queue. More... | |
int | ib_create_qp (struct ib_device *ibdev, enum ib_queue_pair_type type, unsigned int num_send_wqes, struct ib_completion_queue *send_cq, unsigned int num_recv_wqes, struct ib_completion_queue *recv_cq, struct ib_queue_pair_operations *op, const char *name, struct ib_queue_pair **new_qp) |
Create queue pair. More... | |
int | ib_modify_qp (struct ib_device *ibdev, struct ib_queue_pair *qp) |
Modify queue pair. More... | |
void | ib_destroy_qp (struct ib_device *ibdev, struct ib_queue_pair *qp) |
Destroy queue pair. More... | |
struct ib_queue_pair * | ib_find_qp_qpn (struct ib_device *ibdev, unsigned long qpn) |
Find queue pair by QPN. More... | |
struct ib_queue_pair * | ib_find_qp_mgid (struct ib_device *ibdev, union ib_gid *gid) |
Find queue pair by multicast GID. More... | |
struct ib_work_queue * | ib_find_wq (struct ib_completion_queue *cq, unsigned long qpn, int is_send) |
Find work queue belonging to completion queue. More... | |
int | ib_post_send (struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_address_vector *dest, struct io_buffer *iobuf) |
Post send work queue entry. More... | |
int | ib_post_recv (struct ib_device *ibdev, struct ib_queue_pair *qp, struct io_buffer *iobuf) |
Post receive work queue entry. More... | |
void | ib_complete_send (struct ib_device *ibdev, struct ib_queue_pair *qp, struct io_buffer *iobuf, int rc) |
Complete send work queue entry. More... | |
void | ib_complete_recv (struct ib_device *ibdev, struct ib_queue_pair *qp, struct ib_address_vector *dest, struct ib_address_vector *source, struct io_buffer *iobuf, int rc) |
Complete receive work queue entry. More... | |
void | ib_refill_recv (struct ib_device *ibdev, struct ib_queue_pair *qp) |
Refill receive work queue. More... | |
int | ib_link_rc (struct ib_device *ibdev) |
Get link state. More... | |
static const char * | ib_link_state_text (struct ib_device *ibdev) |
Textual representation of Infiniband link state. More... | |
static void | ib_notify (struct ib_device *ibdev) |
Notify drivers of Infiniband device or link state change. More... | |
void | ib_link_state_changed (struct ib_device *ibdev) |
Notify of Infiniband link state change. More... | |
int | ib_open (struct ib_device *ibdev) |
Open port. More... | |
void | ib_close (struct ib_device *ibdev) |
Close port. More... | |
int | ib_mcast_attach (struct ib_device *ibdev, struct ib_queue_pair *qp, union ib_gid *gid) |
Attach to multicast group. More... | |
void | ib_mcast_detach (struct ib_device *ibdev, struct ib_queue_pair *qp, union ib_gid *gid) |
Detach from multicast group. More... | |
int | ib_set_port_info (struct ib_device *ibdev, union ib_mad *mad) |
Set port information. More... | |
int | ib_set_pkey_table (struct ib_device *ibdev, union ib_mad *mad) |
Set partition key table. More... | |
void | ib_poll_eq (struct ib_device *ibdev) |
Poll event queue. More... | |
static void | ib_step (struct process *process __unused) |
Single-step the Infiniband event queue. More... | |
PERMANENT_PROCESS (ib_process, ib_step) | |
Infiniband event queue process. More... | |
struct ib_device * | alloc_ibdev (size_t priv_size) |
Allocate Infiniband device. More... | |
int | register_ibdev (struct ib_device *ibdev) |
Register Infiniband device. More... | |
void | unregister_ibdev (struct ib_device *ibdev) |
Unregister Infiniband device. More... | |
struct ib_device * | find_ibdev (union ib_gid *gid) |
Find Infiniband device by GID. More... | |
struct ib_device * | last_opened_ibdev (void) |
Get most recently opened Infiniband device. More... | |
REQUIRING_SYMBOL (register_ibdev) | |
REQUIRE_OBJECT (config_infiniband) | |
Variables | |
struct list_head | ib_devices = LIST_HEAD_INIT ( ib_devices ) |
List of Infiniband devices. More... | |
static struct list_head | open_ib_devices = LIST_HEAD_INIT ( open_ib_devices ) |
List of open Infiniband devices, in reverse order of opening. More... | |
static unsigned int | ibdev_index = 0 |
Infiniband device index. More... | |
static struct profiler ib_post_send_profiler | __profiler |
Post send work queue entry profiler. More... | |
struct errortab infiniband_errors [] | __errortab |
Human-readable message for the link statuses. More... | |
Infiniband protocol.
Definition in file infiniband.c.
#define EINPROGRESS_INIT __einfo_error ( EINFO_EINPROGRESS_INIT ) |
Definition at line 69 of file infiniband.c.
#define EINFO_EINPROGRESS_INIT |
Definition at line 70 of file infiniband.c.
#define EINPROGRESS_ARMED __einfo_error ( EINFO_EINPROGRESS_ARMED ) |
Definition at line 72 of file infiniband.c.
#define EINFO_EINPROGRESS_ARMED |
Definition at line 73 of file infiniband.c.
FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
int ib_create_cq | ( | struct ib_device * | ibdev, |
unsigned int | num_cqes, | ||
struct ib_completion_queue_operations * | op, | ||
struct ib_completion_queue ** | new_cq | ||
) |
Create completion queue.
ibdev | Infiniband device |
num_cqes | Number of completion queue entries |
op | Completion queue operations |
new_cq | New completion queue to fill in |
rc | Return status code |
Definition at line 98 of file infiniband.c.
References ib_completion_queue::cqn, ib_device::cqs, ib_device_operations::create_cq, DBGC, ib_device_operations::destroy_cq, ENOMEM, free, ib_cq_get_drvdata(), ib_completion_queue::ibdev, INIT_LIST_HEAD, ib_completion_queue::list, list_add_tail, list_del, ib_device::name, ib_completion_queue::num_cqes, ib_completion_queue::op, op, ib_device::op, rc, strerror(), ib_completion_queue::work_queues, and zalloc().
Referenced by eoib_open(), flexboot_nodnic_eth_open(), hermon_eth_open(), ib_cmrc_open(), ib_create_mi(), and ipoib_open().
void ib_destroy_cq | ( | struct ib_device * | ibdev, |
struct ib_completion_queue * | cq | ||
) |
Destroy completion queue.
ibdev | Infiniband device |
cq | Completion queue |
Definition at line 145 of file infiniband.c.
References assert(), ib_completion_queue::cqn, DBGC, ib_device_operations::destroy_cq, free, ib_completion_queue::ibdev, ib_completion_queue::list, list_del, list_empty, ib_device::name, ib_device::op, and ib_completion_queue::work_queues.
Referenced by eoib_close(), eoib_open(), flexboot_nodnic_eth_close(), hermon_eth_close(), hermon_eth_open(), ib_cmrc_open(), ib_cmrc_shutdown(), ib_create_mi(), ib_destroy_mi(), ipoib_close(), and ipoib_open().
void ib_poll_cq | ( | struct ib_device * | ibdev, |
struct ib_completion_queue * | cq | ||
) |
Poll completion queue.
ibdev | Infiniband device |
cq | Completion queue |
Definition at line 161 of file infiniband.c.
References ib_work_queue::cq, ib_refill_recv(), ib_work_queue::is_send, ib_work_queue::list, list_for_each_entry, ib_device::op, ib_device_operations::poll_cq, ib_work_queue::qp, and ib_completion_queue::work_queues.
Referenced by flexboot_nodnic_complete_all_tx(), golan_cq_clean(), and ib_poll_eq().
int ib_create_qp | ( | struct ib_device * | ibdev, |
enum ib_queue_pair_type | type, | ||
unsigned int | num_send_wqes, | ||
struct ib_completion_queue * | send_cq, | ||
unsigned int | num_recv_wqes, | ||
struct ib_completion_queue * | recv_cq, | ||
struct ib_queue_pair_operations * | op, | ||
const char * | name, | ||
struct ib_queue_pair ** | new_qp | ||
) |
Create queue pair.
ibdev | Infiniband device |
type | Queue pair type |
num_send_wqes | Number of send work queue entries |
send_cq | Send completion queue |
num_recv_wqes | Number of receive work queue entries |
recv_cq | Receive completion queue |
op | Queue pair operations |
name | Queue pair name |
new_qp | New queue pair to fill in |
rc | Return status code |
The queue pair will be left in the INIT state; you must call ib_modify_qp() before it is ready to use for sending and receiving.
Definition at line 199 of file infiniband.c.
References ib_device_operations::create_qp, DBGC, ib_device_operations::destroy_qp, ENOMEM, free, ib_qp_get_drvdata(), IB_QPN_GSI, IB_QPN_SMI, IB_QPT_GSI, IB_QPT_SMI, ib_queue_pair::ibdev, INIT_LIST_HEAD, list_add_tail, list_del, ib_device::name, name, op, ib_device::op, qp, ib_device::qps, random(), rc, strerror(), type, ib_completion_queue::work_queues, and zalloc().
Referenced by eoib_open(), flexboot_nodnic_eth_open(), hermon_eth_open(), ib_cmrc_open(), ib_create_mi(), and ipoib_open().
int ib_modify_qp | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp | ||
) |
Modify queue pair.
ibdev | Infiniband device |
qp | Queue pair |
rc | Return status code |
Definition at line 294 of file infiniband.c.
References DBGC, ib_queue_pair::ibdev, ib_device_operations::modify_qp, ib_device::name, ib_device::op, qp, rc, and strerror().
Referenced by hermon_eth_open(), ib_cm_req_complete(), ib_create_mi(), and ib_mcast_complete().
void ib_destroy_qp | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp | ||
) |
Destroy queue pair.
ibdev | Infiniband device |
qp | Queue pair |
Definition at line 314 of file infiniband.c.
References assert(), DBGC, ib_device_operations::destroy_qp, ECANCELED, free, ib_complete_recv(), ib_complete_send(), list_del, list_empty, ib_device::name, NULL, ib_device::op, and qp.
Referenced by eoib_close(), eoib_open(), flexboot_nodnic_eth_close(), flexboot_nodnic_eth_open(), hermon_eth_close(), hermon_eth_open(), ib_cmrc_open(), ib_cmrc_shutdown(), ib_create_mi(), ib_destroy_mi(), ipoib_close(), and ipoib_open().
struct ib_queue_pair* ib_find_qp_qpn | ( | struct ib_device * | ibdev, |
unsigned long | qpn | ||
) |
Find queue pair by QPN.
ibdev | Infiniband device |
qpn | Queue pair number |
qp | Queue pair, or NULL |
Definition at line 354 of file infiniband.c.
References ib_queue_pair::ibdev, ib_queue_pair::list, list_for_each_entry, NULL, qp, qpn, and ib_device::qps.
Referenced by ib_pull().
struct ib_queue_pair* ib_find_qp_mgid | ( | struct ib_device * | ibdev, |
union ib_gid * | gid | ||
) |
Find queue pair by multicast GID.
ibdev | Infiniband device |
gid | Multicast GID |
qp | Queue pair, or NULL |
Definition at line 372 of file infiniband.c.
References gid, ib_multicast_gid::list, list_for_each_entry, memcmp(), mgid, NULL, qp, and ib_device::qps.
Referenced by ib_pull().
struct ib_work_queue* ib_find_wq | ( | struct ib_completion_queue * | cq, |
unsigned long | qpn, | ||
int | is_send | ||
) |
Find work queue belonging to completion queue.
cq | Completion queue |
qpn | Queue pair number |
is_send | Find send work queue (rather than receive) |
wq | Work queue, or NULL if not found |
Definition at line 396 of file infiniband.c.
References ib_work_queue::cq, ib_work_queue::is_send, ib_work_queue::list, list_for_each_entry, NULL, ib_work_queue::qp, qpn, ib_queue_pair::qpn, and ib_completion_queue::work_queues.
Referenced by arbel_complete(), golan_complete(), and hermon_complete().
int ib_post_send | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp, | ||
struct ib_address_vector * | dest, | ||
struct io_buffer * | iobuf | ||
) |
Post send work queue entry.
ibdev | Infiniband device |
qp | Queue pair |
dest | Destination address vector |
iobuf | I/O buffer |
rc | Return status code |
Definition at line 416 of file infiniband.c.
References DBGC, dest, ENOBUFS, IB_RATE_2_5, memcpy(), ib_device::name, ib_device::op, ib_device_operations::post_send, profile_start(), profile_stop(), qp, rc, and strerror().
Referenced by eoib_duplicate(), eoib_transmit(), flexboot_nodnic_eth_transmit(), hermon_eth_transmit(), ib_cmrc_xfer_deliver(), ib_mi_send(), and ipoib_transmit().
int ib_post_recv | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp, | ||
struct io_buffer * | iobuf | ||
) |
Post receive work queue entry.
ibdev | Infiniband device |
qp | Queue pair |
iobuf | I/O buffer |
rc | Return status code |
Definition at line 470 of file infiniband.c.
References DBGC, EINVAL, ENOBUFS, IB_MAX_PAYLOAD_SIZE, iob_tailroom(), ib_device::name, ib_device::op, ib_device_operations::post_recv, profile_start(), profile_stop(), qp, rc, and strerror().
Referenced by ib_refill_recv().
void ib_complete_send | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp, | ||
struct io_buffer * | iobuf, | ||
int | rc | ||
) |
Complete send work queue entry.
ibdev | Infiniband device |
qp | Queue pair |
iobuf | I/O buffer |
rc | Completion status code |
Definition at line 515 of file infiniband.c.
References free_iob(), qp, and rc.
Referenced by arbel_complete(), flexboot_nodnic_complete(), golan_complete(), hermon_complete(), ib_destroy_qp(), linda_complete_send(), and qib7322_complete_send().
void ib_complete_recv | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp, | ||
struct ib_address_vector * | dest, | ||
struct ib_address_vector * | source, | ||
struct io_buffer * | iobuf, | ||
int | rc | ||
) |
Complete receive work queue entry.
ibdev | Infiniband device |
qp | Queue pair |
dest | Destination address vector, or NULL |
source | Source address vector, or NULL |
iobuf | I/O buffer |
rc | Completion status code |
Definition at line 536 of file infiniband.c.
References dest, free_iob(), qp, and rc.
Referenced by arbel_complete(), flexboot_nodnic_complete(), golan_complete(), hermon_complete(), ib_destroy_qp(), linda_complete_recv(), and qib7322_complete_recv().
void ib_refill_recv | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp | ||
) |
Refill receive work queue.
ibdev | Infiniband device |
qp | Queue pair |
Definition at line 556 of file infiniband.c.
References DBGC, free_iob(), IB_MAX_PAYLOAD_SIZE, ib_post_recv(), ib_device::name, qp, rc, and strerror().
Referenced by eoib_open(), flexboot_nodnic_eth_open(), hermon_eth_open(), ib_create_mi(), ib_poll_cq(), and ipoib_open().
int ib_link_rc | ( | struct ib_device * | ibdev | ) |
Get link state.
ibdev | Infiniband device |
rc | Link status code |
Definition at line 594 of file infiniband.c.
References EINPROGRESS_ARMED, EINPROGRESS_INIT, EINVAL, ENOTCONN, IB_PORT_STATE_ACTIVE, IB_PORT_STATE_ARMED, IB_PORT_STATE_DOWN, IB_PORT_STATE_INIT, and ib_device::port_state.
Referenced by eoib_link_state_changed(), and ipoib_link_state_changed().
|
static |
Textual representation of Infiniband link state.
ibdev | Infiniband device |
link_text | Link state text |
Definition at line 610 of file infiniband.c.
References IB_PORT_STATE_ACTIVE, IB_PORT_STATE_ARMED, IB_PORT_STATE_DOWN, IB_PORT_STATE_INIT, and ib_device::port_state.
Referenced by ib_link_state_changed().
|
static |
Notify drivers of Infiniband device or link state change.
ibdev | Infiniband device |
Definition at line 625 of file infiniband.c.
References for_each_table_entry, IB_DRIVERS, and ib_driver::notify.
Referenced by ib_close(), ib_link_state_changed(), and ib_open().
void ib_link_state_changed | ( | struct ib_device * | ibdev | ) |
Notify of Infiniband link state change.
ibdev | Infiniband device |
Definition at line 637 of file infiniband.c.
References DBGC, ib_link_state_text(), ib_notify(), and ib_device::name.
Referenced by golan_ib_update(), ib_smc_update(), linda_link_state_changed(), and qib7322_link_state_changed().
int ib_open | ( | struct ib_device * | ibdev | ) |
Open port.
ibdev | Infiniband device |
rc | Return status code |
Definition at line 652 of file infiniband.c.
References assert(), ib_device_operations::close, DBGC, ib_device::gsi, ib_create_mi(), ib_create_sma(), ib_destroy_mi(), ib_destroy_sma(), ib_notify(), IB_QPT_GSI, IB_QPT_SMI, list_add, ib_device::name, ib_device::op, ib_device_operations::open, ib_device::open_count, open_ib_devices, ib_device::open_list, rc, ib_device::smi, and strerror().
Referenced by eoib_open(), ib_cmrc_open(), ipoib_open(), and xsigo_ib_open().
void ib_close | ( | struct ib_device * | ibdev | ) |
Close port.
ibdev | Infiniband device |
Definition at line 716 of file infiniband.c.
References ib_device_operations::close, ib_device::gsi, ib_destroy_mi(), ib_destroy_sma(), ib_notify(), IB_PORT_STATE_DOWN, list_del, ib_device::op, ib_device::open_count, ib_device::open_list, ib_device::port_state, and ib_device::smi.
Referenced by eoib_close(), eoib_open(), ib_cmrc_open(), ib_cmrc_shutdown(), ipoib_close(), ipoib_open(), and xsigo_ib_remove().
int ib_mcast_attach | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp, | ||
union ib_gid * | gid | ||
) |
Attach to multicast group.
ibdev | Infiniband device |
qp | Queue pair |
gid | Multicast GID |
rc | Return status code |
Note that this function handles only the local device's attachment to the multicast GID; it does not issue the relevant MADs to join the multicast group on the subnet.
Definition at line 752 of file infiniband.c.
References assert(), ENOMEM, free, gid, list_add_tail, list_del, ib_device_operations::mcast_attach, memcpy(), mgid, NULL, ib_device::op, qp, rc, and zalloc().
Referenced by ib_mcast_join().
void ib_mcast_detach | ( | struct ib_device * | ibdev, |
struct ib_queue_pair * | qp, | ||
union ib_gid * | gid | ||
) |
Detach from multicast group.
ibdev | Infiniband device |
qp | Queue pair |
gid | Multicast GID |
Definition at line 789 of file infiniband.c.
References assert(), free, gid, ib_multicast_gid::list, list_del, list_for_each_entry, ib_device_operations::mcast_detach, memcmp(), mgid, NULL, ib_device::op, and qp.
Referenced by ib_mcast_join(), and ib_mcast_leave().
Set port information.
ibdev | Infiniband device |
mad | Set port information MAD |
Definition at line 822 of file infiniband.c.
References DBGC, ENOTSUP, mad, ib_device::name, ib_device::op, rc, ib_device_operations::set_port_info, and strerror().
Referenced by ib_sma_set_port_info().
Set partition key table.
ibdev | Infiniband device |
mad | Set partition key table MAD |
Definition at line 847 of file infiniband.c.
References DBGC, ENOTSUP, mad, ib_device::name, ib_device::op, rc, ib_device_operations::set_pkey_table, and strerror().
Referenced by ib_sma_set_pkey_table().
void ib_poll_eq | ( | struct ib_device * | ibdev | ) |
Poll event queue.
ibdev | Infiniband device |
Definition at line 878 of file infiniband.c.
References ib_device::cqs, ib_poll_cq(), ib_completion_queue::ibdev, ib_completion_queue::list, list_for_each_entry, ib_device::op, and ib_device_operations::poll_eq.
Referenced by eoib_poll(), flexboot_nodnic_eth_poll(), hermon_eth_poll(), ib_step(), and ipoib_poll().
Single-step the Infiniband event queue.
process | Infiniband event queue process |
Definition at line 894 of file infiniband.c.
References ib_poll_eq(), list_for_each_entry, open_ib_devices, and ib_device::open_list.
PERMANENT_PROCESS | ( | ib_process | , |
ib_step | |||
) |
Infiniband event queue process.
Allocate Infiniband device.
priv_size | Size of driver private data area |
ibdev | Infiniband device, or NULL |
Definition at line 917 of file infiniband.c.
References ib_device::cqs, ib_device::drv_priv, IB_LID_NONE, IB_PKEY_DEFAULT, IB_PORT_STATE_DOWN, ib_set_drvdata(), INIT_LIST_HEAD, ib_device::lid, ib_device::list, ib_device::open_list, ib_device::pkey, ib_device::port_state, ib_device::qps, and zalloc().
Referenced by arbel_probe(), flexboot_nodnic_allocate_infiniband_devices(), golan_probe_normal(), hermon_probe(), linda_probe(), and qib7322_probe().
int register_ibdev | ( | struct ib_device * | ibdev | ) |
Register Infiniband device.
ibdev | Infiniband device |
rc | Return status code |
Definition at line 944 of file infiniband.c.
References DBGC, ib_device::dev, for_each_table_entry, for_each_table_entry_continue_reverse, ib_devices, IB_DRIVERS, ibdev_get(), ibdev_index, ibdev_put(), ib_device::index, ib_device::list, list_add_tail, list_del, device::name, ib_device::name, ib_driver::name, ib_driver::probe, rc, ib_driver::remove, snprintf(), and strerror().
Referenced by arbel_probe(), golan_register_ibdev(), hermon_register_ibdev(), linda_probe(), and qib7322_probe().
void unregister_ibdev | ( | struct ib_device * | ibdev | ) |
Unregister Infiniband device.
ibdev | Infiniband device |
Definition at line 985 of file infiniband.c.
References DBGC, for_each_table_entry_reverse, ib_devices, IB_DRIVERS, ibdev_index, ibdev_put(), ib_device::list, list_del, list_empty, ib_device::name, and ib_driver::remove.
Referenced by arbel_probe(), arbel_remove(), golan_probe_normal(), golan_remove_normal(), hermon_unregister_ibdev(), linda_probe(), linda_remove(), qib7322_probe(), and qib7322_remove().
Find Infiniband device by GID.
gid | GID |
ibdev | Infiniband device, or NULL |
Definition at line 1008 of file infiniband.c.
References for_each_ibdev, gid, ib_device::gid, memcmp(), and NULL.
Referenced by ib_srp_open_uri().
struct ib_device* last_opened_ibdev | ( | void | ) |
Get most recently opened Infiniband device.
ibdev | Most recently opened Infiniband device, or NULL |
Definition at line 1023 of file infiniband.c.
References assert(), list_first_entry, NULL, ib_device::open_count, open_ib_devices, and ib_device::open_list.
Referenced by ib_srp_parse_sgid().
REQUIRING_SYMBOL | ( | register_ibdev | ) |
REQUIRE_OBJECT | ( | config_infiniband | ) |
struct list_head ib_devices = LIST_HEAD_INIT ( ib_devices ) |
List of Infiniband devices.
Definition at line 52 of file infiniband.c.
Referenced by register_ibdev(), and unregister_ibdev().
|
static |
List of open Infiniband devices, in reverse order of opening.
Definition at line 55 of file infiniband.c.
Referenced by ib_open(), ib_step(), and last_opened_ibdev().
|
static |
Infiniband device index.
Definition at line 58 of file infiniband.c.
Referenced by register_ibdev(), and unregister_ibdev().
|
static |
Post send work queue entry profiler.
Post receive work queue entry profiler.
Definition at line 61 of file infiniband.c.
struct errortab infiniband_errors [] __errortab |
Human-readable message for the link statuses.
Definition at line 77 of file infiniband.c.