Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / ib_pathrec.h
diff --git a/qemu/roms/ipxe/src/include/ipxe/ib_pathrec.h b/qemu/roms/ipxe/src/include/ipxe/ib_pathrec.h
new file mode 100644 (file)
index 0000000..1fe67f8
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _IPXE_IB_PATHREC_H
+#define _IPXE_IB_PATHREC_H
+
+/** @file
+ *
+ * Infiniband path records
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <ipxe/infiniband.h>
+
+struct ib_mad_transaction;
+struct ib_path;
+
+/** Infiniband path operations */
+struct ib_path_operations {
+       /** Handle path transaction completion
+        *
+        * @v ibdev             Infiniband device
+        * @v path              Path
+        * @v rc                Status code
+        * @v av                Address vector, or NULL on error
+        */
+       void ( * complete ) ( struct ib_device *ibdev,
+                             struct ib_path *path, int rc,
+                             struct ib_address_vector *av );
+};
+
+/** An Infiniband path */
+struct ib_path {
+       /** Infiniband device */
+       struct ib_device *ibdev;
+       /** Address vector */
+       struct ib_address_vector av;
+       /** Management transaction */
+       struct ib_mad_transaction *madx;
+       /** Path operations */
+       struct ib_path_operations *op;
+       /** Owner private data */
+       void *owner_priv;
+};
+
+/**
+ * Set Infiniband path owner-private data
+ *
+ * @v path             Path
+ * @v priv             Private data
+ */
+static inline __always_inline void
+ib_path_set_ownerdata ( struct ib_path *path, void *priv ) {
+       path->owner_priv = priv;
+}
+
+/**
+ * Get Infiniband path owner-private data
+ *
+ * @v path             Path
+ * @ret priv           Private data
+ */
+static inline __always_inline void *
+ib_path_get_ownerdata ( struct ib_path *path ) {
+       return path->owner_priv;
+}
+
+extern struct ib_path *
+ib_create_path ( struct ib_device *ibdev, struct ib_address_vector *av,
+                struct ib_path_operations *op );
+extern void ib_destroy_path ( struct ib_device *ibdev,
+                             struct ib_path *path );
+
+extern int ib_resolve_path ( struct ib_device *ibdev,
+                            struct ib_address_vector *av );
+
+#endif /* _IPXE_IB_PATHREC_H */