/** 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[] = {
/** 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
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 *,
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 */