aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2017-09-03 16:23:32 -0400
committerKees Cook <keescook@chromium.org>2017-11-08 18:51:35 -0500
commit8e5f4ba0cd5ed3879d484472657122742a749e9c (patch)
tree82a9a5d07ad9067e023cd4c7591d3938964c2a2c
parent1c10bbee8cf7c8df4e5d9e8ccc9754b200f625ff (diff)
scsi: qla2xxx: Convert timers to use timer_setup()
In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Cc: qla2xxx-upstream@qlogic.com Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com> Cc: "Martin K. Petersen" <martin.petersen@oracle.com> Cc: linux-scsi@vger.kernel.org Signed-off-by: Kees Cook <keescook@chromium.org> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Tested-by: Bart Van Assche <Bart.VanAssche@wdc.com>
-rw-r--r--drivers/scsi/qla2xxx/qla_gbl.h6
-rw-r--r--drivers/scsi/qla2xxx/qla_init.c4
-rw-r--r--drivers/scsi/qla2xxx/qla_inline.h4
-rw-r--r--drivers/scsi/qla2xxx/qla_mid.c2
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c11
5 files changed, 12 insertions, 15 deletions
diff --git a/drivers/scsi/qla2xxx/qla_gbl.h b/drivers/scsi/qla2xxx/qla_gbl.h
index f852ca60c49f..3ad375f85b59 100644
--- a/drivers/scsi/qla2xxx/qla_gbl.h
+++ b/drivers/scsi/qla2xxx/qla_gbl.h
@@ -206,8 +206,8 @@ int qla24xx_async_abort_cmd(srb_t *);
206 */ 206 */
207extern struct scsi_host_template qla2xxx_driver_template; 207extern struct scsi_host_template qla2xxx_driver_template;
208extern struct scsi_transport_template *qla2xxx_transport_vport_template; 208extern struct scsi_transport_template *qla2xxx_transport_vport_template;
209extern void qla2x00_timer(scsi_qla_host_t *); 209extern void qla2x00_timer(struct timer_list *);
210extern void qla2x00_start_timer(scsi_qla_host_t *, void *, unsigned long); 210extern void qla2x00_start_timer(scsi_qla_host_t *, unsigned long);
211extern void qla24xx_deallocate_vp_id(scsi_qla_host_t *); 211extern void qla24xx_deallocate_vp_id(scsi_qla_host_t *);
212extern int qla24xx_disable_vp (scsi_qla_host_t *); 212extern int qla24xx_disable_vp (scsi_qla_host_t *);
213extern int qla24xx_enable_vp (scsi_qla_host_t *); 213extern int qla24xx_enable_vp (scsi_qla_host_t *);
@@ -753,7 +753,7 @@ extern int qla82xx_restart_isp(scsi_qla_host_t *);
753/* IOCB related functions */ 753/* IOCB related functions */
754extern int qla82xx_start_scsi(srb_t *); 754extern int qla82xx_start_scsi(srb_t *);
755extern void qla2x00_sp_free(void *); 755extern void qla2x00_sp_free(void *);
756extern void qla2x00_sp_timeout(unsigned long); 756extern void qla2x00_sp_timeout(struct timer_list *);
757extern void qla2x00_bsg_job_done(void *, int); 757extern void qla2x00_bsg_job_done(void *, int);
758extern void qla2x00_bsg_sp_free(void *); 758extern void qla2x00_bsg_sp_free(void *);
759extern void qla2x00_start_iocbs(struct scsi_qla_host *, struct req_que *); 759extern void qla2x00_start_iocbs(struct scsi_qla_host *, struct req_que *);
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index b5b48ddca962..44cf875a484a 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -45,9 +45,9 @@ static void qla24xx_handle_prli_done_event(struct scsi_qla_host *,
45/* SRB Extensions ---------------------------------------------------------- */ 45/* SRB Extensions ---------------------------------------------------------- */
46 46
47void 47void
48qla2x00_sp_timeout(unsigned long __data) 48qla2x00_sp_timeout(struct timer_list *t)
49{ 49{
50 srb_t *sp = (srb_t *)__data; 50 srb_t *sp = from_timer(sp, t, u.iocb_cmd.timer);
51 struct srb_iocb *iocb; 51 struct srb_iocb *iocb;
52 scsi_qla_host_t *vha = sp->vha; 52 scsi_qla_host_t *vha = sp->vha;
53 struct req_que *req; 53 struct req_que *req;
diff --git a/drivers/scsi/qla2xxx/qla_inline.h b/drivers/scsi/qla2xxx/qla_inline.h
index 9a2c86eacf44..17d2c20f1f75 100644
--- a/drivers/scsi/qla2xxx/qla_inline.h
+++ b/drivers/scsi/qla2xxx/qla_inline.h
@@ -269,10 +269,8 @@ qla2x00_rel_sp(srb_t *sp)
269static inline void 269static inline void
270qla2x00_init_timer(srb_t *sp, unsigned long tmo) 270qla2x00_init_timer(srb_t *sp, unsigned long tmo)
271{ 271{
272 init_timer(&sp->u.iocb_cmd.timer); 272 timer_setup(&sp->u.iocb_cmd.timer, qla2x00_sp_timeout, 0);
273 sp->u.iocb_cmd.timer.expires = jiffies + tmo * HZ; 273 sp->u.iocb_cmd.timer.expires = jiffies + tmo * HZ;
274 sp->u.iocb_cmd.timer.data = (unsigned long)sp;
275 sp->u.iocb_cmd.timer.function = qla2x00_sp_timeout;
276 add_timer(&sp->u.iocb_cmd.timer); 274 add_timer(&sp->u.iocb_cmd.timer);
277 sp->free = qla2x00_sp_free; 275 sp->free = qla2x00_sp_free;
278 if (IS_QLAFX00(sp->vha->hw) && (sp->type == SRB_FXIOCB_DCMD)) 276 if (IS_QLAFX00(sp->vha->hw) && (sp->type == SRB_FXIOCB_DCMD))
diff --git a/drivers/scsi/qla2xxx/qla_mid.c b/drivers/scsi/qla2xxx/qla_mid.c
index c0f8f6c17b79..cbf544dbf883 100644
--- a/drivers/scsi/qla2xxx/qla_mid.c
+++ b/drivers/scsi/qla2xxx/qla_mid.c
@@ -487,7 +487,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport)
487 atomic_set(&vha->loop_state, LOOP_DOWN); 487 atomic_set(&vha->loop_state, LOOP_DOWN);
488 atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME); 488 atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME);
489 489
490 qla2x00_start_timer(vha, qla2x00_timer, WATCH_INTERVAL); 490 qla2x00_start_timer(vha, WATCH_INTERVAL);
491 491
492 vha->req = base_vha->req; 492 vha->req = base_vha->req;
493 host->can_queue = base_vha->req->length + 128; 493 host->can_queue = base_vha->req->length + 128;
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 5b2437a5ea44..c3b3daa797ff 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -330,12 +330,10 @@ struct scsi_transport_template *qla2xxx_transport_vport_template = NULL;
330 */ 330 */
331 331
332__inline__ void 332__inline__ void
333qla2x00_start_timer(scsi_qla_host_t *vha, void *func, unsigned long interval) 333qla2x00_start_timer(scsi_qla_host_t *vha, unsigned long interval)
334{ 334{
335 init_timer(&vha->timer); 335 timer_setup(&vha->timer, qla2x00_timer, 0);
336 vha->timer.expires = jiffies + interval * HZ; 336 vha->timer.expires = jiffies + interval * HZ;
337 vha->timer.data = (unsigned long)vha;
338 vha->timer.function = (void (*)(unsigned long))func;
339 add_timer(&vha->timer); 337 add_timer(&vha->timer);
340 vha->timer_active = 1; 338 vha->timer_active = 1;
341} 339}
@@ -3245,7 +3243,7 @@ skip_dpc:
3245 base_vha->host->irq = ha->pdev->irq; 3243 base_vha->host->irq = ha->pdev->irq;
3246 3244
3247 /* Initialized the timer */ 3245 /* Initialized the timer */
3248 qla2x00_start_timer(base_vha, qla2x00_timer, WATCH_INTERVAL); 3246 qla2x00_start_timer(base_vha, WATCH_INTERVAL);
3249 ql_dbg(ql_dbg_init, base_vha, 0x00ef, 3247 ql_dbg(ql_dbg_init, base_vha, 0x00ef,
3250 "Started qla2x00_timer with " 3248 "Started qla2x00_timer with "
3251 "interval=%d.\n", WATCH_INTERVAL); 3249 "interval=%d.\n", WATCH_INTERVAL);
@@ -5994,8 +5992,9 @@ qla2x00_rst_aen(scsi_qla_host_t *vha)
5994* Context: Interrupt 5992* Context: Interrupt
5995***************************************************************************/ 5993***************************************************************************/
5996void 5994void
5997qla2x00_timer(scsi_qla_host_t *vha) 5995qla2x00_timer(struct timer_list *t)
5998{ 5996{
5997 scsi_qla_host_t *vha = from_timer(vha, t, timer);
5999 unsigned long cpu_flags = 0; 5998 unsigned long cpu_flags = 0;
6000 int start_dpc = 0; 5999 int start_dpc = 0;
6001 int index; 6000 int index;