提交 6c1e272f 编写于 作者: T Thomas Gleixner

Merge tag 'timers-conversion-next' of...

Merge tag 'timers-conversion-next' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux into timers/core

Pull first batch of scsi conversions that have been Reviewed or Acked from
Kees Cook.
...@@ -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");
......
...@@ -5230,12 +5230,11 @@ static void beiscsi_eqd_update_work(struct work_struct *work) ...@@ -5230,12 +5230,11 @@ static void beiscsi_eqd_update_work(struct work_struct *work)
msecs_to_jiffies(BEISCSI_EQD_UPDATE_INTERVAL)); msecs_to_jiffies(BEISCSI_EQD_UPDATE_INTERVAL));
} }
static void beiscsi_hw_tpe_check(unsigned long ptr) static void beiscsi_hw_tpe_check(struct timer_list *t)
{ {
struct beiscsi_hba *phba; struct beiscsi_hba *phba = from_timer(phba, t, hw_check);
u32 wait; u32 wait;
phba = (struct beiscsi_hba *)ptr;
/* if not TPE, do nothing */ /* if not TPE, do nothing */
if (!beiscsi_detect_tpe(phba)) if (!beiscsi_detect_tpe(phba))
return; return;
...@@ -5248,11 +5247,10 @@ static void beiscsi_hw_tpe_check(unsigned long ptr) ...@@ -5248,11 +5247,10 @@ static void beiscsi_hw_tpe_check(unsigned long ptr)
msecs_to_jiffies(wait)); msecs_to_jiffies(wait));
} }
static void beiscsi_hw_health_check(unsigned long ptr) static void beiscsi_hw_health_check(struct timer_list *t)
{ {
struct beiscsi_hba *phba; struct beiscsi_hba *phba = from_timer(phba, t, hw_check);
phba = (struct beiscsi_hba *)ptr;
beiscsi_detect_ue(phba); beiscsi_detect_ue(phba);
if (beiscsi_detect_ue(phba)) { if (beiscsi_detect_ue(phba)) {
__beiscsi_log(phba, KERN_ERR, __beiscsi_log(phba, KERN_ERR,
...@@ -5264,7 +5262,7 @@ static void beiscsi_hw_health_check(unsigned long ptr) ...@@ -5264,7 +5262,7 @@ static void beiscsi_hw_health_check(unsigned long ptr)
if (!test_bit(BEISCSI_HBA_UER_SUPP, &phba->state)) if (!test_bit(BEISCSI_HBA_UER_SUPP, &phba->state))
return; return;
/* modify this timer to check TPE */ /* modify this timer to check TPE */
phba->hw_check.function = beiscsi_hw_tpe_check; phba->hw_check.function = (TIMER_FUNC_TYPE)beiscsi_hw_tpe_check;
} }
mod_timer(&phba->hw_check, mod_timer(&phba->hw_check,
...@@ -5351,7 +5349,7 @@ static int beiscsi_enable_port(struct beiscsi_hba *phba) ...@@ -5351,7 +5349,7 @@ static int beiscsi_enable_port(struct beiscsi_hba *phba)
* Timer function gets modified for TPE detection. * Timer function gets modified for TPE detection.
* Always reinit to do health check first. * Always reinit to do health check first.
*/ */
phba->hw_check.function = beiscsi_hw_health_check; phba->hw_check.function = (TIMER_FUNC_TYPE)beiscsi_hw_health_check;
mod_timer(&phba->hw_check, mod_timer(&phba->hw_check,
jiffies + msecs_to_jiffies(BEISCSI_UE_DETECT_INTERVAL)); jiffies + msecs_to_jiffies(BEISCSI_UE_DETECT_INTERVAL));
return 0; return 0;
...@@ -5708,9 +5706,7 @@ static int beiscsi_dev_probe(struct pci_dev *pcidev, ...@@ -5708,9 +5706,7 @@ static int beiscsi_dev_probe(struct pci_dev *pcidev,
* Start UE detection here. UE before this will cause stall in probe * Start UE detection here. UE before this will cause stall in probe
* and eventually fail the probe. * and eventually fail the probe.
*/ */
init_timer(&phba->hw_check); timer_setup(&phba->hw_check, beiscsi_hw_health_check, 0);
phba->hw_check.function = beiscsi_hw_health_check;
phba->hw_check.data = (unsigned long)phba;
mod_timer(&phba->hw_check, mod_timer(&phba->hw_check,
jiffies + msecs_to_jiffies(BEISCSI_UE_DETECT_INTERVAL)); jiffies + msecs_to_jiffies(BEISCSI_UE_DETECT_INTERVAL));
beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT, beiscsi_log(phba, KERN_INFO, BEISCSI_LOG_INIT,
......
...@@ -823,7 +823,7 @@ static int bnx2fc_net_config(struct fc_lport *lport, struct net_device *netdev) ...@@ -823,7 +823,7 @@ static int bnx2fc_net_config(struct fc_lport *lport, struct net_device *netdev)
skb_queue_head_init(&port->fcoe_pending_queue); skb_queue_head_init(&port->fcoe_pending_queue);
port->fcoe_pending_queue_active = 0; port->fcoe_pending_queue_active = 0;
setup_timer(&port->timer, fcoe_queue_timer, (unsigned long) lport); timer_setup(&port->timer, fcoe_queue_timer, 0);
fcoe_link_speed_update(lport); fcoe_link_speed_update(lport);
...@@ -845,9 +845,9 @@ static int bnx2fc_net_config(struct fc_lport *lport, struct net_device *netdev) ...@@ -845,9 +845,9 @@ static int bnx2fc_net_config(struct fc_lport *lport, struct net_device *netdev)
return 0; return 0;
} }
static void bnx2fc_destroy_timer(unsigned long data) static void bnx2fc_destroy_timer(struct timer_list *t)
{ {
struct bnx2fc_hba *hba = (struct bnx2fc_hba *)data; struct bnx2fc_hba *hba = from_timer(hba, t, destroy_timer);
printk(KERN_ERR PFX "ERROR:bnx2fc_destroy_timer - " printk(KERN_ERR PFX "ERROR:bnx2fc_destroy_timer - "
"Destroy compl not received!!\n"); "Destroy compl not received!!\n");
...@@ -1946,11 +1946,10 @@ static void bnx2fc_fw_destroy(struct bnx2fc_hba *hba) ...@@ -1946,11 +1946,10 @@ static void bnx2fc_fw_destroy(struct bnx2fc_hba *hba)
{ {
if (test_and_clear_bit(BNX2FC_FLAG_FW_INIT_DONE, &hba->flags)) { if (test_and_clear_bit(BNX2FC_FLAG_FW_INIT_DONE, &hba->flags)) {
if (bnx2fc_send_fw_fcoe_destroy_msg(hba) == 0) { if (bnx2fc_send_fw_fcoe_destroy_msg(hba) == 0) {
init_timer(&hba->destroy_timer); timer_setup(&hba->destroy_timer, bnx2fc_destroy_timer,
0);
hba->destroy_timer.expires = BNX2FC_FW_TIMEOUT + hba->destroy_timer.expires = BNX2FC_FW_TIMEOUT +
jiffies; jiffies;
hba->destroy_timer.function = bnx2fc_destroy_timer;
hba->destroy_timer.data = (unsigned long)hba;
add_timer(&hba->destroy_timer); add_timer(&hba->destroy_timer);
wait_event_interruptible(hba->destroy_wait, wait_event_interruptible(hba->destroy_wait,
test_bit(BNX2FC_FLAG_DESTROY_CMPL, test_bit(BNX2FC_FLAG_DESTROY_CMPL,
......
...@@ -858,7 +858,7 @@ extern int bnx2i_alloc_qp_resc(struct bnx2i_hba *hba, ...@@ -858,7 +858,7 @@ extern int bnx2i_alloc_qp_resc(struct bnx2i_hba *hba,
struct bnx2i_endpoint *ep); struct bnx2i_endpoint *ep);
extern void bnx2i_free_qp_resc(struct bnx2i_hba *hba, extern void bnx2i_free_qp_resc(struct bnx2i_hba *hba,
struct bnx2i_endpoint *ep); struct bnx2i_endpoint *ep);
extern void bnx2i_ep_ofld_timer(unsigned long data); extern void bnx2i_ep_ofld_timer(struct timer_list *t);
extern struct bnx2i_endpoint *bnx2i_find_ep_in_ofld_list( extern struct bnx2i_endpoint *bnx2i_find_ep_in_ofld_list(
struct bnx2i_hba *hba, u32 iscsi_cid); struct bnx2i_hba *hba, u32 iscsi_cid);
extern struct bnx2i_endpoint *bnx2i_find_ep_in_destroy_list( extern struct bnx2i_endpoint *bnx2i_find_ep_in_destroy_list(
......
...@@ -698,9 +698,9 @@ void bnx2i_update_iscsi_conn(struct iscsi_conn *conn) ...@@ -698,9 +698,9 @@ void bnx2i_update_iscsi_conn(struct iscsi_conn *conn)
* *
* routine to handle connection offload/destroy request timeout * routine to handle connection offload/destroy request timeout
*/ */
void bnx2i_ep_ofld_timer(unsigned long data) void bnx2i_ep_ofld_timer(struct timer_list *t)
{ {
struct bnx2i_endpoint *ep = (struct bnx2i_endpoint *) data; struct bnx2i_endpoint *ep = from_timer(ep, t, ofld_timer);
if (ep->state == EP_STATE_OFLD_START) { if (ep->state == EP_STATE_OFLD_START) {
printk(KERN_ALERT "ofld_timer: CONN_OFLD timeout\n"); printk(KERN_ALERT "ofld_timer: CONN_OFLD timeout\n");
......
...@@ -1611,9 +1611,8 @@ static int bnx2i_conn_start(struct iscsi_cls_conn *cls_conn) ...@@ -1611,9 +1611,8 @@ static int bnx2i_conn_start(struct iscsi_cls_conn *cls_conn)
* this should normally not sleep for a long time so it should * this should normally not sleep for a long time so it should
* not disrupt the caller. * not disrupt the caller.
*/ */
timer_setup(&bnx2i_conn->ep->ofld_timer, bnx2i_ep_ofld_timer, 0);
bnx2i_conn->ep->ofld_timer.expires = 1 * HZ + jiffies; bnx2i_conn->ep->ofld_timer.expires = 1 * HZ + jiffies;
bnx2i_conn->ep->ofld_timer.function = bnx2i_ep_ofld_timer;
bnx2i_conn->ep->ofld_timer.data = (unsigned long) bnx2i_conn->ep;
add_timer(&bnx2i_conn->ep->ofld_timer); add_timer(&bnx2i_conn->ep->ofld_timer);
/* update iSCSI context for this conn, wait for CNIC to complete */ /* update iSCSI context for this conn, wait for CNIC to complete */
wait_event_interruptible(bnx2i_conn->ep->ofld_wait, wait_event_interruptible(bnx2i_conn->ep->ofld_wait,
...@@ -1729,10 +1728,8 @@ static int bnx2i_tear_down_conn(struct bnx2i_hba *hba, ...@@ -1729,10 +1728,8 @@ static int bnx2i_tear_down_conn(struct bnx2i_hba *hba,
} }
ep->state = EP_STATE_CLEANUP_START; ep->state = EP_STATE_CLEANUP_START;
init_timer(&ep->ofld_timer); timer_setup(&ep->ofld_timer, bnx2i_ep_ofld_timer, 0);
ep->ofld_timer.expires = hba->conn_ctx_destroy_tmo + jiffies; ep->ofld_timer.expires = hba->conn_ctx_destroy_tmo + jiffies;
ep->ofld_timer.function = bnx2i_ep_ofld_timer;
ep->ofld_timer.data = (unsigned long) ep;
add_timer(&ep->ofld_timer); add_timer(&ep->ofld_timer);
bnx2i_ep_destroy_list_add(hba, ep); bnx2i_ep_destroy_list_add(hba, ep);
...@@ -1835,10 +1832,8 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct Scsi_Host *shost, ...@@ -1835,10 +1832,8 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct Scsi_Host *shost,
bnx2i_ep->state = EP_STATE_OFLD_START; bnx2i_ep->state = EP_STATE_OFLD_START;
bnx2i_ep_ofld_list_add(hba, bnx2i_ep); bnx2i_ep_ofld_list_add(hba, bnx2i_ep);
init_timer(&bnx2i_ep->ofld_timer); timer_setup(&bnx2i_ep->ofld_timer, bnx2i_ep_ofld_timer, 0);
bnx2i_ep->ofld_timer.expires = 2 * HZ + jiffies; bnx2i_ep->ofld_timer.expires = 2 * HZ + jiffies;
bnx2i_ep->ofld_timer.function = bnx2i_ep_ofld_timer;
bnx2i_ep->ofld_timer.data = (unsigned long) bnx2i_ep;
add_timer(&bnx2i_ep->ofld_timer); add_timer(&bnx2i_ep->ofld_timer);
if (bnx2i_send_conn_ofld_req(hba, bnx2i_ep)) { if (bnx2i_send_conn_ofld_req(hba, bnx2i_ep)) {
...@@ -2054,10 +2049,8 @@ int bnx2i_hw_ep_disconnect(struct bnx2i_endpoint *bnx2i_ep) ...@@ -2054,10 +2049,8 @@ int bnx2i_hw_ep_disconnect(struct bnx2i_endpoint *bnx2i_ep)
session = conn->session; session = conn->session;
} }
init_timer(&bnx2i_ep->ofld_timer); timer_setup(&bnx2i_ep->ofld_timer, bnx2i_ep_ofld_timer, 0);
bnx2i_ep->ofld_timer.expires = hba->conn_teardown_tmo + jiffies; bnx2i_ep->ofld_timer.expires = hba->conn_teardown_tmo + jiffies;
bnx2i_ep->ofld_timer.function = bnx2i_ep_ofld_timer;
bnx2i_ep->ofld_timer.data = (unsigned long) bnx2i_ep;
add_timer(&bnx2i_ep->ofld_timer); add_timer(&bnx2i_ep->ofld_timer);
if (!test_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic)) if (!test_bit(BNX2I_CNIC_REGISTERED, &hba->reg_with_cnic))
......
...@@ -395,7 +395,7 @@ static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, ...@@ -395,7 +395,7 @@ static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
struct ScsiReqBlk *srb); struct ScsiReqBlk *srb);
static void set_xfer_rate(struct AdapterCtlBlk *acb, static void set_xfer_rate(struct AdapterCtlBlk *acb,
struct DeviceCtlBlk *dcb); struct DeviceCtlBlk *dcb);
static void waiting_timeout(unsigned long ptr); static void waiting_timeout(struct timer_list *t);
/*--------------------------------------------------------------------------- /*---------------------------------------------------------------------------
...@@ -857,9 +857,6 @@ static void waiting_set_timer(struct AdapterCtlBlk *acb, unsigned long to) ...@@ -857,9 +857,6 @@ static void waiting_set_timer(struct AdapterCtlBlk *acb, unsigned long to)
{ {
if (timer_pending(&acb->waiting_timer)) if (timer_pending(&acb->waiting_timer))
return; return;
init_timer(&acb->waiting_timer);
acb->waiting_timer.function = waiting_timeout;
acb->waiting_timer.data = (unsigned long) acb;
if (time_before(jiffies + to, acb->last_reset - HZ / 2)) if (time_before(jiffies + to, acb->last_reset - HZ / 2))
acb->waiting_timer.expires = acb->waiting_timer.expires =
acb->last_reset - HZ / 2 + 1; acb->last_reset - HZ / 2 + 1;
...@@ -936,10 +933,10 @@ static void waiting_process_next(struct AdapterCtlBlk *acb) ...@@ -936,10 +933,10 @@ static void waiting_process_next(struct AdapterCtlBlk *acb)
/* Wake up waiting queue */ /* Wake up waiting queue */
static void waiting_timeout(unsigned long ptr) static void waiting_timeout(struct timer_list *t)
{ {
unsigned long flags; unsigned long flags;
struct AdapterCtlBlk *acb = (struct AdapterCtlBlk *)ptr; struct AdapterCtlBlk *acb = from_timer(acb, t, waiting_timer);
dprintkdbg(DBG_1, dprintkdbg(DBG_1,
"waiting_timeout: Queue woken up by timer. acb=%p\n", acb); "waiting_timeout: Queue woken up by timer. acb=%p\n", acb);
DC395x_LOCK_IO(acb->scsi_host, flags); DC395x_LOCK_IO(acb->scsi_host, flags);
...@@ -4366,8 +4363,8 @@ static void adapter_init_params(struct AdapterCtlBlk *acb) ...@@ -4366,8 +4363,8 @@ static void adapter_init_params(struct AdapterCtlBlk *acb)
INIT_LIST_HEAD(&acb->srb_free_list); INIT_LIST_HEAD(&acb->srb_free_list);
/* temp SRB for Q tag used or abort command used */ /* temp SRB for Q tag used or abort command used */
acb->tmp_srb = &acb->srb; acb->tmp_srb = &acb->srb;
init_timer(&acb->waiting_timer); timer_setup(&acb->waiting_timer, waiting_timeout, 0);
init_timer(&acb->selto_timer); timer_setup(&acb->selto_timer, NULL, 0);
acb->srb_count = DC395x_MAX_SRB_CNT; acb->srb_count = DC395x_MAX_SRB_CNT;
......
...@@ -754,7 +754,7 @@ static int fcoe_netdev_config(struct fc_lport *lport, struct net_device *netdev) ...@@ -754,7 +754,7 @@ static int fcoe_netdev_config(struct fc_lport *lport, struct net_device *netdev)
skb_queue_head_init(&port->fcoe_pending_queue); skb_queue_head_init(&port->fcoe_pending_queue);
port->fcoe_pending_queue_active = 0; port->fcoe_pending_queue_active = 0;
setup_timer(&port->timer, fcoe_queue_timer, (unsigned long)lport); timer_setup(&port->timer, fcoe_queue_timer, 0);
fcoe_link_speed_update(lport); fcoe_link_speed_update(lport);
......
...@@ -455,9 +455,11 @@ EXPORT_SYMBOL_GPL(fcoe_check_wait_queue); ...@@ -455,9 +455,11 @@ EXPORT_SYMBOL_GPL(fcoe_check_wait_queue);
* *
* Calls fcoe_check_wait_queue on timeout * Calls fcoe_check_wait_queue on timeout
*/ */
void fcoe_queue_timer(ulong lport) void fcoe_queue_timer(struct timer_list *t)
{ {
fcoe_check_wait_queue((struct fc_lport *)lport, NULL); struct fcoe_port *port = from_timer(port, t, timer);
fcoe_check_wait_queue(port->lport, NULL);
} }
EXPORT_SYMBOL_GPL(fcoe_queue_timer); EXPORT_SYMBOL_GPL(fcoe_queue_timer);
......
...@@ -3705,7 +3705,7 @@ static void gdth_log_event(gdth_evt_data *dvr, char *buffer) ...@@ -3705,7 +3705,7 @@ static void gdth_log_event(gdth_evt_data *dvr, char *buffer)
#ifdef GDTH_STATISTICS #ifdef GDTH_STATISTICS
static u8 gdth_timer_running; static u8 gdth_timer_running;
static void gdth_timeout(unsigned long data) static void gdth_timeout(struct timer_list *unused)
{ {
u32 i; u32 i;
Scsi_Cmnd *nscp; Scsi_Cmnd *nscp;
...@@ -3743,8 +3743,6 @@ static void gdth_timer_init(void) ...@@ -3743,8 +3743,6 @@ static void gdth_timer_init(void)
gdth_timer_running = 1; gdth_timer_running = 1;
TRACE2(("gdth_detect(): Initializing timer !\n")); TRACE2(("gdth_detect(): Initializing timer !\n"));
gdth_timer.expires = jiffies + HZ; gdth_timer.expires = jiffies + HZ;
gdth_timer.data = 0L;
gdth_timer.function = gdth_timeout;
add_timer(&gdth_timer); add_timer(&gdth_timer);
} }
#else #else
...@@ -5165,7 +5163,7 @@ static int __init gdth_init(void) ...@@ -5165,7 +5163,7 @@ static int __init gdth_init(void)
/* initializations */ /* initializations */
gdth_polling = TRUE; gdth_polling = TRUE;
gdth_clear_events(); gdth_clear_events();
init_timer(&gdth_timer); timer_setup(&gdth_timer, gdth_timeout, 0);
/* As default we do not probe for EISA or ISA controllers */ /* As default we do not probe for EISA or ISA controllers */
if (probe_eisa_isa) { if (probe_eisa_isa) {
......
...@@ -958,9 +958,9 @@ static enum sci_status sci_controller_start_next_phy(struct isci_host *ihost) ...@@ -958,9 +958,9 @@ static enum sci_status sci_controller_start_next_phy(struct isci_host *ihost)
return status; return status;
} }
static void phy_startup_timeout(unsigned long data) static void phy_startup_timeout(struct timer_list *t)
{ {
struct sci_timer *tmr = (struct sci_timer *)data; struct sci_timer *tmr = from_timer(tmr, t, timer);
struct isci_host *ihost = container_of(tmr, typeof(*ihost), phy_timer); struct isci_host *ihost = container_of(tmr, typeof(*ihost), phy_timer);
unsigned long flags; unsigned long flags;
enum sci_status status; enum sci_status status;
...@@ -1592,9 +1592,9 @@ static const struct sci_base_state sci_controller_state_table[] = { ...@@ -1592,9 +1592,9 @@ static const struct sci_base_state sci_controller_state_table[] = {
[SCIC_FAILED] = {} [SCIC_FAILED] = {}
}; };
static void controller_timeout(unsigned long data) static void controller_timeout(struct timer_list *t)
{ {
struct sci_timer *tmr = (struct sci_timer *)data; struct sci_timer *tmr = from_timer(tmr, t, timer);
struct isci_host *ihost = container_of(tmr, typeof(*ihost), timer); struct isci_host *ihost = container_of(tmr, typeof(*ihost), timer);
struct sci_base_state_machine *sm = &ihost->sm; struct sci_base_state_machine *sm = &ihost->sm;
unsigned long flags; unsigned long flags;
...@@ -1737,9 +1737,9 @@ static u8 max_spin_up(struct isci_host *ihost) ...@@ -1737,9 +1737,9 @@ static u8 max_spin_up(struct isci_host *ihost)
MAX_CONCURRENT_DEVICE_SPIN_UP_COUNT); MAX_CONCURRENT_DEVICE_SPIN_UP_COUNT);
} }
static void power_control_timeout(unsigned long data) static void power_control_timeout(struct timer_list *t)
{ {
struct sci_timer *tmr = (struct sci_timer *)data; struct sci_timer *tmr = from_timer(tmr, t, timer);
struct isci_host *ihost = container_of(tmr, typeof(*ihost), power_control.timer); struct isci_host *ihost = container_of(tmr, typeof(*ihost), power_control.timer);
struct isci_phy *iphy; struct isci_phy *iphy;
unsigned long flags; unsigned long flags;
......
...@@ -498,12 +498,10 @@ struct sci_timer { ...@@ -498,12 +498,10 @@ struct sci_timer {
}; };
static inline static inline
void sci_init_timer(struct sci_timer *tmr, void (*fn)(unsigned long)) void sci_init_timer(struct sci_timer *tmr, void (*fn)(struct timer_list *t))
{ {
tmr->timer.function = fn;
tmr->timer.data = (unsigned long) tmr;
tmr->cancel = 0; tmr->cancel = 0;
init_timer(&tmr->timer); timer_setup(&tmr->timer, fn, 0);
} }
static inline void sci_mod_timer(struct sci_timer *tmr, unsigned long msec) static inline void sci_mod_timer(struct sci_timer *tmr, unsigned long msec)
......
...@@ -315,9 +315,9 @@ sci_phy_link_layer_initialization(struct isci_phy *iphy, ...@@ -315,9 +315,9 @@ sci_phy_link_layer_initialization(struct isci_phy *iphy,
return SCI_SUCCESS; return SCI_SUCCESS;
} }
static void phy_sata_timeout(unsigned long data) static void phy_sata_timeout(struct timer_list *t)
{ {
struct sci_timer *tmr = (struct sci_timer *)data; struct sci_timer *tmr = from_timer(tmr, t, timer);
struct isci_phy *iphy = container_of(tmr, typeof(*iphy), sata_timer); struct isci_phy *iphy = container_of(tmr, typeof(*iphy), sata_timer);
struct isci_host *ihost = iphy->owning_port->owning_controller; struct isci_host *ihost = iphy->owning_port->owning_controller;
unsigned long flags; unsigned long flags;
......
...@@ -769,9 +769,9 @@ bool sci_port_link_detected(struct isci_port *iport, struct isci_phy *iphy) ...@@ -769,9 +769,9 @@ bool sci_port_link_detected(struct isci_port *iport, struct isci_phy *iphy)
return true; return true;
} }
static void port_timeout(unsigned long data) static void port_timeout(struct timer_list *t)
{ {
struct sci_timer *tmr = (struct sci_timer *)data; struct sci_timer *tmr = from_timer(tmr, t, timer);
struct isci_port *iport = container_of(tmr, typeof(*iport), timer); struct isci_port *iport = container_of(tmr, typeof(*iport), timer);
struct isci_host *ihost = iport->owning_controller; struct isci_host *ihost = iport->owning_controller;
unsigned long flags; unsigned long flags;
......
...@@ -319,10 +319,10 @@ sci_mpc_agent_validate_phy_configuration(struct isci_host *ihost, ...@@ -319,10 +319,10 @@ sci_mpc_agent_validate_phy_configuration(struct isci_host *ihost,
return sci_port_configuration_agent_validate_ports(ihost, port_agent); return sci_port_configuration_agent_validate_ports(ihost, port_agent);
} }
static void mpc_agent_timeout(unsigned long data) static void mpc_agent_timeout(struct timer_list *t)
{ {
u8 index; u8 index;
struct sci_timer *tmr = (struct sci_timer *)data; struct sci_timer *tmr = from_timer(tmr, t, timer);
struct sci_port_configuration_agent *port_agent; struct sci_port_configuration_agent *port_agent;
struct isci_host *ihost; struct isci_host *ihost;
unsigned long flags; unsigned long flags;
...@@ -654,10 +654,10 @@ static void sci_apc_agent_link_down( ...@@ -654,10 +654,10 @@ static void sci_apc_agent_link_down(
} }
/* configure the phys into ports when the timer fires */ /* configure the phys into ports when the timer fires */
static void apc_agent_timeout(unsigned long data) static void apc_agent_timeout(struct timer_list *t)
{ {
u32 index; u32 index;
struct sci_timer *tmr = (struct sci_timer *)data; struct sci_timer *tmr = from_timer(tmr, t, timer);
struct sci_port_configuration_agent *port_agent; struct sci_port_configuration_agent *port_agent;
struct isci_host *ihost; struct isci_host *ihost;
unsigned long flags; unsigned long flags;
......
...@@ -97,7 +97,7 @@ static void fc_fcp_complete_locked(struct fc_fcp_pkt *); ...@@ -97,7 +97,7 @@ static void fc_fcp_complete_locked(struct fc_fcp_pkt *);
static void fc_tm_done(struct fc_seq *, struct fc_frame *, void *); static void fc_tm_done(struct fc_seq *, struct fc_frame *, void *);
static void fc_fcp_error(struct fc_fcp_pkt *, struct fc_frame *); static void fc_fcp_error(struct fc_fcp_pkt *, struct fc_frame *);
static void fc_fcp_recovery(struct fc_fcp_pkt *, u8 code); static void fc_fcp_recovery(struct fc_fcp_pkt *, u8 code);
static void fc_fcp_timeout(unsigned long); static void fc_fcp_timeout(struct timer_list *);
static void fc_fcp_rec(struct fc_fcp_pkt *); static void fc_fcp_rec(struct fc_fcp_pkt *);
static void fc_fcp_rec_error(struct fc_fcp_pkt *, struct fc_frame *); static void fc_fcp_rec_error(struct fc_fcp_pkt *, struct fc_frame *);
static void fc_fcp_rec_resp(struct fc_seq *, struct fc_frame *, void *); static void fc_fcp_rec_resp(struct fc_seq *, struct fc_frame *, void *);
...@@ -155,8 +155,7 @@ static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp) ...@@ -155,8 +155,7 @@ static struct fc_fcp_pkt *fc_fcp_pkt_alloc(struct fc_lport *lport, gfp_t gfp)
fsp->lp = lport; fsp->lp = lport;
fsp->xfer_ddp = FC_XID_UNKNOWN; fsp->xfer_ddp = FC_XID_UNKNOWN;
refcount_set(&fsp->ref_cnt, 1); refcount_set(&fsp->ref_cnt, 1);
init_timer(&fsp->timer); timer_setup(&fsp->timer, NULL, 0);
fsp->timer.data = (unsigned long)fsp;
INIT_LIST_HEAD(&fsp->list); INIT_LIST_HEAD(&fsp->list);
spin_lock_init(&fsp->scsi_pkt_lock); spin_lock_init(&fsp->scsi_pkt_lock);
} else { } else {
...@@ -1215,7 +1214,7 @@ static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp, ...@@ -1215,7 +1214,7 @@ static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp,
fsp->seq_ptr = seq; fsp->seq_ptr = seq;
fc_fcp_pkt_hold(fsp); /* hold for fc_fcp_pkt_destroy */ fc_fcp_pkt_hold(fsp); /* hold for fc_fcp_pkt_destroy */
setup_timer(&fsp->timer, fc_fcp_timeout, (unsigned long)fsp); fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout;
if (rpriv->flags & FC_RP_FLAGS_REC_SUPPORTED) if (rpriv->flags & FC_RP_FLAGS_REC_SUPPORTED)
fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp)); fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
...@@ -1298,9 +1297,9 @@ static int fc_fcp_pkt_abort(struct fc_fcp_pkt *fsp) ...@@ -1298,9 +1297,9 @@ static int fc_fcp_pkt_abort(struct fc_fcp_pkt *fsp)
* fc_lun_reset_send() - Send LUN reset command * fc_lun_reset_send() - Send LUN reset command
* @data: The FCP packet that identifies the LUN to be reset * @data: The FCP packet that identifies the LUN to be reset
*/ */
static void fc_lun_reset_send(unsigned long data) static void fc_lun_reset_send(struct timer_list *t)
{ {
struct fc_fcp_pkt *fsp = (struct fc_fcp_pkt *)data; struct fc_fcp_pkt *fsp = from_timer(fsp, t, timer);
struct fc_lport *lport = fsp->lp; struct fc_lport *lport = fsp->lp;
if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) { if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) {
...@@ -1308,7 +1307,7 @@ static void fc_lun_reset_send(unsigned long data) ...@@ -1308,7 +1307,7 @@ static void fc_lun_reset_send(unsigned long data)
return; return;
if (fc_fcp_lock_pkt(fsp)) if (fc_fcp_lock_pkt(fsp))
return; return;
setup_timer(&fsp->timer, fc_lun_reset_send, (unsigned long)fsp); fsp->timer.function = (TIMER_FUNC_TYPE)fc_lun_reset_send;
fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp)); fc_fcp_timer_set(fsp, get_fsp_rec_tov(fsp));
fc_fcp_unlock_pkt(fsp); fc_fcp_unlock_pkt(fsp);
} }
...@@ -1334,7 +1333,7 @@ static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp, ...@@ -1334,7 +1333,7 @@ static int fc_lun_reset(struct fc_lport *lport, struct fc_fcp_pkt *fsp,
fsp->wait_for_comp = 1; fsp->wait_for_comp = 1;
init_completion(&fsp->tm_done); init_completion(&fsp->tm_done);
fc_lun_reset_send((unsigned long)fsp); fc_lun_reset_send(&fsp->timer);
/* /*
* wait for completion of reset * wait for completion of reset
...@@ -1431,9 +1430,9 @@ static void fc_fcp_cleanup(struct fc_lport *lport) ...@@ -1431,9 +1430,9 @@ static void fc_fcp_cleanup(struct fc_lport *lport)
* received we see if data was received recently. If it has been then we * received we see if data was received recently. If it has been then we
* continue waiting, otherwise, we abort the command. * continue waiting, otherwise, we abort the command.
*/ */
static void fc_fcp_timeout(unsigned long data) static void fc_fcp_timeout(struct timer_list *t)
{ {
struct fc_fcp_pkt *fsp = (struct fc_fcp_pkt *)data; struct fc_fcp_pkt *fsp = from_timer(fsp, t, timer);
struct fc_rport *rport = fsp->rport; struct fc_rport *rport = fsp->rport;
struct fc_rport_libfc_priv *rpriv = rport->dd_data; struct fc_rport_libfc_priv *rpriv = rport->dd_data;
...@@ -1446,7 +1445,7 @@ static void fc_fcp_timeout(unsigned long data) ...@@ -1446,7 +1445,7 @@ static void fc_fcp_timeout(unsigned long data)
if (fsp->lp->qfull) { if (fsp->lp->qfull) {
FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n", FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n",
fsp->timer_delay); fsp->timer_delay);
setup_timer(&fsp->timer, fc_fcp_timeout, (unsigned long)fsp); fsp->timer.function = (TIMER_FUNC_TYPE)fc_fcp_timeout;
fc_fcp_timer_set(fsp, fsp->timer_delay); fc_fcp_timer_set(fsp, fsp->timer_delay);
goto unlock; goto unlock;
} }
......
...@@ -1805,9 +1805,9 @@ int iscsi_target_alloc(struct scsi_target *starget) ...@@ -1805,9 +1805,9 @@ int iscsi_target_alloc(struct scsi_target *starget)
} }
EXPORT_SYMBOL_GPL(iscsi_target_alloc); EXPORT_SYMBOL_GPL(iscsi_target_alloc);
static void iscsi_tmf_timedout(unsigned long data) static void iscsi_tmf_timedout(struct timer_list *t)
{ {
struct iscsi_conn *conn = (struct iscsi_conn *)data; struct iscsi_conn *conn = from_timer(conn, t, tmf_timer);
struct iscsi_session *session = conn->session; struct iscsi_session *session = conn->session;
spin_lock(&session->frwd_lock); spin_lock(&session->frwd_lock);
...@@ -1838,8 +1838,6 @@ static int iscsi_exec_task_mgmt_fn(struct iscsi_conn *conn, ...@@ -1838,8 +1838,6 @@ static int iscsi_exec_task_mgmt_fn(struct iscsi_conn *conn,
} }
conn->tmfcmd_pdus_cnt++; conn->tmfcmd_pdus_cnt++;
conn->tmf_timer.expires = timeout * HZ + jiffies; conn->tmf_timer.expires = timeout * HZ + jiffies;
conn->tmf_timer.function = iscsi_tmf_timedout;
conn->tmf_timer.data = (unsigned long)conn;
add_timer(&conn->tmf_timer); add_timer(&conn->tmf_timer);
ISCSI_DBG_EH(session, "tmf set timeout\n"); ISCSI_DBG_EH(session, "tmf set timeout\n");
...@@ -2089,9 +2087,9 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc) ...@@ -2089,9 +2087,9 @@ enum blk_eh_timer_return iscsi_eh_cmd_timed_out(struct scsi_cmnd *sc)
} }
EXPORT_SYMBOL_GPL(iscsi_eh_cmd_timed_out); EXPORT_SYMBOL_GPL(iscsi_eh_cmd_timed_out);
static void iscsi_check_transport_timeouts(unsigned long data) static void iscsi_check_transport_timeouts(struct timer_list *t)
{ {
struct iscsi_conn *conn = (struct iscsi_conn *)data; struct iscsi_conn *conn = from_timer(conn, t, transport_timer);
struct iscsi_session *session = conn->session; struct iscsi_session *session = conn->session;
unsigned long recv_timeout, next_timeout = 0, last_recv; unsigned long recv_timeout, next_timeout = 0, last_recv;
...@@ -2913,9 +2911,7 @@ iscsi_conn_setup(struct iscsi_cls_session *cls_session, int dd_size, ...@@ -2913,9 +2911,7 @@ iscsi_conn_setup(struct iscsi_cls_session *cls_session, int dd_size,
conn->exp_statsn = 0; conn->exp_statsn = 0;
conn->tmf_state = TMF_INITIAL; conn->tmf_state = TMF_INITIAL;
init_timer(&conn->transport_timer); timer_setup(&conn->transport_timer, iscsi_check_transport_timeouts, 0);
conn->transport_timer.data = (unsigned long)conn;
conn->transport_timer.function = iscsi_check_transport_timeouts;
INIT_LIST_HEAD(&conn->mgmtqueue); INIT_LIST_HEAD(&conn->mgmtqueue);
INIT_LIST_HEAD(&conn->cmdqueue); INIT_LIST_HEAD(&conn->cmdqueue);
...@@ -2939,7 +2935,7 @@ iscsi_conn_setup(struct iscsi_cls_session *cls_session, int dd_size, ...@@ -2939,7 +2935,7 @@ iscsi_conn_setup(struct iscsi_cls_session *cls_session, int dd_size,
goto login_task_data_alloc_fail; goto login_task_data_alloc_fail;
conn->login_task->data = conn->data = data; conn->login_task->data = conn->data = data;
init_timer(&conn->tmf_timer); timer_setup(&conn->tmf_timer, iscsi_tmf_timedout, 0);
init_waitqueue_head(&conn->ehwait); init_waitqueue_head(&conn->ehwait);
return cls_conn; return cls_conn;
......
...@@ -2860,11 +2860,12 @@ static void pqi_event_worker(struct work_struct *work) ...@@ -2860,11 +2860,12 @@ static void pqi_event_worker(struct work_struct *work)
#define PQI_HEARTBEAT_TIMER_INTERVAL (10 * HZ) #define PQI_HEARTBEAT_TIMER_INTERVAL (10 * HZ)
static void pqi_heartbeat_timer_handler(unsigned long data) static void pqi_heartbeat_timer_handler(struct timer_list *t)
{ {
int num_interrupts; int num_interrupts;
u32 heartbeat_count; u32 heartbeat_count;
struct pqi_ctrl_info *ctrl_info = (struct pqi_ctrl_info *)data; struct pqi_ctrl_info *ctrl_info = from_timer(ctrl_info, t,
heartbeat_timer);
pqi_check_ctrl_health(ctrl_info); pqi_check_ctrl_health(ctrl_info);
if (pqi_ctrl_offline(ctrl_info)) if (pqi_ctrl_offline(ctrl_info))
...@@ -2902,8 +2903,6 @@ static void pqi_start_heartbeat_timer(struct pqi_ctrl_info *ctrl_info) ...@@ -2902,8 +2903,6 @@ static void pqi_start_heartbeat_timer(struct pqi_ctrl_info *ctrl_info)
ctrl_info->heartbeat_timer.expires = ctrl_info->heartbeat_timer.expires =
jiffies + PQI_HEARTBEAT_TIMER_INTERVAL; jiffies + PQI_HEARTBEAT_TIMER_INTERVAL;
ctrl_info->heartbeat_timer.data = (unsigned long)ctrl_info;
ctrl_info->heartbeat_timer.function = pqi_heartbeat_timer_handler;
add_timer(&ctrl_info->heartbeat_timer); add_timer(&ctrl_info->heartbeat_timer);
} }
...@@ -6465,7 +6464,7 @@ static struct pqi_ctrl_info *pqi_alloc_ctrl_info(int numa_node) ...@@ -6465,7 +6464,7 @@ static struct pqi_ctrl_info *pqi_alloc_ctrl_info(int numa_node)
INIT_DELAYED_WORK(&ctrl_info->rescan_work, pqi_rescan_worker); INIT_DELAYED_WORK(&ctrl_info->rescan_work, pqi_rescan_worker);
INIT_DELAYED_WORK(&ctrl_info->update_time_work, pqi_update_time_worker); INIT_DELAYED_WORK(&ctrl_info->update_time_work, pqi_update_time_worker);
init_timer(&ctrl_info->heartbeat_timer); timer_setup(&ctrl_info->heartbeat_timer, pqi_heartbeat_timer_handler, 0);
INIT_WORK(&ctrl_info->ctrl_offline_work, pqi_ctrl_offline_worker); INIT_WORK(&ctrl_info->ctrl_offline_work, pqi_ctrl_offline_worker);
sema_init(&ctrl_info->sync_request_sem, sema_init(&ctrl_info->sync_request_sem,
......
...@@ -382,7 +382,7 @@ static inline struct net_device *fcoe_get_netdev(const struct fc_lport *lport) ...@@ -382,7 +382,7 @@ static inline struct net_device *fcoe_get_netdev(const struct fc_lport *lport)
void fcoe_clean_pending_queue(struct fc_lport *); void fcoe_clean_pending_queue(struct fc_lport *);
void fcoe_check_wait_queue(struct fc_lport *lport, struct sk_buff *skb); void fcoe_check_wait_queue(struct fc_lport *lport, struct sk_buff *skb);
void fcoe_queue_timer(ulong lport); void fcoe_queue_timer(struct timer_list *t);
int fcoe_get_paged_crc_eof(struct sk_buff *skb, int tlen, int fcoe_get_paged_crc_eof(struct sk_buff *skb, int tlen,
struct fcoe_percpu_s *fps); struct fcoe_percpu_s *fps);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册