|
@@ -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_fcp_error(struct fc_fcp_pkt *, struct fc_frame *);
|
|
|
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_error(struct fc_fcp_pkt *, struct fc_frame *);
|
|
|
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)
|
|
|
fsp->lp = lport;
|
|
|
fsp->xfer_ddp = FC_XID_UNKNOWN;
|
|
|
refcount_set(&fsp->ref_cnt, 1);
|
|
|
- init_timer(&fsp->timer);
|
|
|
- fsp->timer.data = (unsigned long)fsp;
|
|
|
+ timer_setup(&fsp->timer, NULL, 0);
|
|
|
INIT_LIST_HEAD(&fsp->list);
|
|
|
spin_lock_init(&fsp->scsi_pkt_lock);
|
|
|
} else {
|
|
@@ -1215,7 +1214,7 @@ static int fc_fcp_cmd_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp,
|
|
|
fsp->seq_ptr = seq;
|
|
|
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)
|
|
|
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)
|
|
|
* fc_lun_reset_send() - Send LUN reset command
|
|
|
* @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;
|
|
|
|
|
|
if (lport->tt.fcp_cmd_send(lport, fsp, fc_tm_done)) {
|
|
@@ -1308,7 +1307,7 @@ static void fc_lun_reset_send(unsigned long data)
|
|
|
return;
|
|
|
if (fc_fcp_lock_pkt(fsp))
|
|
|
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_unlock_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;
|
|
|
init_completion(&fsp->tm_done);
|
|
|
|
|
|
- fc_lun_reset_send((unsigned long)fsp);
|
|
|
+ fc_lun_reset_send(&fsp->timer);
|
|
|
|
|
|
/*
|
|
|
* wait for completion of reset
|
|
@@ -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
|
|
|
* 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_libfc_priv *rpriv = rport->dd_data;
|
|
|
|
|
@@ -1446,7 +1445,7 @@ static void fc_fcp_timeout(unsigned long data)
|
|
|
if (fsp->lp->qfull) {
|
|
|
FC_FCP_DBG(fsp, "fcp timeout, resetting timer delay %d\n",
|
|
|
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);
|
|
|
goto unlock;
|
|
|
}
|