Loading drivers/ieee1394/sbp2.c +11 −15 Original line number Diff line number Diff line Loading @@ -462,23 +462,18 @@ static void sbp2util_notify_fetch_agent(struct scsi_id_instance_data *scsi_id, static void sbp2util_write_orb_pointer(struct work_struct *work) { struct scsi_id_instance_data *scsi_id = container_of(work, struct scsi_id_instance_data, protocol_work.work); quadlet_t data[2]; data[0] = ORB_SET_NODE_ID(scsi_id->hi->host->node_id); data[1] = scsi_id->last_orb_dma; data[0] = ORB_SET_NODE_ID( (container_of(work, struct scsi_id_instance_data, protocol_work))->hi->host->node_id); data[1] = (container_of(work, struct scsi_id_instance_data, protocol_work))->last_orb_dma; sbp2util_cpu_to_be32_buffer(data, 8); sbp2util_notify_fetch_agent(scsi_id, SBP2_ORB_POINTER_OFFSET, data, 8); sbp2util_notify_fetch_agent(container_of(work, struct scsi_id_instance_data, protocol_work), SBP2_ORB_POINTER_OFFSET, data, 8); } static void sbp2util_write_doorbell(struct work_struct *work) { struct scsi_id_instance_data *scsi_id = container_of(work, struct scsi_id_instance_data, protocol_work.work); sbp2util_notify_fetch_agent(scsi_id, SBP2_DOORBELL_OFFSET, NULL, 4); sbp2util_notify_fetch_agent(container_of(work, struct scsi_id_instance_data, protocol_work), SBP2_DOORBELL_OFFSET, NULL, 4); } /* Loading Loading @@ -795,7 +790,7 @@ static struct scsi_id_instance_data *sbp2_alloc_device(struct unit_directory *ud INIT_LIST_HEAD(&scsi_id->scsi_list); spin_lock_init(&scsi_id->sbp2_command_orb_lock); atomic_set(&scsi_id->state, SBP2LU_STATE_RUNNING); INIT_DELAYED_WORK(&scsi_id->protocol_work, NULL); INIT_WORK(&scsi_id->protocol_work, NULL); ud->device.driver_data = scsi_id; Loading Loading @@ -1578,7 +1573,7 @@ static int sbp2_agent_reset(struct scsi_id_instance_data *scsi_id, int wait) int retval; unsigned long flags; cancel_delayed_work(&scsi_id->protocol_work); /* cancel_delayed_work(&scsi_id->protocol_work); */ if (wait) flush_scheduled_work(); Loading Loading @@ -1889,10 +1884,11 @@ static void sbp2_link_orb_command(struct scsi_id_instance_data *scsi_id, * We do not accept new commands until the job is over. */ scsi_block_requests(scsi_id->scsi_host); PREPARE_DELAYED_WORK(&scsi_id->protocol_work, PREPARE_WORK(&scsi_id->protocol_work, last_orb ? sbp2util_write_doorbell: sbp2util_write_orb_pointer); schedule_delayed_work(&scsi_id->protocol_work, 0); sbp2util_write_orb_pointer /* */); schedule_work(&scsi_id->protocol_work); } } Loading drivers/ieee1394/sbp2.h +1 −1 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ struct scsi_id_instance_data { unsigned workarounds; atomic_t state; struct delayed_work protocol_work; struct work_struct protocol_work; }; /* For use in scsi_id_instance_data.state */ Loading Loading
drivers/ieee1394/sbp2.c +11 −15 Original line number Diff line number Diff line Loading @@ -462,23 +462,18 @@ static void sbp2util_notify_fetch_agent(struct scsi_id_instance_data *scsi_id, static void sbp2util_write_orb_pointer(struct work_struct *work) { struct scsi_id_instance_data *scsi_id = container_of(work, struct scsi_id_instance_data, protocol_work.work); quadlet_t data[2]; data[0] = ORB_SET_NODE_ID(scsi_id->hi->host->node_id); data[1] = scsi_id->last_orb_dma; data[0] = ORB_SET_NODE_ID( (container_of(work, struct scsi_id_instance_data, protocol_work))->hi->host->node_id); data[1] = (container_of(work, struct scsi_id_instance_data, protocol_work))->last_orb_dma; sbp2util_cpu_to_be32_buffer(data, 8); sbp2util_notify_fetch_agent(scsi_id, SBP2_ORB_POINTER_OFFSET, data, 8); sbp2util_notify_fetch_agent(container_of(work, struct scsi_id_instance_data, protocol_work), SBP2_ORB_POINTER_OFFSET, data, 8); } static void sbp2util_write_doorbell(struct work_struct *work) { struct scsi_id_instance_data *scsi_id = container_of(work, struct scsi_id_instance_data, protocol_work.work); sbp2util_notify_fetch_agent(scsi_id, SBP2_DOORBELL_OFFSET, NULL, 4); sbp2util_notify_fetch_agent(container_of(work, struct scsi_id_instance_data, protocol_work), SBP2_DOORBELL_OFFSET, NULL, 4); } /* Loading Loading @@ -795,7 +790,7 @@ static struct scsi_id_instance_data *sbp2_alloc_device(struct unit_directory *ud INIT_LIST_HEAD(&scsi_id->scsi_list); spin_lock_init(&scsi_id->sbp2_command_orb_lock); atomic_set(&scsi_id->state, SBP2LU_STATE_RUNNING); INIT_DELAYED_WORK(&scsi_id->protocol_work, NULL); INIT_WORK(&scsi_id->protocol_work, NULL); ud->device.driver_data = scsi_id; Loading Loading @@ -1578,7 +1573,7 @@ static int sbp2_agent_reset(struct scsi_id_instance_data *scsi_id, int wait) int retval; unsigned long flags; cancel_delayed_work(&scsi_id->protocol_work); /* cancel_delayed_work(&scsi_id->protocol_work); */ if (wait) flush_scheduled_work(); Loading Loading @@ -1889,10 +1884,11 @@ static void sbp2_link_orb_command(struct scsi_id_instance_data *scsi_id, * We do not accept new commands until the job is over. */ scsi_block_requests(scsi_id->scsi_host); PREPARE_DELAYED_WORK(&scsi_id->protocol_work, PREPARE_WORK(&scsi_id->protocol_work, last_orb ? sbp2util_write_doorbell: sbp2util_write_orb_pointer); schedule_delayed_work(&scsi_id->protocol_work, 0); sbp2util_write_orb_pointer /* */); schedule_work(&scsi_id->protocol_work); } } Loading
drivers/ieee1394/sbp2.h +1 −1 Original line number Diff line number Diff line Loading @@ -342,7 +342,7 @@ struct scsi_id_instance_data { unsigned workarounds; atomic_t state; struct delayed_work protocol_work; struct work_struct protocol_work; }; /* For use in scsi_id_instance_data.state */ Loading