]>
git.proxmox.com Git - grub2.git/blob - debian/grub-extras/disabled/gpxe/src/include/gpxe/ib_cm.h
6 * Infiniband communication management
10 FILE_LICENCE ( GPL2_OR_LATER
);
12 #include <gpxe/infiniband.h>
13 #include <gpxe/retry.h>
15 struct ib_mad_transaction
;
18 /** Infiniband connection operations */
19 struct ib_connection_operations
{
20 /** Handle change of connection status
22 * @v ibdev Infiniband device
25 * @v rc Connection status code
26 * @v private_data Private data, if available
27 * @v private_data_len Length of private data
29 void ( * changed
) ( struct ib_device
*ibdev
, struct ib_queue_pair
*qp
,
30 struct ib_connection
*conn
, int rc
,
31 void *private_data
, size_t private_data_len
);
34 /** An Infiniband connection */
35 struct ib_connection
{
36 /** Infiniband device */
37 struct ib_device
*ibdev
;
39 struct ib_queue_pair
*qp
;
40 /** Local communication ID */
42 /** Remote communication ID */
44 /** Target service ID */
45 struct ib_gid_half service_id
;
46 /** Connection operations */
47 struct ib_connection_operations
*op
;
49 /** List of connections */
50 struct list_head list
;
54 /** Connection request management transaction */
55 struct ib_mad_transaction
*madx
;
57 /** Length of connection request private data */
58 size_t private_data_len
;
59 /** Connection request private data */
60 uint8_t private_data
[0];
63 extern struct ib_connection
*
64 ib_create_conn ( struct ib_device
*ibdev
, struct ib_queue_pair
*qp
,
65 struct ib_gid
*dgid
, struct ib_gid_half
*service_id
,
66 void *req_private_data
, size_t req_private_data_len
,
67 struct ib_connection_operations
*op
);
68 extern void ib_destroy_conn ( struct ib_device
*ibdev
,
69 struct ib_queue_pair
*qp
,
70 struct ib_connection
*conn
);
72 #endif /* _GPXE_IB_CM_H */