diff --git a/src/drivers/block/srp.c b/src/drivers/block/srp.c index 4b592e95..007e62d1 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 011ff3e0..ed388b2f 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 */