Commit 30199bee authored by Kees Cook's avatar Kees Cook

scsi: aic94xx: 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: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: "James E.J. Bottomley" <jejb@linux.vnet.ibm.com>
Cc: Tomas Henzl <thenzl@redhat.com>
Cc: Quentin Lambert <lambert.quentin@gmail.com>
Cc: linux-scsi@vger.kernel.org
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 52f737c2
...@@ -1178,8 +1178,7 @@ static void asd_start_scb_timers(struct list_head *list) ...@@ -1178,8 +1178,7 @@ static void asd_start_scb_timers(struct list_head *list)
struct asd_ascb *ascb; struct asd_ascb *ascb;
list_for_each_entry(ascb, list, list) { list_for_each_entry(ascb, list, list) {
if (!ascb->uldd_timer) { if (!ascb->uldd_timer) {
ascb->timer.data = (unsigned long) ascb; ascb->timer.function = (TIMER_FUNC_TYPE)asd_ascb_timedout;
ascb->timer.function = asd_ascb_timedout;
ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT; ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
add_timer(&ascb->timer); add_timer(&ascb->timer);
} }
......
...@@ -291,8 +291,7 @@ static inline void asd_init_ascb(struct asd_ha_struct *asd_ha, ...@@ -291,8 +291,7 @@ static inline void asd_init_ascb(struct asd_ha_struct *asd_ha,
INIT_LIST_HEAD(&ascb->list); INIT_LIST_HEAD(&ascb->list);
ascb->scb = ascb->dma_scb.vaddr; ascb->scb = ascb->dma_scb.vaddr;
ascb->ha = asd_ha; ascb->ha = asd_ha;
ascb->timer.function = NULL; timer_setup(&ascb->timer, NULL, 0);
init_timer(&ascb->timer);
ascb->tc_index = -1; ascb->tc_index = -1;
} }
...@@ -392,7 +391,7 @@ void asd_control_led(struct asd_ha_struct *asd_ha, int phy_id, int op); ...@@ -392,7 +391,7 @@ void asd_control_led(struct asd_ha_struct *asd_ha, int phy_id, int op);
void asd_turn_led(struct asd_ha_struct *asd_ha, int phy_id, int op); void asd_turn_led(struct asd_ha_struct *asd_ha, int phy_id, int op);
int asd_enable_phys(struct asd_ha_struct *asd_ha, const u8 phy_mask); int asd_enable_phys(struct asd_ha_struct *asd_ha, const u8 phy_mask);
void asd_ascb_timedout(unsigned long data); void asd_ascb_timedout(struct timer_list *t);
int asd_chip_hardrst(struct asd_ha_struct *asd_ha); int asd_chip_hardrst(struct asd_ha_struct *asd_ha);
#endif #endif
...@@ -866,12 +866,12 @@ void asd_build_initiate_link_adm_task(struct asd_ascb *ascb, int phy_id, ...@@ -866,12 +866,12 @@ void asd_build_initiate_link_adm_task(struct asd_ascb *ascb, int phy_id,
* Upper layers can implement their own timeout function, say to free * Upper layers can implement their own timeout function, say to free
* resources they have with this SCB, and then call this one at the * resources they have with this SCB, and then call this one at the
* end of their timeout function. To do this, one should initialize * end of their timeout function. To do this, one should initialize
* the ascb->timer.{function, data, expires} prior to calling the post * the ascb->timer.{function, expires} prior to calling the post
* function. The timer is started by the post function. * function. The timer is started by the post function.
*/ */
void asd_ascb_timedout(unsigned long data) void asd_ascb_timedout(struct timer_list *t)
{ {
struct asd_ascb *ascb = (void *) data; struct asd_ascb *ascb = from_timer(ascb, t, timer);
struct asd_seq_data *seq = &ascb->ha->seq; struct asd_seq_data *seq = &ascb->ha->seq;
unsigned long flags; unsigned long flags;
......
...@@ -35,15 +35,14 @@ ...@@ -35,15 +35,14 @@
static int asd_enqueue_internal(struct asd_ascb *ascb, static int asd_enqueue_internal(struct asd_ascb *ascb,
void (*tasklet_complete)(struct asd_ascb *, void (*tasklet_complete)(struct asd_ascb *,
struct done_list_struct *), struct done_list_struct *),
void (*timed_out)(unsigned long)) void (*timed_out)(struct timer_list *t))
{ {
int res; int res;
ascb->tasklet_complete = tasklet_complete; ascb->tasklet_complete = tasklet_complete;
ascb->uldd_timer = 1; ascb->uldd_timer = 1;
ascb->timer.data = (unsigned long) ascb; ascb->timer.function = (TIMER_FUNC_TYPE)timed_out;
ascb->timer.function = timed_out;
ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT; ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT;
add_timer(&ascb->timer); add_timer(&ascb->timer);
...@@ -87,9 +86,9 @@ static void asd_clear_nexus_tasklet_complete(struct asd_ascb *ascb, ...@@ -87,9 +86,9 @@ static void asd_clear_nexus_tasklet_complete(struct asd_ascb *ascb,
asd_ascb_free(ascb); asd_ascb_free(ascb);
} }
static void asd_clear_nexus_timedout(unsigned long data) static void asd_clear_nexus_timedout(struct timer_list *t)
{ {
struct asd_ascb *ascb = (void *)data; struct asd_ascb *ascb = from_timer(ascb, t, timer);
struct tasklet_completion_status *tcs = ascb->uldd_task; struct tasklet_completion_status *tcs = ascb->uldd_task;
ASD_DPRINTK("%s: here\n", __func__); ASD_DPRINTK("%s: here\n", __func__);
...@@ -261,9 +260,9 @@ static int asd_clear_nexus_index(struct sas_task *task) ...@@ -261,9 +260,9 @@ static int asd_clear_nexus_index(struct sas_task *task)
/* ---------- TMFs ---------- */ /* ---------- TMFs ---------- */
static void asd_tmf_timedout(unsigned long data) static void asd_tmf_timedout(struct timer_list *t)
{ {
struct asd_ascb *ascb = (void *) data; struct asd_ascb *ascb = from_timer(ascb, t, timer);
struct tasklet_completion_status *tcs = ascb->uldd_task; struct tasklet_completion_status *tcs = ascb->uldd_task;
ASD_DPRINTK("tmf timed out\n"); ASD_DPRINTK("tmf timed out\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment