]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[infiniband] Add support for identifying the underlying hardware device
authorMichael Brown <mcb30@ipxe.org>
Tue, 21 Sep 2010 23:28:36 +0000 (00:28 +0100)
committerMichael Brown <mcb30@ipxe.org>
Wed, 22 Sep 2010 16:11:29 +0000 (17:11 +0100)
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/drivers/block/srp.c
src/net/infiniband/ib_cmrc.c

index 4b592e95c7e4058bf57946a516a64b7a1bc7ee28..007e62d1f130a2b6ad790d2823491aec2f30bde2 100644 (file)
@@ -701,7 +701,8 @@ static struct interface_operation srpdev_socket_op[] = {
 
 /** SRP device socket interface descriptor */
 static struct interface_descriptor srpdev_socket_desc =
-       INTF_DESC ( struct srp_device, socket, srpdev_socket_op );
+       INTF_DESC_PASSTHRU ( struct srp_device, socket, srpdev_socket_op,
+                            scsi );
 
 /** SRP device SCSI interface operations */
 static struct interface_operation srpdev_scsi_op[] = {
@@ -713,7 +714,7 @@ static struct interface_operation srpdev_scsi_op[] = {
 
 /** SRP device SCSI interface descriptor */
 static struct interface_descriptor srpdev_scsi_desc =
-       INTF_DESC ( struct srp_device, scsi, srpdev_scsi_op );
+       INTF_DESC_PASSTHRU ( struct srp_device, scsi, srpdev_scsi_op, socket  );
 
 /**
  * Open SRP device
index 011ff3e0625e6cefb15e7ce9985053063598600b..ed388b2f1fa377fc9fe57018c460738dea79dfe9 100644 (file)
@@ -334,6 +334,17 @@ static size_t ib_cmrc_xfer_window ( struct ib_cmrc_connection *cmrc ) {
        return ( cmrc->connected ? IB_MAX_PAYLOAD_SIZE : 0 );
 }
 
+/**
+ * Identify device underlying CMRC connection
+ *
+ * @v cmrc             CMRC connection
+ * @ret device         Underlying device
+ */
+static struct device *
+ib_cmrc_identify_device ( struct ib_cmrc_connection *cmrc ) {
+       return cmrc->ibdev->dev;
+}
+
 /** CMRC data transfer interface operations */
 static struct interface_operation ib_cmrc_xfer_operations[] = {
        INTF_OP ( xfer_deliver, struct ib_cmrc_connection *,
@@ -341,6 +352,8 @@ static struct interface_operation ib_cmrc_xfer_operations[] = {
        INTF_OP ( xfer_window, struct ib_cmrc_connection *,
                  ib_cmrc_xfer_window ),
        INTF_OP ( intf_close, struct ib_cmrc_connection *, ib_cmrc_close ),
+       INTF_OP ( identify_device, struct ib_cmrc_connection *,
+                 ib_cmrc_identify_device ),
 };
 
 /** CMRC data transfer interface descriptor */