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