summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2010-09-22 01:28:36 +0200
committerMichael Brown2010-09-22 18:11:29 +0200
commit9e036d32ba1b111192503341995043293f3136c6 (patch)
tree6493006712d69187e380ddfeea7a7a727969d9f7 /src
parent[aoe] Add support for identifying the underlying hardware device (diff)
downloadipxe-9e036d32ba1b111192503341995043293f3136c6.tar.gz
ipxe-9e036d32ba1b111192503341995043293f3136c6.tar.xz
ipxe-9e036d32ba1b111192503341995043293f3136c6.zip
[infiniband] Add support for identifying the underlying hardware device
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/drivers/block/srp.c5
-rw-r--r--src/net/infiniband/ib_cmrc.c13
2 files changed, 16 insertions, 2 deletions
diff --git a/src/drivers/block/srp.c b/src/drivers/block/srp.c
index 4b592e95c..007e62d1f 100644
--- a/src/drivers/block/srp.c
+++ b/src/drivers/block/srp.c
@@ -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
diff --git a/src/net/infiniband/ib_cmrc.c b/src/net/infiniband/ib_cmrc.c
index 011ff3e06..ed388b2f1 100644
--- a/src/net/infiniband/ib_cmrc.c
+++ b/src/net/infiniband/ib_cmrc.c
@@ -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 */