]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
scsi: qla2xxx: Convert timers to use timer_setup()
authorKees Cook <keescook@chromium.org>
Sun, 3 Sep 2017 20:23:32 +0000 (13:23 -0700)
committerKees Cook <keescook@chromium.org>
Wed, 8 Nov 2017 23:51:35 +0000 (15:51 -0800)
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>
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_inline.h
drivers/scsi/qla2xxx/qla_mid.c
drivers/scsi/qla2xxx/qla_os.c

index f852ca60c49fd182192efaeb6853bf5c379f015c..3ad375f85b59e325c7e35ac1d7b0264963999e1d 100644 (file)
@@ -206,8 +206,8 @@ int qla24xx_async_abort_cmd(srb_t *);
  */
 extern struct scsi_host_template qla2xxx_driver_template;
 extern struct scsi_transport_template *qla2xxx_transport_vport_template;
-extern void qla2x00_timer(scsi_qla_host_t *);
-extern void qla2x00_start_timer(scsi_qla_host_t *, void *, unsigned long);
+extern void qla2x00_timer(struct timer_list *);
+extern void qla2x00_start_timer(scsi_qla_host_t *, unsigned long);
 extern void qla24xx_deallocate_vp_id(scsi_qla_host_t *);
 extern int qla24xx_disable_vp (scsi_qla_host_t *);
 extern int qla24xx_enable_vp (scsi_qla_host_t *);
@@ -753,7 +753,7 @@ extern int qla82xx_restart_isp(scsi_qla_host_t *);
 /* IOCB related functions */
 extern int qla82xx_start_scsi(srb_t *);
 extern void qla2x00_sp_free(void *);
-extern void qla2x00_sp_timeout(unsigned long);
+extern void qla2x00_sp_timeout(struct timer_list *);
 extern void qla2x00_bsg_job_done(void *, int);
 extern void qla2x00_bsg_sp_free(void *);
 extern void qla2x00_start_iocbs(struct scsi_qla_host *, struct req_que *);
index b5b48ddca9621d82bb9b7b674b8eb9f79f083fbe..44cf875a484adb4ac5e7afb98a5f5a87cc0f12f1 100644 (file)
@@ -45,9 +45,9 @@ static void qla24xx_handle_prli_done_event(struct scsi_qla_host *,
 /* SRB Extensions ---------------------------------------------------------- */
 
 void
-qla2x00_sp_timeout(unsigned long __data)
+qla2x00_sp_timeout(struct timer_list *t)
 {
-       srb_t *sp = (srb_t *)__data;
+       srb_t *sp = from_timer(sp, t, u.iocb_cmd.timer);
        struct srb_iocb *iocb;
        scsi_qla_host_t *vha = sp->vha;
        struct req_que *req;
index 9a2c86eacf44add92137dc94d5bf2846987e89e0..17d2c20f1f75a1084fd3328f558fa7f1d6eb234f 100644 (file)
@@ -269,10 +269,8 @@ qla2x00_rel_sp(srb_t *sp)
 static inline void
 qla2x00_init_timer(srb_t *sp, unsigned long tmo)
 {
-       init_timer(&sp->u.iocb_cmd.timer);
+       timer_setup(&sp->u.iocb_cmd.timer, qla2x00_sp_timeout, 0);
        sp->u.iocb_cmd.timer.expires = jiffies + tmo * HZ;
-       sp->u.iocb_cmd.timer.data = (unsigned long)sp;
-       sp->u.iocb_cmd.timer.function = qla2x00_sp_timeout;
        add_timer(&sp->u.iocb_cmd.timer);
        sp->free = qla2x00_sp_free;
        if (IS_QLAFX00(sp->vha->hw) && (sp->type == SRB_FXIOCB_DCMD))
index c0f8f6c17b793384cd9f9c70ef34f8ec945642e7..cbf544dbf883d791c3a841b7ddc829cd0a0dff36 100644 (file)
@@ -487,7 +487,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport)
        atomic_set(&vha->loop_state, LOOP_DOWN);
        atomic_set(&vha->loop_down_timer, LOOP_DOWN_TIME);
 
-       qla2x00_start_timer(vha, qla2x00_timer, WATCH_INTERVAL);
+       qla2x00_start_timer(vha, WATCH_INTERVAL);
 
        vha->req = base_vha->req;
        host->can_queue = base_vha->req->length + 128;
index 5b2437a5ea440a5d3a6836115bcf444595d8f7ef..c3b3daa797ff48e1cad579f68b88661df7bc2d93 100644 (file)
@@ -330,12 +330,10 @@ struct scsi_transport_template *qla2xxx_transport_vport_template = NULL;
  */
 
 __inline__ void
-qla2x00_start_timer(scsi_qla_host_t *vha, void *func, unsigned long interval)
+qla2x00_start_timer(scsi_qla_host_t *vha, unsigned long interval)
 {
-       init_timer(&vha->timer);
+       timer_setup(&vha->timer, qla2x00_timer, 0);
        vha->timer.expires = jiffies + interval * HZ;
-       vha->timer.data = (unsigned long)vha;
-       vha->timer.function = (void (*)(unsigned long))func;
        add_timer(&vha->timer);
        vha->timer_active = 1;
 }
@@ -3245,7 +3243,7 @@ skip_dpc:
        base_vha->host->irq = ha->pdev->irq;
 
        /* Initialized the timer */
-       qla2x00_start_timer(base_vha, qla2x00_timer, WATCH_INTERVAL);
+       qla2x00_start_timer(base_vha, WATCH_INTERVAL);
        ql_dbg(ql_dbg_init, base_vha, 0x00ef,
            "Started qla2x00_timer with "
            "interval=%d.\n", WATCH_INTERVAL);
@@ -5994,8 +5992,9 @@ qla2x00_rst_aen(scsi_qla_host_t *vha)
 * Context: Interrupt
 ***************************************************************************/
 void
-qla2x00_timer(scsi_qla_host_t *vha)
+qla2x00_timer(struct timer_list *t)
 {
+       scsi_qla_host_t *vha = from_timer(vha, t, timer);
        unsigned long   cpu_flags = 0;
        int             start_dpc = 0;
        int             index;