Commit 8c4602f3 authored by Kees Cook's avatar Kees Cook

scsi: aic7xxx: Convert timers to use timer_setup()

stat_timer only ever assigns the same function and data, so consolidate
to using timer_setup(), adjust callback, drop everything else used
to pass things around, and remove needless typedefs.

reset_timer is unused; remove it.

Cc: Hannes Reinecke <hare@suse.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: default avatarKees Cook <keescook@chromium.org>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 00ed87da
...@@ -1046,8 +1046,6 @@ typedef enum { ...@@ -1046,8 +1046,6 @@ typedef enum {
typedef uint8_t ahd_mode_state; typedef uint8_t ahd_mode_state;
typedef void ahd_callback_t (void *);
struct ahd_completion struct ahd_completion
{ {
uint16_t tag; uint16_t tag;
...@@ -1122,8 +1120,7 @@ struct ahd_softc { ...@@ -1122,8 +1120,7 @@ struct ahd_softc {
/* /*
* Timer handles for timer driven callbacks. * Timer handles for timer driven callbacks.
*/ */
ahd_timer_t reset_timer; struct timer_list stat_timer;
ahd_timer_t stat_timer;
/* /*
* Statistics. * Statistics.
......
...@@ -207,7 +207,7 @@ static void ahd_add_scb_to_free_list(struct ahd_softc *ahd, ...@@ -207,7 +207,7 @@ static void ahd_add_scb_to_free_list(struct ahd_softc *ahd,
static u_int ahd_rem_wscb(struct ahd_softc *ahd, u_int scbid, static u_int ahd_rem_wscb(struct ahd_softc *ahd, u_int scbid,
u_int prev, u_int next, u_int tid); u_int prev, u_int next, u_int tid);
static void ahd_reset_current_bus(struct ahd_softc *ahd); static void ahd_reset_current_bus(struct ahd_softc *ahd);
static ahd_callback_t ahd_stat_timer; static void ahd_stat_timer(struct timer_list *t);
#ifdef AHD_DUMP_SEQ #ifdef AHD_DUMP_SEQ
static void ahd_dumpseq(struct ahd_softc *ahd); static void ahd_dumpseq(struct ahd_softc *ahd);
#endif #endif
...@@ -6104,8 +6104,7 @@ ahd_alloc(void *platform_arg, char *name) ...@@ -6104,8 +6104,7 @@ ahd_alloc(void *platform_arg, char *name)
ahd->bugs = AHD_BUGNONE; ahd->bugs = AHD_BUGNONE;
ahd->flags = AHD_SPCHK_ENB_A|AHD_RESET_BUS_A|AHD_TERM_ENB_A ahd->flags = AHD_SPCHK_ENB_A|AHD_RESET_BUS_A|AHD_TERM_ENB_A
| AHD_EXTENDED_TRANS_A|AHD_STPWLEVEL_A; | AHD_EXTENDED_TRANS_A|AHD_STPWLEVEL_A;
ahd_timer_init(&ahd->reset_timer); timer_setup(&ahd->stat_timer, ahd_stat_timer, 0);
ahd_timer_init(&ahd->stat_timer);
ahd->int_coalescing_timer = AHD_INT_COALESCING_TIMER_DEFAULT; ahd->int_coalescing_timer = AHD_INT_COALESCING_TIMER_DEFAULT;
ahd->int_coalescing_maxcmds = AHD_INT_COALESCING_MAXCMDS_DEFAULT; ahd->int_coalescing_maxcmds = AHD_INT_COALESCING_MAXCMDS_DEFAULT;
ahd->int_coalescing_mincmds = AHD_INT_COALESCING_MINCMDS_DEFAULT; ahd->int_coalescing_mincmds = AHD_INT_COALESCING_MINCMDS_DEFAULT;
...@@ -6235,8 +6234,7 @@ ahd_shutdown(void *arg) ...@@ -6235,8 +6234,7 @@ ahd_shutdown(void *arg)
/* /*
* Stop periodic timer callbacks. * Stop periodic timer callbacks.
*/ */
ahd_timer_stop(&ahd->reset_timer); del_timer_sync(&ahd->stat_timer);
ahd_timer_stop(&ahd->stat_timer);
/* This will reset most registers to 0, but not all */ /* This will reset most registers to 0, but not all */
ahd_reset(ahd, /*reinit*/FALSE); ahd_reset(ahd, /*reinit*/FALSE);
...@@ -7039,20 +7037,11 @@ static const char *termstat_strings[] = { ...@@ -7039,20 +7037,11 @@ static const char *termstat_strings[] = {
}; };
/***************************** Timer Facilities *******************************/ /***************************** Timer Facilities *******************************/
#define ahd_timer_init init_timer
#define ahd_timer_stop del_timer_sync
typedef void ahd_linux_callback_t (u_long);
static void static void
ahd_timer_reset(ahd_timer_t *timer, int usec, ahd_callback_t *func, void *arg) ahd_timer_reset(struct timer_list *timer, int usec)
{ {
struct ahd_softc *ahd;
ahd = (struct ahd_softc *)arg;
del_timer(timer); del_timer(timer);
timer->data = (u_long)arg;
timer->expires = jiffies + (usec * HZ)/1000000; timer->expires = jiffies + (usec * HZ)/1000000;
timer->function = (ahd_linux_callback_t*)func;
add_timer(timer); add_timer(timer);
} }
...@@ -7279,8 +7268,7 @@ ahd_init(struct ahd_softc *ahd) ...@@ -7279,8 +7268,7 @@ ahd_init(struct ahd_softc *ahd)
} }
init_done: init_done:
ahd_restart(ahd); ahd_restart(ahd);
ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US, ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US);
ahd_stat_timer, ahd);
return (0); return (0);
} }
...@@ -8878,9 +8866,9 @@ ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset) ...@@ -8878,9 +8866,9 @@ ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset)
/**************************** Statistics Processing ***************************/ /**************************** Statistics Processing ***************************/
static void static void
ahd_stat_timer(void *arg) ahd_stat_timer(struct timer_list *t)
{ {
struct ahd_softc *ahd = arg; struct ahd_softc *ahd = from_timer(ahd, t, stat_timer);
u_long s; u_long s;
int enint_coal; int enint_coal;
...@@ -8907,8 +8895,7 @@ ahd_stat_timer(void *arg) ...@@ -8907,8 +8895,7 @@ ahd_stat_timer(void *arg)
ahd->cmdcmplt_bucket = (ahd->cmdcmplt_bucket+1) & (AHD_STAT_BUCKETS-1); ahd->cmdcmplt_bucket = (ahd->cmdcmplt_bucket+1) & (AHD_STAT_BUCKETS-1);
ahd->cmdcmplt_total -= ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket]; ahd->cmdcmplt_total -= ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket];
ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket] = 0; ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket] = 0;
ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US, ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US);
ahd_stat_timer, ahd);
ahd_unlock(ahd, &s); ahd_unlock(ahd, &s);
} }
......
...@@ -203,9 +203,6 @@ int ahd_dmamap_unload(struct ahd_softc *, bus_dma_tag_t, bus_dmamap_t); ...@@ -203,9 +203,6 @@ int ahd_dmamap_unload(struct ahd_softc *, bus_dma_tag_t, bus_dmamap_t);
*/ */
#define ahd_dmamap_sync(ahd, dma_tag, dmamap, offset, len, op) #define ahd_dmamap_sync(ahd, dma_tag, dmamap, offset, len, op)
/************************** Timer DataStructures ******************************/
typedef struct timer_list ahd_timer_t;
/********************************** Includes **********************************/ /********************************** Includes **********************************/
#ifdef CONFIG_AIC79XX_REG_PRETTY_PRINT #ifdef CONFIG_AIC79XX_REG_PRETTY_PRINT
#define AIC_DEBUG_REGISTERS 1 #define AIC_DEBUG_REGISTERS 1
...@@ -214,10 +211,6 @@ typedef struct timer_list ahd_timer_t; ...@@ -214,10 +211,6 @@ typedef struct timer_list ahd_timer_t;
#endif #endif
#include "aic79xx.h" #include "aic79xx.h"
/***************************** Timer Facilities *******************************/
#define ahd_timer_init init_timer
#define ahd_timer_stop del_timer_sync
/***************************** SMP support ************************************/ /***************************** SMP support ************************************/
#include <linux/spinlock.h> #include <linux/spinlock.h>
......
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