mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-21 05:14:52 +08:00
Second batch of scsi conversions that have been Reviewed and/or Acked.
Various *_on_stack() changes for USB, Acked by Greg. DRM conversion that was declared too late for drm's tree, but Acked for timers. RAS driver conversion, Acked. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 Comment: Kees Cook <kees@outflux.net> iQIcBAABCgAGBQJZ+hl1AAoJEIly9N/cbcAmQwAP/3IKvgVCmbzsiEr8ZFygPosj ulNm1Zm0nb7LpGS+HixTjV3pbGaOfBBNvbLNjdQfEAZiqTUp426Qr1KP2XGrGEOP qlp2UN+fMRk2RZ8laSUMx55GOR9zAN53o5vuwF63CNrLpRbDOcaBJ6LQNtgT+z7u EcOSGBB+ZFrLC5oyu3kYQYF2JiBf3XHBI4UxjUqzQpQ5d2jMWghWHdbIJ/j5DORN OPOOCuoBfWrOLm/q5ftE/eFVyHjvtNNSTH/+Gm+jklO7mTHXkU96ZIGXcG7v6xu+ 3Kd77qZ5vuboVSLda3ZLCMbWstO5HwT6T371io6WHz5t6dKBY/lwkJIjVjabAWcM X2A4V472yxTWmdXZAv9cGpqv+hUlgf52DVLztSDIKdezMKXZhO5zqZhtm6prfQhP LHUZamfjr2kTCxUIec6hFXXNB7mn/E8HDDEwvfy1EXhdDKdG9kk3IE+Rk/ZaOEh7 L1jwIJWzlZ6D65Yq20tnw5Rn43agTiSyEirq4Vqe34RQU8HrcBevwHQbpAZOLRaa lFr14bW6TPzdmdWCuBLsLxstxFqfpxaEJixgv53g1LUHqlkmT6ne6bpl58tEZOBO Q6sByXJH1jiV6kx8b7Om3Srz7j6QJIbgyYs3Pe5ApaWzcjvo82w3p+asB8MOiTuk SSB8Xczsl5dMgOAowrFw =1B4p -----END PGP SIGNATURE----- Merge tag 'timers-conversion-next2' of https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux into timers/core Pull the next batch of timer conversions from Kees Cook: - Second batch of scsi conversions that have been Reviewed and/or Acked. - Various *_on_stack() changes for USB, Acked by Greg. - DRM conversion that was declared too late for drm's tree, but Acked for timers. - RAS driver conversion, Acked.
This commit is contained in:
commit
da2963e8fc
@ -23,9 +23,9 @@
|
||||
#include "psb_intel_reg.h"
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
static void psb_lid_timer_func(unsigned long data)
|
||||
static void psb_lid_timer_func(struct timer_list *t)
|
||||
{
|
||||
struct drm_psb_private * dev_priv = (struct drm_psb_private *)data;
|
||||
struct drm_psb_private *dev_priv = from_timer(dev_priv, t, lid_timer);
|
||||
struct drm_device *dev = (struct drm_device *)dev_priv->dev;
|
||||
struct timer_list *lid_timer = &dev_priv->lid_timer;
|
||||
unsigned long irq_flags;
|
||||
@ -77,10 +77,8 @@ void psb_lid_timer_init(struct drm_psb_private *dev_priv)
|
||||
spin_lock_init(&dev_priv->lid_lock);
|
||||
spin_lock_irqsave(&dev_priv->lid_lock, irq_flags);
|
||||
|
||||
init_timer(lid_timer);
|
||||
timer_setup(lid_timer, psb_lid_timer_func, 0);
|
||||
|
||||
lid_timer->data = (unsigned long)dev_priv;
|
||||
lid_timer->function = psb_lid_timer_func;
|
||||
lid_timer->expires = jiffies + PSB_LID_DELAY;
|
||||
|
||||
add_timer(lid_timer);
|
||||
|
@ -168,11 +168,9 @@ static void cec_mod_timer(struct timer_list *t, unsigned long interval)
|
||||
mod_timer(t, round_jiffies(iv));
|
||||
}
|
||||
|
||||
static void cec_timer_fn(unsigned long data)
|
||||
static void cec_timer_fn(struct timer_list *unused)
|
||||
{
|
||||
struct ce_array *ca = (struct ce_array *)data;
|
||||
|
||||
do_spring_cleaning(ca);
|
||||
do_spring_cleaning(&ce_arr);
|
||||
|
||||
cec_mod_timer(&cec_timer, timer_interval);
|
||||
}
|
||||
@ -509,7 +507,7 @@ void __init cec_init(void)
|
||||
if (create_debugfs_nodes())
|
||||
return;
|
||||
|
||||
setup_timer(&cec_timer, cec_timer_fn, (unsigned long)&ce_arr);
|
||||
timer_setup(&cec_timer, cec_timer_fn, 0);
|
||||
cec_mod_timer(&cec_timer, CEC_TIMER_DEFAULT_INTERVAL);
|
||||
|
||||
pr_info("Correctable Errors collector initialized.\n");
|
||||
|
@ -1046,8 +1046,6 @@ typedef enum {
|
||||
|
||||
typedef uint8_t ahd_mode_state;
|
||||
|
||||
typedef void ahd_callback_t (void *);
|
||||
|
||||
struct ahd_completion
|
||||
{
|
||||
uint16_t tag;
|
||||
@ -1122,8 +1120,7 @@ struct ahd_softc {
|
||||
/*
|
||||
* Timer handles for timer driven callbacks.
|
||||
*/
|
||||
ahd_timer_t reset_timer;
|
||||
ahd_timer_t stat_timer;
|
||||
struct timer_list stat_timer;
|
||||
|
||||
/*
|
||||
* Statistics.
|
||||
|
@ -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,
|
||||
u_int prev, u_int next, u_int tid);
|
||||
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
|
||||
static void ahd_dumpseq(struct ahd_softc *ahd);
|
||||
#endif
|
||||
@ -6104,8 +6104,7 @@ ahd_alloc(void *platform_arg, char *name)
|
||||
ahd->bugs = AHD_BUGNONE;
|
||||
ahd->flags = AHD_SPCHK_ENB_A|AHD_RESET_BUS_A|AHD_TERM_ENB_A
|
||||
| AHD_EXTENDED_TRANS_A|AHD_STPWLEVEL_A;
|
||||
ahd_timer_init(&ahd->reset_timer);
|
||||
ahd_timer_init(&ahd->stat_timer);
|
||||
timer_setup(&ahd->stat_timer, ahd_stat_timer, 0);
|
||||
ahd->int_coalescing_timer = AHD_INT_COALESCING_TIMER_DEFAULT;
|
||||
ahd->int_coalescing_maxcmds = AHD_INT_COALESCING_MAXCMDS_DEFAULT;
|
||||
ahd->int_coalescing_mincmds = AHD_INT_COALESCING_MINCMDS_DEFAULT;
|
||||
@ -6235,8 +6234,7 @@ ahd_shutdown(void *arg)
|
||||
/*
|
||||
* Stop periodic timer callbacks.
|
||||
*/
|
||||
ahd_timer_stop(&ahd->reset_timer);
|
||||
ahd_timer_stop(&ahd->stat_timer);
|
||||
del_timer_sync(&ahd->stat_timer);
|
||||
|
||||
/* This will reset most registers to 0, but not all */
|
||||
ahd_reset(ahd, /*reinit*/FALSE);
|
||||
@ -7039,20 +7037,11 @@ static const char *termstat_strings[] = {
|
||||
};
|
||||
|
||||
/***************************** 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
|
||||
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);
|
||||
timer->data = (u_long)arg;
|
||||
timer->expires = jiffies + (usec * HZ)/1000000;
|
||||
timer->function = (ahd_linux_callback_t*)func;
|
||||
add_timer(timer);
|
||||
}
|
||||
|
||||
@ -7279,8 +7268,7 @@ ahd_init(struct ahd_softc *ahd)
|
||||
}
|
||||
init_done:
|
||||
ahd_restart(ahd);
|
||||
ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US,
|
||||
ahd_stat_timer, ahd);
|
||||
ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -8878,9 +8866,9 @@ ahd_reset_channel(struct ahd_softc *ahd, char channel, int initiate_reset)
|
||||
|
||||
/**************************** Statistics Processing ***************************/
|
||||
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;
|
||||
int enint_coal;
|
||||
|
||||
@ -8907,8 +8895,7 @@ ahd_stat_timer(void *arg)
|
||||
ahd->cmdcmplt_bucket = (ahd->cmdcmplt_bucket+1) & (AHD_STAT_BUCKETS-1);
|
||||
ahd->cmdcmplt_total -= ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket];
|
||||
ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket] = 0;
|
||||
ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US,
|
||||
ahd_stat_timer, ahd);
|
||||
ahd_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US);
|
||||
ahd_unlock(ahd, &s);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
||||
/************************** Timer DataStructures ******************************/
|
||||
typedef struct timer_list ahd_timer_t;
|
||||
|
||||
/********************************** Includes **********************************/
|
||||
#ifdef CONFIG_AIC79XX_REG_PRETTY_PRINT
|
||||
#define AIC_DEBUG_REGISTERS 1
|
||||
@ -214,10 +211,6 @@ typedef struct timer_list ahd_timer_t;
|
||||
#endif
|
||||
#include "aic79xx.h"
|
||||
|
||||
/***************************** Timer Facilities *******************************/
|
||||
#define ahd_timer_init init_timer
|
||||
#define ahd_timer_stop del_timer_sync
|
||||
|
||||
/***************************** SMP support ************************************/
|
||||
#include <linux/spinlock.h>
|
||||
|
||||
|
@ -3347,9 +3347,10 @@ csio_mberr_worker(void *data)
|
||||
*
|
||||
**/
|
||||
static void
|
||||
csio_hw_mb_timer(uintptr_t data)
|
||||
csio_hw_mb_timer(struct timer_list *t)
|
||||
{
|
||||
struct csio_hw *hw = (struct csio_hw *)data;
|
||||
struct csio_mbm *mbm = from_timer(mbm, t, timer);
|
||||
struct csio_hw *hw = mbm->hw;
|
||||
struct csio_mb *mbp = NULL;
|
||||
|
||||
spin_lock_irq(&hw->lock);
|
||||
@ -3715,9 +3716,9 @@ csio_mgmt_req_lookup(struct csio_mgmtm *mgmtm, struct csio_ioreq *io_req)
|
||||
* Return - none.
|
||||
*/
|
||||
static void
|
||||
csio_mgmt_tmo_handler(uintptr_t data)
|
||||
csio_mgmt_tmo_handler(struct timer_list *t)
|
||||
{
|
||||
struct csio_mgmtm *mgmtm = (struct csio_mgmtm *) data;
|
||||
struct csio_mgmtm *mgmtm = from_timer(mgmtm, t, mgmt_timer);
|
||||
struct list_head *tmp;
|
||||
struct csio_ioreq *io_req;
|
||||
|
||||
@ -3797,11 +3798,7 @@ csio_mgmtm_cleanup(struct csio_mgmtm *mgmtm)
|
||||
static int
|
||||
csio_mgmtm_init(struct csio_mgmtm *mgmtm, struct csio_hw *hw)
|
||||
{
|
||||
struct timer_list *timer = &mgmtm->mgmt_timer;
|
||||
|
||||
init_timer(timer);
|
||||
timer->function = csio_mgmt_tmo_handler;
|
||||
timer->data = (unsigned long)mgmtm;
|
||||
timer_setup(&mgmtm->mgmt_timer, csio_mgmt_tmo_handler, 0);
|
||||
|
||||
INIT_LIST_HEAD(&mgmtm->active_q);
|
||||
INIT_LIST_HEAD(&mgmtm->cbfn_q);
|
||||
|
@ -1644,13 +1644,10 @@ csio_mb_cancel_all(struct csio_hw *hw, struct list_head *cbfn_q)
|
||||
*/
|
||||
int
|
||||
csio_mbm_init(struct csio_mbm *mbm, struct csio_hw *hw,
|
||||
void (*timer_fn)(uintptr_t))
|
||||
void (*timer_fn)(struct timer_list *))
|
||||
{
|
||||
struct timer_list *timer = &mbm->timer;
|
||||
|
||||
init_timer(timer);
|
||||
timer->function = timer_fn;
|
||||
timer->data = (unsigned long)hw;
|
||||
mbm->hw = hw;
|
||||
timer_setup(&mbm->timer, timer_fn, 0);
|
||||
|
||||
INIT_LIST_HEAD(&mbm->req_q);
|
||||
INIT_LIST_HEAD(&mbm->cbfn_q);
|
||||
|
@ -137,6 +137,7 @@ struct csio_mbm {
|
||||
uint32_t a_mbox; /* Async mbox num */
|
||||
uint32_t intr_idx; /* Interrupt index */
|
||||
struct timer_list timer; /* Mbox timer */
|
||||
struct csio_hw *hw; /* Hardware pointer */
|
||||
struct list_head req_q; /* Mbox request queue */
|
||||
struct list_head cbfn_q; /* Mbox completion q */
|
||||
struct csio_mb *mcurrent; /* Current mailbox */
|
||||
@ -252,7 +253,7 @@ void csio_mb_process_portparams_rsp(struct csio_hw *hw, struct csio_mb *mbp,
|
||||
|
||||
/* MB module functions */
|
||||
int csio_mbm_init(struct csio_mbm *, struct csio_hw *,
|
||||
void (*)(uintptr_t));
|
||||
void (*)(struct timer_list *));
|
||||
void csio_mbm_exit(struct csio_mbm *);
|
||||
void csio_mb_intr_enable(struct csio_hw *);
|
||||
void csio_mb_intr_disable(struct csio_hw *);
|
||||
|
@ -545,10 +545,10 @@ static int act_open_rpl_status_to_errno(int status)
|
||||
}
|
||||
}
|
||||
|
||||
static void act_open_retry_timer(unsigned long data)
|
||||
static void act_open_retry_timer(struct timer_list *t)
|
||||
{
|
||||
struct cxgbi_sock *csk = from_timer(csk, t, retry_timer);
|
||||
struct sk_buff *skb;
|
||||
struct cxgbi_sock *csk = (struct cxgbi_sock *)data;
|
||||
|
||||
log_debug(1 << CXGBI_DBG_TOE | 1 << CXGBI_DBG_SOCK,
|
||||
"csk 0x%p,%u,0x%lx,%u.\n",
|
||||
@ -586,8 +586,8 @@ static int do_act_open_rpl(struct t3cdev *tdev, struct sk_buff *skb, void *ctx)
|
||||
cxgbi_sock_get(csk);
|
||||
spin_lock_bh(&csk->lock);
|
||||
if (rpl->status == CPL_ERR_CONN_EXIST &&
|
||||
csk->retry_timer.function != act_open_retry_timer) {
|
||||
csk->retry_timer.function = act_open_retry_timer;
|
||||
csk->retry_timer.function != (TIMER_FUNC_TYPE)act_open_retry_timer) {
|
||||
csk->retry_timer.function = (TIMER_FUNC_TYPE)act_open_retry_timer;
|
||||
mod_timer(&csk->retry_timer, jiffies + HZ / 2);
|
||||
} else
|
||||
cxgbi_sock_fail_act_open(csk,
|
||||
|
@ -872,10 +872,10 @@ static int act_open_rpl_status_to_errno(int status)
|
||||
}
|
||||
}
|
||||
|
||||
static void csk_act_open_retry_timer(unsigned long data)
|
||||
static void csk_act_open_retry_timer(struct timer_list *t)
|
||||
{
|
||||
struct sk_buff *skb = NULL;
|
||||
struct cxgbi_sock *csk = (struct cxgbi_sock *)data;
|
||||
struct cxgbi_sock *csk = from_timer(csk, t, retry_timer);
|
||||
struct cxgb4_lld_info *lldi = cxgbi_cdev_priv(csk->cdev);
|
||||
void (*send_act_open_func)(struct cxgbi_sock *, struct sk_buff *,
|
||||
struct l2t_entry *);
|
||||
@ -963,8 +963,8 @@ static void do_act_open_rpl(struct cxgbi_device *cdev, struct sk_buff *skb)
|
||||
spin_lock_bh(&csk->lock);
|
||||
|
||||
if (status == CPL_ERR_CONN_EXIST &&
|
||||
csk->retry_timer.function != csk_act_open_retry_timer) {
|
||||
csk->retry_timer.function = csk_act_open_retry_timer;
|
||||
csk->retry_timer.function != (TIMER_FUNC_TYPE)csk_act_open_retry_timer) {
|
||||
csk->retry_timer.function = (TIMER_FUNC_TYPE)csk_act_open_retry_timer;
|
||||
mod_timer(&csk->retry_timer, jiffies + HZ / 2);
|
||||
} else
|
||||
cxgbi_sock_fail_act_open(csk,
|
||||
|
@ -572,7 +572,7 @@ static struct cxgbi_sock *cxgbi_sock_create(struct cxgbi_device *cdev)
|
||||
kref_init(&csk->refcnt);
|
||||
skb_queue_head_init(&csk->receive_queue);
|
||||
skb_queue_head_init(&csk->write_queue);
|
||||
setup_timer(&csk->retry_timer, NULL, (unsigned long)csk);
|
||||
timer_setup(&csk->retry_timer, NULL, 0);
|
||||
rwlock_init(&csk->callback_lock);
|
||||
csk->cdev = cdev;
|
||||
csk->flags = 0;
|
||||
|
@ -103,7 +103,6 @@ struct hisi_sas_phy {
|
||||
struct hisi_sas_port *port;
|
||||
struct asd_sas_phy sas_phy;
|
||||
struct sas_identify identify;
|
||||
struct timer_list timer;
|
||||
struct work_struct phyup_ws;
|
||||
u64 port_id; /* from hw */
|
||||
u64 dev_sas_addr;
|
||||
|
@ -627,7 +627,6 @@ static void hisi_sas_phy_init(struct hisi_hba *hisi_hba, int phy_no)
|
||||
|
||||
phy->hisi_hba = hisi_hba;
|
||||
phy->port = NULL;
|
||||
init_timer(&phy->timer);
|
||||
sas_phy->enabled = (phy_no < hisi_hba->n_phy) ? 1 : 0;
|
||||
sas_phy->class = SAS;
|
||||
sas_phy->iproto = SAS_PROTOCOL_ALL;
|
||||
@ -792,9 +791,10 @@ static void hisi_sas_task_done(struct sas_task *task)
|
||||
complete(&task->slow_task->completion);
|
||||
}
|
||||
|
||||
static void hisi_sas_tmf_timedout(unsigned long data)
|
||||
static void hisi_sas_tmf_timedout(struct timer_list *t)
|
||||
{
|
||||
struct sas_task *task = (struct sas_task *)data;
|
||||
struct sas_task_slow *slow = from_timer(slow, t, timer);
|
||||
struct sas_task *task = slow->task;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&task->task_state_lock, flags);
|
||||
@ -833,8 +833,7 @@ static int hisi_sas_exec_internal_tmf_task(struct domain_device *device,
|
||||
}
|
||||
task->task_done = hisi_sas_task_done;
|
||||
|
||||
task->slow_task->timer.data = (unsigned long) task;
|
||||
task->slow_task->timer.function = hisi_sas_tmf_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)hisi_sas_tmf_timedout;
|
||||
task->slow_task->timer.expires = jiffies + TASK_TIMEOUT*HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
@ -1447,8 +1446,7 @@ hisi_sas_internal_task_abort(struct hisi_hba *hisi_hba,
|
||||
task->dev = device;
|
||||
task->task_proto = device->tproto;
|
||||
task->task_done = hisi_sas_task_done;
|
||||
task->slow_task->timer.data = (unsigned long)task;
|
||||
task->slow_task->timer.function = hisi_sas_tmf_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)hisi_sas_tmf_timedout;
|
||||
task->slow_task->timer.expires = jiffies + msecs_to_jiffies(110);
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
@ -1877,7 +1875,7 @@ static struct Scsi_Host *hisi_sas_shost_alloc(struct platform_device *pdev,
|
||||
hisi_hba->shost = shost;
|
||||
SHOST_TO_SAS_HA(shost) = &hisi_hba->sha;
|
||||
|
||||
init_timer(&hisi_hba->timer);
|
||||
timer_setup(&hisi_hba->timer, NULL, 0);
|
||||
|
||||
if (hisi_sas_get_fw_info(hisi_hba) < 0)
|
||||
goto err_out;
|
||||
|
@ -807,9 +807,9 @@ static void phy_hard_reset_v1_hw(struct hisi_hba *hisi_hba, int phy_no)
|
||||
start_phy_v1_hw(hisi_hba, phy_no);
|
||||
}
|
||||
|
||||
static void start_phys_v1_hw(unsigned long data)
|
||||
static void start_phys_v1_hw(struct timer_list *t)
|
||||
{
|
||||
struct hisi_hba *hisi_hba = (struct hisi_hba *)data;
|
||||
struct hisi_hba *hisi_hba = from_timer(hisi_hba, t, timer);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < hisi_hba->n_phy; i++) {
|
||||
@ -828,7 +828,7 @@ static void phys_init_v1_hw(struct hisi_hba *hisi_hba)
|
||||
hisi_sas_phy_read32(hisi_hba, i, CHL_INT2_MSK);
|
||||
}
|
||||
|
||||
setup_timer(timer, start_phys_v1_hw, (unsigned long)hisi_hba);
|
||||
timer_setup(timer, start_phys_v1_hw, 0);
|
||||
mod_timer(timer, jiffies + HZ);
|
||||
}
|
||||
|
||||
|
@ -728,7 +728,7 @@ enum {
|
||||
#define ERR_ON_RX_PHASE(err_phase) (err_phase == 0x10 || \
|
||||
err_phase == 0x20 || err_phase == 0x40)
|
||||
|
||||
static void link_timeout_disable_link(unsigned long data);
|
||||
static void link_timeout_disable_link(struct timer_list *t);
|
||||
|
||||
static u32 hisi_sas_read32(struct hisi_hba *hisi_hba, u32 off)
|
||||
{
|
||||
@ -1270,9 +1270,9 @@ static void init_reg_v2_hw(struct hisi_hba *hisi_hba)
|
||||
upper_32_bits(hisi_hba->initial_fis_dma));
|
||||
}
|
||||
|
||||
static void link_timeout_enable_link(unsigned long data)
|
||||
static void link_timeout_enable_link(struct timer_list *t)
|
||||
{
|
||||
struct hisi_hba *hisi_hba = (struct hisi_hba *)data;
|
||||
struct hisi_hba *hisi_hba = from_timer(hisi_hba, t, timer);
|
||||
int i, reg_val;
|
||||
|
||||
for (i = 0; i < hisi_hba->n_phy; i++) {
|
||||
@ -1287,13 +1287,13 @@ static void link_timeout_enable_link(unsigned long data)
|
||||
}
|
||||
}
|
||||
|
||||
hisi_hba->timer.function = link_timeout_disable_link;
|
||||
hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_disable_link;
|
||||
mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(900));
|
||||
}
|
||||
|
||||
static void link_timeout_disable_link(unsigned long data)
|
||||
static void link_timeout_disable_link(struct timer_list *t)
|
||||
{
|
||||
struct hisi_hba *hisi_hba = (struct hisi_hba *)data;
|
||||
struct hisi_hba *hisi_hba = from_timer(hisi_hba, t, timer);
|
||||
int i, reg_val;
|
||||
|
||||
reg_val = hisi_sas_read32(hisi_hba, PHY_STATE);
|
||||
@ -1308,14 +1308,13 @@ static void link_timeout_disable_link(unsigned long data)
|
||||
}
|
||||
}
|
||||
|
||||
hisi_hba->timer.function = link_timeout_enable_link;
|
||||
hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_enable_link;
|
||||
mod_timer(&hisi_hba->timer, jiffies + msecs_to_jiffies(100));
|
||||
}
|
||||
|
||||
static void set_link_timer_quirk(struct hisi_hba *hisi_hba)
|
||||
{
|
||||
hisi_hba->timer.data = (unsigned long)hisi_hba;
|
||||
hisi_hba->timer.function = link_timeout_disable_link;
|
||||
hisi_hba->timer.function = (TIMER_FUNC_TYPE)link_timeout_disable_link;
|
||||
hisi_hba->timer.expires = jiffies + msecs_to_jiffies(1000);
|
||||
add_timer(&hisi_hba->timer);
|
||||
}
|
||||
@ -2574,9 +2573,9 @@ static int prep_ata_v2_hw(struct hisi_hba *hisi_hba,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void hisi_sas_internal_abort_quirk_timeout(unsigned long data)
|
||||
static void hisi_sas_internal_abort_quirk_timeout(struct timer_list *t)
|
||||
{
|
||||
struct hisi_sas_slot *slot = (struct hisi_sas_slot *)data;
|
||||
struct hisi_sas_slot *slot = from_timer(slot, t, internal_abort_timer);
|
||||
struct hisi_sas_port *port = slot->port;
|
||||
struct asd_sas_port *asd_sas_port;
|
||||
struct asd_sas_phy *sas_phy;
|
||||
@ -2619,8 +2618,7 @@ static int prep_abort_v2_hw(struct hisi_hba *hisi_hba,
|
||||
struct timer_list *timer = &slot->internal_abort_timer;
|
||||
|
||||
/* setup the quirk timer */
|
||||
setup_timer(timer, hisi_sas_internal_abort_quirk_timeout,
|
||||
(unsigned long)slot);
|
||||
timer_setup(timer, hisi_sas_internal_abort_quirk_timeout, 0);
|
||||
/* Set the timeout to 10ms less than internal abort timeout */
|
||||
mod_timer(timer, jiffies + msecs_to_jiffies(100));
|
||||
|
||||
|
@ -1823,7 +1823,7 @@ hisi_sas_shost_alloc_pci(struct pci_dev *pdev)
|
||||
hisi_hba->shost = shost;
|
||||
SHOST_TO_SAS_HA(shost) = &hisi_hba->sha;
|
||||
|
||||
init_timer(&hisi_hba->timer);
|
||||
timer_setup(&hisi_hba->timer, NULL, 0);
|
||||
|
||||
if (hisi_sas_get_fw_info(hisi_hba) < 0)
|
||||
goto err_out;
|
||||
|
@ -1393,8 +1393,9 @@ static int ibmvfc_map_sg_data(struct scsi_cmnd *scmd,
|
||||
*
|
||||
* Called when an internally generated command times out
|
||||
**/
|
||||
static void ibmvfc_timeout(struct ibmvfc_event *evt)
|
||||
static void ibmvfc_timeout(struct timer_list *t)
|
||||
{
|
||||
struct ibmvfc_event *evt = from_timer(evt, t, timer);
|
||||
struct ibmvfc_host *vhost = evt->vhost;
|
||||
dev_err(vhost->dev, "Command timed out (%p). Resetting connection\n", evt);
|
||||
ibmvfc_reset_host(vhost);
|
||||
@ -1424,12 +1425,10 @@ static int ibmvfc_send_event(struct ibmvfc_event *evt,
|
||||
BUG();
|
||||
|
||||
list_add_tail(&evt->queue, &vhost->sent);
|
||||
init_timer(&evt->timer);
|
||||
timer_setup(&evt->timer, ibmvfc_timeout, 0);
|
||||
|
||||
if (timeout) {
|
||||
evt->timer.data = (unsigned long) evt;
|
||||
evt->timer.expires = jiffies + (timeout * HZ);
|
||||
evt->timer.function = (void (*)(unsigned long))ibmvfc_timeout;
|
||||
add_timer(&evt->timer);
|
||||
}
|
||||
|
||||
@ -3692,8 +3691,9 @@ static void ibmvfc_tgt_adisc_cancel_done(struct ibmvfc_event *evt)
|
||||
* out, reset the CRQ. When the ADISC comes back as cancelled,
|
||||
* log back into the target.
|
||||
**/
|
||||
static void ibmvfc_adisc_timeout(struct ibmvfc_target *tgt)
|
||||
static void ibmvfc_adisc_timeout(struct timer_list *t)
|
||||
{
|
||||
struct ibmvfc_target *tgt = from_timer(tgt, t, timer);
|
||||
struct ibmvfc_host *vhost = tgt->vhost;
|
||||
struct ibmvfc_event *evt;
|
||||
struct ibmvfc_tmf *tmf;
|
||||
@ -3778,9 +3778,7 @@ static void ibmvfc_tgt_adisc(struct ibmvfc_target *tgt)
|
||||
if (timer_pending(&tgt->timer))
|
||||
mod_timer(&tgt->timer, jiffies + (IBMVFC_ADISC_TIMEOUT * HZ));
|
||||
else {
|
||||
tgt->timer.data = (unsigned long) tgt;
|
||||
tgt->timer.expires = jiffies + (IBMVFC_ADISC_TIMEOUT * HZ);
|
||||
tgt->timer.function = (void (*)(unsigned long))ibmvfc_adisc_timeout;
|
||||
add_timer(&tgt->timer);
|
||||
}
|
||||
|
||||
@ -3912,7 +3910,7 @@ static int ibmvfc_alloc_target(struct ibmvfc_host *vhost, u64 scsi_id)
|
||||
tgt->vhost = vhost;
|
||||
tgt->need_login = 1;
|
||||
tgt->cancel_key = vhost->task_set++;
|
||||
init_timer(&tgt->timer);
|
||||
timer_setup(&tgt->timer, ibmvfc_adisc_timeout, 0);
|
||||
kref_init(&tgt->kref);
|
||||
ibmvfc_init_tgt(tgt, ibmvfc_tgt_implicit_logout);
|
||||
spin_lock_irqsave(vhost->host->host_lock, flags);
|
||||
|
@ -837,8 +837,9 @@ static void ibmvscsi_reset_host(struct ibmvscsi_host_data *hostdata)
|
||||
*
|
||||
* Called when an internally generated command times out
|
||||
*/
|
||||
static void ibmvscsi_timeout(struct srp_event_struct *evt_struct)
|
||||
static void ibmvscsi_timeout(struct timer_list *t)
|
||||
{
|
||||
struct srp_event_struct *evt_struct = from_timer(evt_struct, t, timer);
|
||||
struct ibmvscsi_host_data *hostdata = evt_struct->hostdata;
|
||||
|
||||
dev_err(hostdata->dev, "Command timed out (%x). Resetting connection\n",
|
||||
@ -927,11 +928,9 @@ static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct,
|
||||
*/
|
||||
list_add_tail(&evt_struct->list, &hostdata->sent);
|
||||
|
||||
init_timer(&evt_struct->timer);
|
||||
timer_setup(&evt_struct->timer, ibmvscsi_timeout, 0);
|
||||
if (timeout) {
|
||||
evt_struct->timer.data = (unsigned long) evt_struct;
|
||||
evt_struct->timer.expires = jiffies + (timeout * HZ);
|
||||
evt_struct->timer.function = (void (*)(unsigned long))ibmvscsi_timeout;
|
||||
add_timer(&evt_struct->timer);
|
||||
}
|
||||
|
||||
|
@ -694,7 +694,7 @@ static void ipr_init_ipr_cmnd(struct ipr_cmnd *ipr_cmd,
|
||||
ipr_cmd->sibling = NULL;
|
||||
ipr_cmd->eh_comp = NULL;
|
||||
ipr_cmd->fast_done = fast_done;
|
||||
init_timer(&ipr_cmd->timer);
|
||||
timer_setup(&ipr_cmd->timer, NULL, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -990,15 +990,14 @@ static void ipr_send_command(struct ipr_cmnd *ipr_cmd)
|
||||
**/
|
||||
static void ipr_do_req(struct ipr_cmnd *ipr_cmd,
|
||||
void (*done) (struct ipr_cmnd *),
|
||||
void (*timeout_func) (struct ipr_cmnd *), u32 timeout)
|
||||
void (*timeout_func) (struct timer_list *), u32 timeout)
|
||||
{
|
||||
list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_pending_q);
|
||||
|
||||
ipr_cmd->done = done;
|
||||
|
||||
ipr_cmd->timer.data = (unsigned long) ipr_cmd;
|
||||
ipr_cmd->timer.expires = jiffies + timeout;
|
||||
ipr_cmd->timer.function = (void (*)(unsigned long))timeout_func;
|
||||
ipr_cmd->timer.function = (TIMER_FUNC_TYPE)timeout_func;
|
||||
|
||||
add_timer(&ipr_cmd->timer);
|
||||
|
||||
@ -1080,7 +1079,7 @@ static void ipr_init_ioadl(struct ipr_cmnd *ipr_cmd, dma_addr_t dma_addr,
|
||||
* none
|
||||
**/
|
||||
static void ipr_send_blocking_cmd(struct ipr_cmnd *ipr_cmd,
|
||||
void (*timeout_func) (struct ipr_cmnd *ipr_cmd),
|
||||
void (*timeout_func) (struct timer_list *),
|
||||
u32 timeout)
|
||||
{
|
||||
struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
|
||||
@ -2664,8 +2663,9 @@ static void ipr_process_error(struct ipr_cmnd *ipr_cmd)
|
||||
* Return value:
|
||||
* none
|
||||
**/
|
||||
static void ipr_timeout(struct ipr_cmnd *ipr_cmd)
|
||||
static void ipr_timeout(struct timer_list *t)
|
||||
{
|
||||
struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
|
||||
unsigned long lock_flags = 0;
|
||||
struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
|
||||
|
||||
@ -2696,8 +2696,9 @@ static void ipr_timeout(struct ipr_cmnd *ipr_cmd)
|
||||
* Return value:
|
||||
* none
|
||||
**/
|
||||
static void ipr_oper_timeout(struct ipr_cmnd *ipr_cmd)
|
||||
static void ipr_oper_timeout(struct timer_list *t)
|
||||
{
|
||||
struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
|
||||
unsigned long lock_flags = 0;
|
||||
struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
|
||||
|
||||
@ -5449,8 +5450,9 @@ static void ipr_bus_reset_done(struct ipr_cmnd *ipr_cmd)
|
||||
* Return value:
|
||||
* none
|
||||
**/
|
||||
static void ipr_abort_timeout(struct ipr_cmnd *ipr_cmd)
|
||||
static void ipr_abort_timeout(struct timer_list *t)
|
||||
{
|
||||
struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
|
||||
struct ipr_cmnd *reset_cmd;
|
||||
struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
|
||||
struct ipr_cmd_pkt *cmd_pkt;
|
||||
@ -8271,8 +8273,9 @@ static int ipr_ioafp_identify_hrrq(struct ipr_cmnd *ipr_cmd)
|
||||
* Return value:
|
||||
* none
|
||||
**/
|
||||
static void ipr_reset_timer_done(struct ipr_cmnd *ipr_cmd)
|
||||
static void ipr_reset_timer_done(struct timer_list *t)
|
||||
{
|
||||
struct ipr_cmnd *ipr_cmd = from_timer(ipr_cmd, t, timer);
|
||||
struct ipr_ioa_cfg *ioa_cfg = ipr_cmd->ioa_cfg;
|
||||
unsigned long lock_flags = 0;
|
||||
|
||||
@ -8308,9 +8311,8 @@ static void ipr_reset_start_timer(struct ipr_cmnd *ipr_cmd,
|
||||
list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_pending_q);
|
||||
ipr_cmd->done = ipr_reset_ioa_job;
|
||||
|
||||
ipr_cmd->timer.data = (unsigned long) ipr_cmd;
|
||||
ipr_cmd->timer.expires = jiffies + timeout;
|
||||
ipr_cmd->timer.function = (void (*)(unsigned long))ipr_reset_timer_done;
|
||||
ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_reset_timer_done;
|
||||
add_timer(&ipr_cmd->timer);
|
||||
}
|
||||
|
||||
@ -8394,9 +8396,8 @@ static int ipr_reset_next_stage(struct ipr_cmnd *ipr_cmd)
|
||||
}
|
||||
}
|
||||
|
||||
ipr_cmd->timer.data = (unsigned long) ipr_cmd;
|
||||
ipr_cmd->timer.expires = jiffies + stage_time * HZ;
|
||||
ipr_cmd->timer.function = (void (*)(unsigned long))ipr_oper_timeout;
|
||||
ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_oper_timeout;
|
||||
ipr_cmd->done = ipr_reset_ioa_job;
|
||||
add_timer(&ipr_cmd->timer);
|
||||
|
||||
@ -8466,9 +8467,8 @@ static int ipr_reset_enable_ioa(struct ipr_cmnd *ipr_cmd)
|
||||
return IPR_RC_JOB_CONTINUE;
|
||||
}
|
||||
|
||||
ipr_cmd->timer.data = (unsigned long) ipr_cmd;
|
||||
ipr_cmd->timer.expires = jiffies + (ioa_cfg->transop_timeout * HZ);
|
||||
ipr_cmd->timer.function = (void (*)(unsigned long))ipr_oper_timeout;
|
||||
ipr_cmd->timer.function = (TIMER_FUNC_TYPE)ipr_oper_timeout;
|
||||
ipr_cmd->done = ipr_reset_ioa_job;
|
||||
add_timer(&ipr_cmd->timer);
|
||||
list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_pending_q);
|
||||
|
@ -41,9 +41,10 @@ static int sas_disable_routing(struct domain_device *dev, u8 *sas_addr);
|
||||
|
||||
/* ---------- SMP task management ---------- */
|
||||
|
||||
static void smp_task_timedout(unsigned long _task)
|
||||
static void smp_task_timedout(struct timer_list *t)
|
||||
{
|
||||
struct sas_task *task = (void *) _task;
|
||||
struct sas_task_slow *slow = from_timer(slow, t, timer);
|
||||
struct sas_task *task = slow->task;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&task->task_state_lock, flags);
|
||||
@ -91,8 +92,7 @@ static int smp_execute_task_sg(struct domain_device *dev,
|
||||
|
||||
task->task_done = smp_task_done;
|
||||
|
||||
task->slow_task->timer.data = (unsigned long) task;
|
||||
task->slow_task->timer.function = smp_task_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)smp_task_timedout;
|
||||
task->slow_task->timer.expires = jiffies + SMP_TIMEOUT*HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
|
@ -66,7 +66,8 @@ struct sas_task *sas_alloc_slow_task(gfp_t flags)
|
||||
}
|
||||
|
||||
task->slow_task = slow;
|
||||
init_timer(&slow->timer);
|
||||
slow->task = task;
|
||||
timer_setup(&slow->timer, NULL, 0);
|
||||
init_completion(&slow->completion);
|
||||
|
||||
return task;
|
||||
|
@ -919,7 +919,7 @@ void sas_task_abort(struct sas_task *task)
|
||||
return;
|
||||
if (!del_timer(&slow->timer))
|
||||
return;
|
||||
slow->timer.function(slow->timer.data);
|
||||
slow->timer.function((TIMER_DATA_TYPE)&slow->timer);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -113,7 +113,7 @@ void lpfc_disc_list_loopmap(struct lpfc_vport *);
|
||||
void lpfc_disc_start(struct lpfc_vport *);
|
||||
void lpfc_cleanup_discovery_resources(struct lpfc_vport *);
|
||||
void lpfc_cleanup(struct lpfc_vport *);
|
||||
void lpfc_disc_timeout(unsigned long);
|
||||
void lpfc_disc_timeout(struct timer_list *);
|
||||
|
||||
int lpfc_unregister_fcf_prep(struct lpfc_hba *);
|
||||
struct lpfc_nodelist *__lpfc_findnode_rpi(struct lpfc_vport *, uint16_t);
|
||||
@ -154,7 +154,7 @@ int lpfc_els_rsp_adisc_acc(struct lpfc_vport *, struct lpfc_iocbq *,
|
||||
int lpfc_els_rsp_prli_acc(struct lpfc_vport *, struct lpfc_iocbq *,
|
||||
struct lpfc_nodelist *);
|
||||
void lpfc_cancel_retry_delay_tmo(struct lpfc_vport *, struct lpfc_nodelist *);
|
||||
void lpfc_els_retry_delay(unsigned long);
|
||||
void lpfc_els_retry_delay(struct timer_list *);
|
||||
void lpfc_els_retry_delay_handler(struct lpfc_nodelist *);
|
||||
void lpfc_els_unsol_event(struct lpfc_hba *, struct lpfc_sli_ring *,
|
||||
struct lpfc_iocbq *);
|
||||
@ -165,7 +165,7 @@ void lpfc_els_flush_all_cmd(struct lpfc_hba *);
|
||||
void lpfc_els_flush_cmd(struct lpfc_vport *);
|
||||
int lpfc_els_disc_adisc(struct lpfc_vport *);
|
||||
int lpfc_els_disc_plogi(struct lpfc_vport *);
|
||||
void lpfc_els_timeout(unsigned long);
|
||||
void lpfc_els_timeout(struct timer_list *);
|
||||
void lpfc_els_timeout_handler(struct lpfc_vport *);
|
||||
struct lpfc_iocbq *lpfc_prep_els_iocb(struct lpfc_vport *, uint8_t, uint16_t,
|
||||
uint8_t, struct lpfc_nodelist *,
|
||||
@ -180,7 +180,7 @@ int lpfc_get_gidft_type(struct lpfc_vport *vport, struct lpfc_iocbq *iocbq);
|
||||
int lpfc_ns_cmd(struct lpfc_vport *, int, uint8_t, uint32_t);
|
||||
int lpfc_fdmi_cmd(struct lpfc_vport *, struct lpfc_nodelist *, int, uint32_t);
|
||||
void lpfc_fdmi_num_disc_check(struct lpfc_vport *);
|
||||
void lpfc_delayed_disc_tmo(unsigned long);
|
||||
void lpfc_delayed_disc_tmo(struct timer_list *);
|
||||
void lpfc_delayed_disc_timeout_handler(struct lpfc_vport *);
|
||||
|
||||
int lpfc_config_port_prep(struct lpfc_hba *);
|
||||
@ -279,9 +279,9 @@ void lpfc_mem_free(struct lpfc_hba *);
|
||||
void lpfc_mem_free_all(struct lpfc_hba *);
|
||||
void lpfc_stop_vport_timers(struct lpfc_vport *);
|
||||
|
||||
void lpfc_poll_timeout(unsigned long ptr);
|
||||
void lpfc_poll_timeout(struct timer_list *t);
|
||||
void lpfc_poll_start_timer(struct lpfc_hba *);
|
||||
void lpfc_poll_eratt(unsigned long);
|
||||
void lpfc_poll_eratt(struct timer_list *);
|
||||
int
|
||||
lpfc_sli_handle_fast_ring_event(struct lpfc_hba *,
|
||||
struct lpfc_sli_ring *, uint32_t);
|
||||
@ -351,7 +351,7 @@ int
|
||||
lpfc_sli_abort_taskmgmt(struct lpfc_vport *, struct lpfc_sli_ring *,
|
||||
uint16_t, uint64_t, lpfc_ctx_cmd);
|
||||
|
||||
void lpfc_mbox_timeout(unsigned long);
|
||||
void lpfc_mbox_timeout(struct timer_list *t);
|
||||
void lpfc_mbox_timeout_handler(struct lpfc_hba *);
|
||||
|
||||
struct lpfc_nodelist *lpfc_findnode_did(struct lpfc_vport *, uint32_t);
|
||||
@ -445,7 +445,7 @@ extern unsigned int lpfc_fcp_look_ahead;
|
||||
/* Interface exported by fabric iocb scheduler */
|
||||
void lpfc_fabric_abort_nport(struct lpfc_nodelist *);
|
||||
void lpfc_fabric_abort_hba(struct lpfc_hba *);
|
||||
void lpfc_fabric_block_timeout(unsigned long);
|
||||
void lpfc_fabric_block_timeout(struct timer_list *);
|
||||
void lpfc_unblock_fabric_iocbs(struct lpfc_hba *);
|
||||
void lpfc_rampdown_queue_depth(struct lpfc_hba *);
|
||||
void lpfc_ramp_down_queue_handler(struct lpfc_hba *);
|
||||
|
@ -2884,9 +2884,9 @@ fdmi_cmd_exit:
|
||||
* the worker thread.
|
||||
**/
|
||||
void
|
||||
lpfc_delayed_disc_tmo(unsigned long ptr)
|
||||
lpfc_delayed_disc_tmo(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_vport *vport = (struct lpfc_vport *)ptr;
|
||||
struct lpfc_vport *vport = from_timer(vport, t, delayed_disc_tmo);
|
||||
struct lpfc_hba *phba = vport->phba;
|
||||
uint32_t tmo_posted;
|
||||
unsigned long iflag;
|
||||
|
@ -3131,9 +3131,9 @@ lpfc_cancel_retry_delay_tmo(struct lpfc_vport *vport, struct lpfc_nodelist *nlp)
|
||||
* to the event associated with the ndlp.
|
||||
**/
|
||||
void
|
||||
lpfc_els_retry_delay(unsigned long ptr)
|
||||
lpfc_els_retry_delay(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_nodelist *ndlp = (struct lpfc_nodelist *) ptr;
|
||||
struct lpfc_nodelist *ndlp = from_timer(ndlp, t, nlp_delayfunc);
|
||||
struct lpfc_vport *vport = ndlp->vport;
|
||||
struct lpfc_hba *phba = vport->phba;
|
||||
unsigned long flags;
|
||||
@ -7385,9 +7385,9 @@ lpfc_els_rcv_fan(struct lpfc_vport *vport, struct lpfc_iocbq *cmdiocb,
|
||||
* lpfc_els_timeout_handler() to work on the posted event WORKER_ELS_TMO.
|
||||
**/
|
||||
void
|
||||
lpfc_els_timeout(unsigned long ptr)
|
||||
lpfc_els_timeout(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_vport *vport = (struct lpfc_vport *) ptr;
|
||||
struct lpfc_vport *vport = from_timer(vport, t, els_tmofunc);
|
||||
struct lpfc_hba *phba = vport->phba;
|
||||
uint32_t tmo_posted;
|
||||
unsigned long iflag;
|
||||
@ -9017,9 +9017,9 @@ lpfc_issue_els_npiv_logo(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)
|
||||
* posted event WORKER_FABRIC_BLOCK_TMO.
|
||||
**/
|
||||
void
|
||||
lpfc_fabric_block_timeout(unsigned long ptr)
|
||||
lpfc_fabric_block_timeout(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_hba *phba = (struct lpfc_hba *) ptr;
|
||||
struct lpfc_hba *phba = from_timer(phba, t, fabric_block_timer);
|
||||
unsigned long iflags;
|
||||
uint32_t tmo_posted;
|
||||
|
||||
|
@ -4370,8 +4370,7 @@ lpfc_initialize_node(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
|
||||
{
|
||||
INIT_LIST_HEAD(&ndlp->els_retry_evt.evt_listp);
|
||||
INIT_LIST_HEAD(&ndlp->dev_loss_evt.evt_listp);
|
||||
setup_timer(&ndlp->nlp_delayfunc, lpfc_els_retry_delay,
|
||||
(unsigned long)ndlp);
|
||||
timer_setup(&ndlp->nlp_delayfunc, lpfc_els_retry_delay, 0);
|
||||
ndlp->nlp_DID = did;
|
||||
ndlp->vport = vport;
|
||||
ndlp->phba = vport->phba;
|
||||
@ -5508,9 +5507,9 @@ lpfc_cleanup_discovery_resources(struct lpfc_vport *vport)
|
||||
*/
|
||||
/*****************************************************************************/
|
||||
void
|
||||
lpfc_disc_timeout(unsigned long ptr)
|
||||
lpfc_disc_timeout(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_vport *vport = (struct lpfc_vport *) ptr;
|
||||
struct lpfc_vport *vport = from_timer(vport, t, fc_disctmo);
|
||||
struct lpfc_hba *phba = vport->phba;
|
||||
uint32_t tmo_posted;
|
||||
unsigned long flags = 0;
|
||||
|
@ -1138,13 +1138,13 @@ lpfc_hba_down_post(struct lpfc_hba *phba)
|
||||
* be cleared by the worker thread after it has taken the event bitmap out.
|
||||
**/
|
||||
static void
|
||||
lpfc_hb_timeout(unsigned long ptr)
|
||||
lpfc_hb_timeout(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_hba *phba;
|
||||
uint32_t tmo_posted;
|
||||
unsigned long iflag;
|
||||
|
||||
phba = (struct lpfc_hba *)ptr;
|
||||
phba = from_timer(phba, t, hb_tmofunc);
|
||||
|
||||
/* Check for heart beat timeout conditions */
|
||||
spin_lock_irqsave(&phba->pport->work_port_lock, iflag);
|
||||
@ -1172,12 +1172,12 @@ lpfc_hb_timeout(unsigned long ptr)
|
||||
* be cleared by the worker thread after it has taken the event bitmap out.
|
||||
**/
|
||||
static void
|
||||
lpfc_rrq_timeout(unsigned long ptr)
|
||||
lpfc_rrq_timeout(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_hba *phba;
|
||||
unsigned long iflag;
|
||||
|
||||
phba = (struct lpfc_hba *)ptr;
|
||||
phba = from_timer(phba, t, rrq_tmr);
|
||||
spin_lock_irqsave(&phba->pport->work_port_lock, iflag);
|
||||
if (!(phba->pport->load_flag & FC_UNLOADING))
|
||||
phba->hba_flag |= HBA_RRQ_ACTIVE;
|
||||
@ -3937,14 +3937,11 @@ lpfc_create_port(struct lpfc_hba *phba, int instance, struct device *dev)
|
||||
INIT_LIST_HEAD(&vport->rcv_buffer_list);
|
||||
spin_lock_init(&vport->work_port_lock);
|
||||
|
||||
setup_timer(&vport->fc_disctmo, lpfc_disc_timeout,
|
||||
(unsigned long)vport);
|
||||
timer_setup(&vport->fc_disctmo, lpfc_disc_timeout, 0);
|
||||
|
||||
setup_timer(&vport->els_tmofunc, lpfc_els_timeout,
|
||||
(unsigned long)vport);
|
||||
timer_setup(&vport->els_tmofunc, lpfc_els_timeout, 0);
|
||||
|
||||
setup_timer(&vport->delayed_disc_tmo, lpfc_delayed_disc_tmo,
|
||||
(unsigned long)vport);
|
||||
timer_setup(&vport->delayed_disc_tmo, lpfc_delayed_disc_tmo, 0);
|
||||
|
||||
error = scsi_add_host_with_dma(shost, dev, &phba->pcidev->dev);
|
||||
if (error)
|
||||
@ -4210,9 +4207,9 @@ lpfc_fcf_redisc_wait_start_timer(struct lpfc_hba *phba)
|
||||
* worker thread context.
|
||||
**/
|
||||
static void
|
||||
lpfc_sli4_fcf_redisc_wait_tmo(unsigned long ptr)
|
||||
lpfc_sli4_fcf_redisc_wait_tmo(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_hba *phba = (struct lpfc_hba *)ptr;
|
||||
struct lpfc_hba *phba = from_timer(phba, t, fcf.redisc_wait);
|
||||
|
||||
/* Don't send FCF rediscovery event if timer cancelled */
|
||||
spin_lock_irq(&phba->hbalock);
|
||||
@ -5624,15 +5621,13 @@ lpfc_setup_driver_resource_phase1(struct lpfc_hba *phba)
|
||||
INIT_LIST_HEAD(&phba->luns);
|
||||
|
||||
/* MBOX heartbeat timer */
|
||||
setup_timer(&psli->mbox_tmo, lpfc_mbox_timeout, (unsigned long)phba);
|
||||
timer_setup(&psli->mbox_tmo, lpfc_mbox_timeout, 0);
|
||||
/* Fabric block timer */
|
||||
setup_timer(&phba->fabric_block_timer, lpfc_fabric_block_timeout,
|
||||
(unsigned long)phba);
|
||||
timer_setup(&phba->fabric_block_timer, lpfc_fabric_block_timeout, 0);
|
||||
/* EA polling mode timer */
|
||||
setup_timer(&phba->eratt_poll, lpfc_poll_eratt,
|
||||
(unsigned long)phba);
|
||||
timer_setup(&phba->eratt_poll, lpfc_poll_eratt, 0);
|
||||
/* Heartbeat timer */
|
||||
setup_timer(&phba->hb_tmofunc, lpfc_hb_timeout, (unsigned long)phba);
|
||||
timer_setup(&phba->hb_tmofunc, lpfc_hb_timeout, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -5658,8 +5653,7 @@ lpfc_sli_driver_resource_setup(struct lpfc_hba *phba)
|
||||
*/
|
||||
|
||||
/* FCP polling mode timer */
|
||||
setup_timer(&phba->fcp_poll_timer, lpfc_poll_timeout,
|
||||
(unsigned long)phba);
|
||||
timer_setup(&phba->fcp_poll_timer, lpfc_poll_timeout, 0);
|
||||
|
||||
/* Host attention work mask setup */
|
||||
phba->work_ha_mask = (HA_ERATT | HA_MBATT | HA_LATT);
|
||||
@ -5829,11 +5823,10 @@ lpfc_sli4_driver_resource_setup(struct lpfc_hba *phba)
|
||||
* Initialize timers used by driver
|
||||
*/
|
||||
|
||||
setup_timer(&phba->rrq_tmr, lpfc_rrq_timeout, (unsigned long)phba);
|
||||
timer_setup(&phba->rrq_tmr, lpfc_rrq_timeout, 0);
|
||||
|
||||
/* FCF rediscover timer */
|
||||
setup_timer(&phba->fcf.redisc_wait, lpfc_sli4_fcf_redisc_wait_tmo,
|
||||
(unsigned long)phba);
|
||||
timer_setup(&phba->fcf.redisc_wait, lpfc_sli4_fcf_redisc_wait_tmo, 0);
|
||||
|
||||
/*
|
||||
* Control structure for handling external multi-buffer mailbox
|
||||
|
@ -4501,9 +4501,9 @@ void lpfc_poll_start_timer(struct lpfc_hba * phba)
|
||||
* and FCP Ring interrupt is disable.
|
||||
**/
|
||||
|
||||
void lpfc_poll_timeout(unsigned long ptr)
|
||||
void lpfc_poll_timeout(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_hba *phba = (struct lpfc_hba *) ptr;
|
||||
struct lpfc_hba *phba = from_timer(phba, t, fcp_poll_timer);
|
||||
|
||||
if (phba->cfg_poll & ENABLE_FCP_RING_POLLING) {
|
||||
lpfc_sli_handle_fast_ring_event(phba,
|
||||
|
@ -3004,13 +3004,13 @@ lpfc_sli_rsp_pointers_error(struct lpfc_hba *phba, struct lpfc_sli_ring *pring)
|
||||
* and wake up worker thread to process it. Otherwise, it will set up the
|
||||
* Error Attention polling timer for the next poll.
|
||||
**/
|
||||
void lpfc_poll_eratt(unsigned long ptr)
|
||||
void lpfc_poll_eratt(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_hba *phba;
|
||||
uint32_t eratt = 0;
|
||||
uint64_t sli_intr, cnt;
|
||||
|
||||
phba = (struct lpfc_hba *)ptr;
|
||||
phba = from_timer(phba, t, eratt_poll);
|
||||
|
||||
/* Here we will also keep track of interrupts per sec of the hba */
|
||||
sli_intr = phba->sli.slistat.sli_intr;
|
||||
@ -7167,9 +7167,9 @@ out_free_mbox:
|
||||
* done by the worker thread function lpfc_mbox_timeout_handler.
|
||||
**/
|
||||
void
|
||||
lpfc_mbox_timeout(unsigned long ptr)
|
||||
lpfc_mbox_timeout(struct timer_list *t)
|
||||
{
|
||||
struct lpfc_hba *phba = (struct lpfc_hba *) ptr;
|
||||
struct lpfc_hba *phba = from_timer(phba, t, sli.mbox_tmo);
|
||||
unsigned long iflag;
|
||||
uint32_t tmo_posted;
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/semaphore.h>
|
||||
#include <linux/timer.h>
|
||||
|
||||
#include "mbox_defs.h"
|
||||
|
||||
@ -153,6 +154,11 @@ typedef struct uioc {
|
||||
|
||||
} __attribute__ ((aligned(1024),packed)) uioc_t;
|
||||
|
||||
/* For on-stack uioc timers. */
|
||||
struct uioc_timeout {
|
||||
struct timer_list timer;
|
||||
uioc_t *uioc;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mraid_hba_info - information about the controller
|
||||
|
@ -3904,19 +3904,19 @@ megaraid_sysfs_get_ldmap_done(uioc_t *uioc)
|
||||
wake_up(&raid_dev->sysfs_wait_q);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* megaraid_sysfs_get_ldmap_timeout - timeout handling for get ldmap
|
||||
* @data : timed out packet
|
||||
* @t : timed out timer
|
||||
*
|
||||
* Timeout routine to recover and return to application, in case the adapter
|
||||
* has stopped responding. A timeout of 60 seconds for this command seems like
|
||||
* a good value.
|
||||
*/
|
||||
static void
|
||||
megaraid_sysfs_get_ldmap_timeout(unsigned long data)
|
||||
megaraid_sysfs_get_ldmap_timeout(struct timer_list *t)
|
||||
{
|
||||
uioc_t *uioc = (uioc_t *)data;
|
||||
struct uioc_timeout *timeout = from_timer(timeout, t, timer);
|
||||
uioc_t *uioc = timeout->uioc;
|
||||
adapter_t *adapter = (adapter_t *)uioc->buf_vaddr;
|
||||
mraid_device_t *raid_dev = ADAP2RAIDDEV(adapter);
|
||||
|
||||
@ -3951,8 +3951,7 @@ megaraid_sysfs_get_ldmap(adapter_t *adapter)
|
||||
mbox64_t *mbox64;
|
||||
mbox_t *mbox;
|
||||
char *raw_mbox;
|
||||
struct timer_list sysfs_timer;
|
||||
struct timer_list *timerp;
|
||||
struct uioc_timeout timeout;
|
||||
caddr_t ldmap;
|
||||
int rval = 0;
|
||||
|
||||
@ -3988,14 +3987,12 @@ megaraid_sysfs_get_ldmap(adapter_t *adapter)
|
||||
/*
|
||||
* Setup a timer to recover from a non-responding controller
|
||||
*/
|
||||
timerp = &sysfs_timer;
|
||||
init_timer(timerp);
|
||||
timeout.uioc = uioc;
|
||||
timer_setup_on_stack(&timeout.timer,
|
||||
megaraid_sysfs_get_ldmap_timeout, 0);
|
||||
|
||||
timerp->function = megaraid_sysfs_get_ldmap_timeout;
|
||||
timerp->data = (unsigned long)uioc;
|
||||
timerp->expires = jiffies + 60 * HZ;
|
||||
|
||||
add_timer(timerp);
|
||||
timeout.timer.expires = jiffies + 60 * HZ;
|
||||
add_timer(&timeout.timer);
|
||||
|
||||
/*
|
||||
* Send the command to the firmware
|
||||
@ -4033,7 +4030,8 @@ megaraid_sysfs_get_ldmap(adapter_t *adapter)
|
||||
}
|
||||
|
||||
|
||||
del_timer_sync(timerp);
|
||||
del_timer_sync(&timeout.timer);
|
||||
destroy_timer_on_stack(&timeout.timer);
|
||||
|
||||
mutex_unlock(&raid_dev->sysfs_mtx);
|
||||
|
||||
|
@ -35,7 +35,7 @@ static int kioc_to_mimd(uioc_t *, mimd_t __user *);
|
||||
static int handle_drvrcmd(void __user *, uint8_t, int *);
|
||||
static int lld_ioctl(mraid_mmadp_t *, uioc_t *);
|
||||
static void ioctl_done(uioc_t *);
|
||||
static void lld_timedout(unsigned long);
|
||||
static void lld_timedout(struct timer_list *);
|
||||
static void hinfo_to_cinfo(mraid_hba_info_t *, mcontroller_t *);
|
||||
static mraid_mmadp_t *mraid_mm_get_adapter(mimd_t __user *, int *);
|
||||
static uioc_t *mraid_mm_alloc_kioc(mraid_mmadp_t *);
|
||||
@ -686,8 +686,7 @@ static int
|
||||
lld_ioctl(mraid_mmadp_t *adp, uioc_t *kioc)
|
||||
{
|
||||
int rval;
|
||||
struct timer_list timer;
|
||||
struct timer_list *tp = NULL;
|
||||
struct uioc_timeout timeout = { };
|
||||
|
||||
kioc->status = -ENODATA;
|
||||
rval = adp->issue_uioc(adp->drvr_data, kioc, IOCTL_ISSUE);
|
||||
@ -698,14 +697,12 @@ lld_ioctl(mraid_mmadp_t *adp, uioc_t *kioc)
|
||||
* Start the timer
|
||||
*/
|
||||
if (adp->timeout > 0) {
|
||||
tp = &timer;
|
||||
init_timer(tp);
|
||||
timeout.uioc = kioc;
|
||||
timer_setup_on_stack(&timeout.timer, lld_timedout, 0);
|
||||
|
||||
tp->function = lld_timedout;
|
||||
tp->data = (unsigned long)kioc;
|
||||
tp->expires = jiffies + adp->timeout * HZ;
|
||||
timeout.timer.expires = jiffies + adp->timeout * HZ;
|
||||
|
||||
add_timer(tp);
|
||||
add_timer(&timeout.timer);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -713,8 +710,9 @@ lld_ioctl(mraid_mmadp_t *adp, uioc_t *kioc)
|
||||
* call, the ioctl either completed successfully or timedout.
|
||||
*/
|
||||
wait_event(wait_q, (kioc->status != -ENODATA));
|
||||
if (tp) {
|
||||
del_timer_sync(tp);
|
||||
if (timeout.timer.function) {
|
||||
del_timer_sync(&timeout.timer);
|
||||
destroy_timer_on_stack(&timeout.timer);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -783,12 +781,13 @@ ioctl_done(uioc_t *kioc)
|
||||
|
||||
/**
|
||||
* lld_timedout - callback from the expired timer
|
||||
* @ptr : ioctl packet that timed out
|
||||
* @t : timer that timed out
|
||||
*/
|
||||
static void
|
||||
lld_timedout(unsigned long ptr)
|
||||
lld_timedout(struct timer_list *t)
|
||||
{
|
||||
uioc_t *kioc = (uioc_t *)ptr;
|
||||
struct uioc_timeout *timeout = from_timer(timeout, t, timer);
|
||||
uioc_t *kioc = timeout->uioc;
|
||||
|
||||
kioc->status = -ETIME;
|
||||
kioc->timedout = 1;
|
||||
|
@ -2114,22 +2114,19 @@ static void megasas_complete_cmd_dpc(unsigned long instance_addr)
|
||||
megasas_check_and_restore_queue_depth(instance);
|
||||
}
|
||||
|
||||
static void megasas_sriov_heartbeat_handler(struct timer_list *t);
|
||||
|
||||
/**
|
||||
* megasas_start_timer - Initializes a timer object
|
||||
* megasas_start_timer - Initializes sriov heartbeat timer object
|
||||
* @instance: Adapter soft state
|
||||
* @timer: timer object to be initialized
|
||||
* @fn: timer function
|
||||
* @interval: time interval between timer function call
|
||||
*
|
||||
*/
|
||||
void megasas_start_timer(struct megasas_instance *instance,
|
||||
struct timer_list *timer,
|
||||
void *fn, unsigned long interval)
|
||||
void megasas_start_timer(struct megasas_instance *instance)
|
||||
{
|
||||
init_timer(timer);
|
||||
timer->expires = jiffies + interval;
|
||||
timer->data = (unsigned long)instance;
|
||||
timer->function = fn;
|
||||
struct timer_list *timer = &instance->sriov_heartbeat_timer;
|
||||
|
||||
timer_setup(timer, megasas_sriov_heartbeat_handler, 0);
|
||||
timer->expires = jiffies + MEGASAS_SRIOV_HEARTBEAT_INTERVAL_VF;
|
||||
add_timer(timer);
|
||||
}
|
||||
|
||||
@ -2515,10 +2512,10 @@ out:
|
||||
}
|
||||
|
||||
/* Handler for SR-IOV heartbeat */
|
||||
void megasas_sriov_heartbeat_handler(unsigned long instance_addr)
|
||||
static void megasas_sriov_heartbeat_handler(struct timer_list *t)
|
||||
{
|
||||
struct megasas_instance *instance =
|
||||
(struct megasas_instance *)instance_addr;
|
||||
from_timer(instance, t, sriov_heartbeat_timer);
|
||||
|
||||
if (instance->hb_host_mem->HB.fwCounter !=
|
||||
instance->hb_host_mem->HB.driverCounter) {
|
||||
@ -5493,10 +5490,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
|
||||
/* Launch SR-IOV heartbeat timer */
|
||||
if (instance->requestorId) {
|
||||
if (!megasas_sriov_start_heartbeat(instance, 1))
|
||||
megasas_start_timer(instance,
|
||||
&instance->sriov_heartbeat_timer,
|
||||
megasas_sriov_heartbeat_handler,
|
||||
MEGASAS_SRIOV_HEARTBEAT_INTERVAL_VF);
|
||||
megasas_start_timer(instance);
|
||||
else
|
||||
instance->skip_heartbeat_timer_del = 1;
|
||||
}
|
||||
@ -6507,10 +6501,7 @@ megasas_resume(struct pci_dev *pdev)
|
||||
/* Re-launch SR-IOV heartbeat timer */
|
||||
if (instance->requestorId) {
|
||||
if (!megasas_sriov_start_heartbeat(instance, 0))
|
||||
megasas_start_timer(instance,
|
||||
&instance->sriov_heartbeat_timer,
|
||||
megasas_sriov_heartbeat_handler,
|
||||
MEGASAS_SRIOV_HEARTBEAT_INTERVAL_VF);
|
||||
megasas_start_timer(instance);
|
||||
else {
|
||||
instance->skip_heartbeat_timer_del = 1;
|
||||
goto fail_init_mfi;
|
||||
|
@ -85,12 +85,9 @@ int megasas_transition_to_ready(struct megasas_instance *instance, int ocr);
|
||||
void megaraid_sas_kill_hba(struct megasas_instance *instance);
|
||||
|
||||
extern u32 megasas_dbg_lvl;
|
||||
void megasas_sriov_heartbeat_handler(unsigned long instance_addr);
|
||||
int megasas_sriov_start_heartbeat(struct megasas_instance *instance,
|
||||
int initial);
|
||||
void megasas_start_timer(struct megasas_instance *instance,
|
||||
struct timer_list *timer,
|
||||
void *fn, unsigned long interval);
|
||||
void megasas_start_timer(struct megasas_instance *instance);
|
||||
extern struct megasas_mgmt_info megasas_mgmt_info;
|
||||
extern unsigned int resetwaittime;
|
||||
extern unsigned int dual_qdepth_disable;
|
||||
@ -4369,10 +4366,7 @@ transition_to_ready:
|
||||
/* Restart SR-IOV heartbeat */
|
||||
if (instance->requestorId) {
|
||||
if (!megasas_sriov_start_heartbeat(instance, 0))
|
||||
megasas_start_timer(instance,
|
||||
&instance->sriov_heartbeat_timer,
|
||||
megasas_sriov_heartbeat_handler,
|
||||
MEGASAS_SRIOV_HEARTBEAT_INTERVAL_VF);
|
||||
megasas_start_timer(instance);
|
||||
else
|
||||
instance->skip_heartbeat_timer_del = 1;
|
||||
}
|
||||
@ -4404,10 +4398,7 @@ fail_kill_adapter:
|
||||
} else {
|
||||
/* For VF: Restart HB timer if we didn't OCR */
|
||||
if (instance->requestorId) {
|
||||
megasas_start_timer(instance,
|
||||
&instance->sriov_heartbeat_timer,
|
||||
megasas_sriov_heartbeat_handler,
|
||||
MEGASAS_SRIOV_HEARTBEAT_INTERVAL_VF);
|
||||
megasas_start_timer(instance);
|
||||
}
|
||||
clear_bit(MEGASAS_FUSION_IN_RESET, &instance->reset_flags);
|
||||
instance->instancet->enable_intr(instance);
|
||||
|
@ -95,7 +95,7 @@ static void mvs_phy_init(struct mvs_info *mvi, int phy_id)
|
||||
|
||||
phy->mvi = mvi;
|
||||
phy->port = NULL;
|
||||
init_timer(&phy->timer);
|
||||
timer_setup(&phy->timer, NULL, 0);
|
||||
sas_phy->enabled = (phy_id < mvi->chip->n_phy) ? 1 : 0;
|
||||
sas_phy->class = SAS;
|
||||
sas_phy->iproto = SAS_PROTOCOL_ALL;
|
||||
@ -248,7 +248,6 @@ static int mvs_alloc(struct mvs_info *mvi, struct Scsi_Host *shost)
|
||||
mvi->devices[i].dev_type = SAS_PHY_UNUSED;
|
||||
mvi->devices[i].device_id = i;
|
||||
mvi->devices[i].dev_status = MVS_DEV_NORMAL;
|
||||
init_timer(&mvi->devices[i].timer);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1283,9 +1283,10 @@ static void mvs_task_done(struct sas_task *task)
|
||||
complete(&task->slow_task->completion);
|
||||
}
|
||||
|
||||
static void mvs_tmf_timedout(unsigned long data)
|
||||
static void mvs_tmf_timedout(struct timer_list *t)
|
||||
{
|
||||
struct sas_task *task = (struct sas_task *)data;
|
||||
struct sas_task_slow *slow = from_timer(slow, t, timer);
|
||||
struct sas_task *task = slow->task;
|
||||
|
||||
task->task_state_flags |= SAS_TASK_STATE_ABORTED;
|
||||
complete(&task->slow_task->completion);
|
||||
@ -1309,8 +1310,7 @@ static int mvs_exec_internal_tmf_task(struct domain_device *dev,
|
||||
memcpy(&task->ssp_task, parameter, para_len);
|
||||
task->task_done = mvs_task_done;
|
||||
|
||||
task->slow_task->timer.data = (unsigned long) task;
|
||||
task->slow_task->timer.function = mvs_tmf_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)mvs_tmf_timedout;
|
||||
task->slow_task->timer.expires = jiffies + MVS_TASK_TIMEOUT*HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
@ -1954,9 +1954,9 @@ static int mvs_handle_event(struct mvs_info *mvi, void *data, int handler)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void mvs_sig_time_out(unsigned long tphy)
|
||||
static void mvs_sig_time_out(struct timer_list *t)
|
||||
{
|
||||
struct mvs_phy *phy = (struct mvs_phy *)tphy;
|
||||
struct mvs_phy *phy = from_timer(phy, t, timer);
|
||||
struct mvs_info *mvi = phy->mvi;
|
||||
u8 phy_no;
|
||||
|
||||
@ -2020,8 +2020,7 @@ void mvs_int_port(struct mvs_info *mvi, int phy_no, u32 events)
|
||||
MVS_CHIP_DISP->write_port_irq_mask(mvi, phy_no,
|
||||
tmp | PHYEV_SIG_FIS);
|
||||
if (phy->timer.function == NULL) {
|
||||
phy->timer.data = (unsigned long)phy;
|
||||
phy->timer.function = mvs_sig_time_out;
|
||||
phy->timer.function = (TIMER_FUNC_TYPE)mvs_sig_time_out;
|
||||
phy->timer.expires = jiffies + 5*HZ;
|
||||
add_timer(&phy->timer);
|
||||
}
|
||||
|
@ -247,7 +247,6 @@ struct mvs_device {
|
||||
enum sas_device_type dev_type;
|
||||
struct mvs_info *mvi_info;
|
||||
struct domain_device *sas_device;
|
||||
struct timer_list timer;
|
||||
u32 attached_phy;
|
||||
u32 device_id;
|
||||
u32 running_req;
|
||||
|
@ -656,9 +656,10 @@ void pm8001_task_done(struct sas_task *task)
|
||||
complete(&task->slow_task->completion);
|
||||
}
|
||||
|
||||
static void pm8001_tmf_timedout(unsigned long data)
|
||||
static void pm8001_tmf_timedout(struct timer_list *t)
|
||||
{
|
||||
struct sas_task *task = (struct sas_task *)data;
|
||||
struct sas_task_slow *slow = from_timer(slow, t, timer);
|
||||
struct sas_task *task = slow->task;
|
||||
|
||||
task->task_state_flags |= SAS_TASK_STATE_ABORTED;
|
||||
complete(&task->slow_task->completion);
|
||||
@ -694,8 +695,7 @@ static int pm8001_exec_internal_tmf_task(struct domain_device *dev,
|
||||
task->task_proto = dev->tproto;
|
||||
memcpy(&task->ssp_task, parameter, para_len);
|
||||
task->task_done = pm8001_task_done;
|
||||
task->slow_task->timer.data = (unsigned long)task;
|
||||
task->slow_task->timer.function = pm8001_tmf_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout;
|
||||
task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT*HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
@ -781,8 +781,7 @@ pm8001_exec_internal_task_abort(struct pm8001_hba_info *pm8001_ha,
|
||||
task->dev = dev;
|
||||
task->task_proto = dev->tproto;
|
||||
task->task_done = pm8001_task_done;
|
||||
task->slow_task->timer.data = (unsigned long)task;
|
||||
task->slow_task->timer.function = pm8001_tmf_timedout;
|
||||
task->slow_task->timer.function = (TIMER_FUNC_TYPE)pm8001_tmf_timedout;
|
||||
task->slow_task->timer.expires = jiffies + PM8001_TASK_TIMEOUT * HZ;
|
||||
add_timer(&task->slow_task->timer);
|
||||
|
||||
|
@ -348,7 +348,7 @@ static void pmcraid_init_cmdblk(struct pmcraid_cmd *cmd, int index)
|
||||
cmd->sense_buffer = NULL;
|
||||
cmd->sense_buffer_dma = 0;
|
||||
cmd->dma_handle = 0;
|
||||
init_timer(&cmd->timer);
|
||||
timer_setup(&cmd->timer, NULL, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -557,8 +557,9 @@ static void pmcraid_reset_type(struct pmcraid_instance *pinstance)
|
||||
|
||||
static void pmcraid_ioa_reset(struct pmcraid_cmd *);
|
||||
|
||||
static void pmcraid_bist_done(struct pmcraid_cmd *cmd)
|
||||
static void pmcraid_bist_done(struct timer_list *t)
|
||||
{
|
||||
struct pmcraid_cmd *cmd = from_timer(cmd, t, timer);
|
||||
struct pmcraid_instance *pinstance = cmd->drv_inst;
|
||||
unsigned long lock_flags;
|
||||
int rc;
|
||||
@ -572,9 +573,6 @@ static void pmcraid_bist_done(struct pmcraid_cmd *cmd)
|
||||
pmcraid_info("BIST not complete, waiting another 2 secs\n");
|
||||
cmd->timer.expires = jiffies + cmd->time_left;
|
||||
cmd->time_left = 0;
|
||||
cmd->timer.data = (unsigned long)cmd;
|
||||
cmd->timer.function =
|
||||
(void (*)(unsigned long))pmcraid_bist_done;
|
||||
add_timer(&cmd->timer);
|
||||
} else {
|
||||
cmd->time_left = 0;
|
||||
@ -605,9 +603,8 @@ static void pmcraid_start_bist(struct pmcraid_cmd *cmd)
|
||||
doorbells, intrs);
|
||||
|
||||
cmd->time_left = msecs_to_jiffies(PMCRAID_BIST_TIMEOUT);
|
||||
cmd->timer.data = (unsigned long)cmd;
|
||||
cmd->timer.expires = jiffies + msecs_to_jiffies(PMCRAID_BIST_TIMEOUT);
|
||||
cmd->timer.function = (void (*)(unsigned long))pmcraid_bist_done;
|
||||
cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_bist_done;
|
||||
add_timer(&cmd->timer);
|
||||
}
|
||||
|
||||
@ -617,8 +614,9 @@ static void pmcraid_start_bist(struct pmcraid_cmd *cmd)
|
||||
* Return value
|
||||
* None
|
||||
*/
|
||||
static void pmcraid_reset_alert_done(struct pmcraid_cmd *cmd)
|
||||
static void pmcraid_reset_alert_done(struct timer_list *t)
|
||||
{
|
||||
struct pmcraid_cmd *cmd = from_timer(cmd, t, timer);
|
||||
struct pmcraid_instance *pinstance = cmd->drv_inst;
|
||||
u32 status = ioread32(pinstance->ioa_status);
|
||||
unsigned long lock_flags;
|
||||
@ -637,10 +635,8 @@ static void pmcraid_reset_alert_done(struct pmcraid_cmd *cmd)
|
||||
pmcraid_info("critical op is not yet reset waiting again\n");
|
||||
/* restart timer if some more time is available to wait */
|
||||
cmd->time_left -= PMCRAID_CHECK_FOR_RESET_TIMEOUT;
|
||||
cmd->timer.data = (unsigned long)cmd;
|
||||
cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT;
|
||||
cmd->timer.function =
|
||||
(void (*)(unsigned long))pmcraid_reset_alert_done;
|
||||
cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_reset_alert_done;
|
||||
add_timer(&cmd->timer);
|
||||
}
|
||||
}
|
||||
@ -676,10 +672,8 @@ static void pmcraid_reset_alert(struct pmcraid_cmd *cmd)
|
||||
* bit to be reset.
|
||||
*/
|
||||
cmd->time_left = PMCRAID_RESET_TIMEOUT;
|
||||
cmd->timer.data = (unsigned long)cmd;
|
||||
cmd->timer.expires = jiffies + PMCRAID_CHECK_FOR_RESET_TIMEOUT;
|
||||
cmd->timer.function =
|
||||
(void (*)(unsigned long))pmcraid_reset_alert_done;
|
||||
cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_reset_alert_done;
|
||||
add_timer(&cmd->timer);
|
||||
|
||||
iowrite32(DOORBELL_IOA_RESET_ALERT,
|
||||
@ -704,8 +698,9 @@ static void pmcraid_reset_alert(struct pmcraid_cmd *cmd)
|
||||
* Return value:
|
||||
* None
|
||||
*/
|
||||
static void pmcraid_timeout_handler(struct pmcraid_cmd *cmd)
|
||||
static void pmcraid_timeout_handler(struct timer_list *t)
|
||||
{
|
||||
struct pmcraid_cmd *cmd = from_timer(cmd, t, timer);
|
||||
struct pmcraid_instance *pinstance = cmd->drv_inst;
|
||||
unsigned long lock_flags;
|
||||
|
||||
@ -919,7 +914,7 @@ static void pmcraid_send_cmd(
|
||||
struct pmcraid_cmd *cmd,
|
||||
void (*cmd_done) (struct pmcraid_cmd *),
|
||||
unsigned long timeout,
|
||||
void (*timeout_func) (struct pmcraid_cmd *)
|
||||
void (*timeout_func) (struct timer_list *)
|
||||
)
|
||||
{
|
||||
/* initialize done function */
|
||||
@ -927,9 +922,8 @@ static void pmcraid_send_cmd(
|
||||
|
||||
if (timeout_func) {
|
||||
/* setup timeout handler */
|
||||
cmd->timer.data = (unsigned long)cmd;
|
||||
cmd->timer.expires = jiffies + timeout;
|
||||
cmd->timer.function = (void (*)(unsigned long))timeout_func;
|
||||
cmd->timer.function = (TIMER_FUNC_TYPE)timeout_func;
|
||||
add_timer(&cmd->timer);
|
||||
}
|
||||
|
||||
@ -1955,10 +1949,9 @@ static void pmcraid_soft_reset(struct pmcraid_cmd *cmd)
|
||||
* would re-initiate a reset
|
||||
*/
|
||||
cmd->cmd_done = pmcraid_ioa_reset;
|
||||
cmd->timer.data = (unsigned long)cmd;
|
||||
cmd->timer.expires = jiffies +
|
||||
msecs_to_jiffies(PMCRAID_TRANSOP_TIMEOUT);
|
||||
cmd->timer.function = (void (*)(unsigned long))pmcraid_timeout_handler;
|
||||
cmd->timer.function = (TIMER_FUNC_TYPE)pmcraid_timeout_handler;
|
||||
|
||||
if (!timer_pending(&cmd->timer))
|
||||
add_timer(&cmd->timer);
|
||||
|
@ -3955,16 +3955,15 @@ exit_session_conn_param:
|
||||
/*
|
||||
* Timer routines
|
||||
*/
|
||||
static void qla4xxx_timer(struct timer_list *t);
|
||||
|
||||
static void qla4xxx_start_timer(struct scsi_qla_host *ha, void *func,
|
||||
static void qla4xxx_start_timer(struct scsi_qla_host *ha,
|
||||
unsigned long interval)
|
||||
{
|
||||
DEBUG(printk("scsi: %s: Starting timer thread for adapter %d\n",
|
||||
__func__, ha->host->host_no));
|
||||
init_timer(&ha->timer);
|
||||
timer_setup(&ha->timer, qla4xxx_timer, 0);
|
||||
ha->timer.expires = jiffies + interval * HZ;
|
||||
ha->timer.data = (unsigned long)ha;
|
||||
ha->timer.function = (void (*)(unsigned long))func;
|
||||
add_timer(&ha->timer);
|
||||
ha->timer_active = 1;
|
||||
}
|
||||
@ -4508,8 +4507,9 @@ static void qla4xxx_check_relogin_flash_ddb(struct iscsi_cls_session *cls_sess)
|
||||
* qla4xxx_timer - checks every second for work to do.
|
||||
* @ha: Pointer to host adapter structure.
|
||||
**/
|
||||
static void qla4xxx_timer(struct scsi_qla_host *ha)
|
||||
static void qla4xxx_timer(struct timer_list *t)
|
||||
{
|
||||
struct scsi_qla_host *ha = from_timer(ha, t, timer);
|
||||
int start_dpc = 0;
|
||||
uint16_t w;
|
||||
|
||||
@ -8805,7 +8805,7 @@ skip_retry_init:
|
||||
ha->isp_ops->enable_intrs(ha);
|
||||
|
||||
/* Start timer thread. */
|
||||
qla4xxx_start_timer(ha, qla4xxx_timer, 1);
|
||||
qla4xxx_start_timer(ha, 1);
|
||||
|
||||
set_bit(AF_INIT_DONE, &ha->flags);
|
||||
|
||||
|
@ -372,6 +372,8 @@ struct iscsi_np *iscsit_add_np(
|
||||
init_completion(&np->np_restart_comp);
|
||||
INIT_LIST_HEAD(&np->np_list);
|
||||
|
||||
timer_setup(&np->np_login_timer, iscsi_handle_login_thread_timeout, 0);
|
||||
|
||||
ret = iscsi_target_setup_login_socket(np, sockaddr);
|
||||
if (ret != 0) {
|
||||
kfree(np);
|
||||
|
@ -749,9 +749,9 @@ int iscsit_check_post_dataout(
|
||||
}
|
||||
}
|
||||
|
||||
static void iscsit_handle_time2retain_timeout(unsigned long data)
|
||||
void iscsit_handle_time2retain_timeout(struct timer_list *t)
|
||||
{
|
||||
struct iscsi_session *sess = (struct iscsi_session *) data;
|
||||
struct iscsi_session *sess = from_timer(sess, t, time2retain_timer);
|
||||
struct iscsi_portal_group *tpg = sess->tpg;
|
||||
struct se_portal_group *se_tpg = &tpg->tpg_se_tpg;
|
||||
|
||||
@ -809,14 +809,10 @@ void iscsit_start_time2retain_handler(struct iscsi_session *sess)
|
||||
pr_debug("Starting Time2Retain timer for %u seconds on"
|
||||
" SID: %u\n", sess->sess_ops->DefaultTime2Retain, sess->sid);
|
||||
|
||||
init_timer(&sess->time2retain_timer);
|
||||
sess->time2retain_timer.expires =
|
||||
(get_jiffies_64() + sess->sess_ops->DefaultTime2Retain * HZ);
|
||||
sess->time2retain_timer.data = (unsigned long)sess;
|
||||
sess->time2retain_timer.function = iscsit_handle_time2retain_timeout;
|
||||
sess->time2retain_timer_flags &= ~ISCSI_TF_STOP;
|
||||
sess->time2retain_timer_flags |= ISCSI_TF_RUNNING;
|
||||
add_timer(&sess->time2retain_timer);
|
||||
mod_timer(&sess->time2retain_timer,
|
||||
jiffies + sess->sess_ops->DefaultTime2Retain * HZ);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -11,6 +11,7 @@ extern void iscsit_set_dataout_sequence_values(struct iscsi_cmd *);
|
||||
extern int iscsit_check_pre_dataout(struct iscsi_cmd *, unsigned char *);
|
||||
extern int iscsit_check_post_dataout(struct iscsi_cmd *, unsigned char *, u8);
|
||||
extern void iscsit_start_time2retain_handler(struct iscsi_session *);
|
||||
extern void iscsit_handle_time2retain_timeout(struct timer_list *t);
|
||||
extern int iscsit_stop_time2retain_timer(struct iscsi_session *);
|
||||
extern void iscsit_connection_reinstatement_rcfr(struct iscsi_conn *);
|
||||
extern void iscsit_cause_connection_reinstatement(struct iscsi_conn *, int);
|
||||
|
@ -1148,11 +1148,11 @@ static int iscsit_set_dataout_timeout_values(
|
||||
/*
|
||||
* NOTE: Called from interrupt (timer) context.
|
||||
*/
|
||||
static void iscsit_handle_dataout_timeout(unsigned long data)
|
||||
void iscsit_handle_dataout_timeout(struct timer_list *t)
|
||||
{
|
||||
u32 pdu_length = 0, pdu_offset = 0;
|
||||
u32 r2t_length = 0, r2t_offset = 0;
|
||||
struct iscsi_cmd *cmd = (struct iscsi_cmd *) data;
|
||||
struct iscsi_cmd *cmd = from_timer(cmd, t, dataout_timer);
|
||||
struct iscsi_conn *conn = cmd->conn;
|
||||
struct iscsi_session *sess = NULL;
|
||||
struct iscsi_node_attrib *na;
|
||||
@ -1264,13 +1264,9 @@ void iscsit_start_dataout_timer(
|
||||
pr_debug("Starting DataOUT timer for ITT: 0x%08x on"
|
||||
" CID: %hu.\n", cmd->init_task_tag, conn->cid);
|
||||
|
||||
init_timer(&cmd->dataout_timer);
|
||||
cmd->dataout_timer.expires = (get_jiffies_64() + na->dataout_timeout * HZ);
|
||||
cmd->dataout_timer.data = (unsigned long)cmd;
|
||||
cmd->dataout_timer.function = iscsit_handle_dataout_timeout;
|
||||
cmd->dataout_timer_flags &= ~ISCSI_TF_STOP;
|
||||
cmd->dataout_timer_flags |= ISCSI_TF_RUNNING;
|
||||
add_timer(&cmd->dataout_timer);
|
||||
mod_timer(&cmd->dataout_timer, jiffies + na->dataout_timeout * HZ);
|
||||
}
|
||||
|
||||
void iscsit_stop_dataout_timer(struct iscsi_cmd *cmd)
|
||||
|
@ -29,6 +29,7 @@ extern int iscsit_execute_ooo_cmdsns(struct iscsi_session *);
|
||||
extern int iscsit_execute_cmd(struct iscsi_cmd *, int);
|
||||
extern int iscsit_handle_ooo_cmdsn(struct iscsi_session *, struct iscsi_cmd *, u32);
|
||||
extern void iscsit_remove_ooo_cmdsn(struct iscsi_session *, struct iscsi_ooo_cmdsn *);
|
||||
extern void iscsit_handle_dataout_timeout(struct timer_list *t);
|
||||
extern void iscsit_mod_dataout_timer(struct iscsi_cmd *);
|
||||
extern void iscsit_start_dataout_timer(struct iscsi_cmd *, struct iscsi_conn *);
|
||||
extern void iscsit_stop_dataout_timer(struct iscsi_cmd *);
|
||||
|
@ -333,6 +333,9 @@ static int iscsi_login_zero_tsih_s1(
|
||||
spin_lock_init(&sess->session_usage_lock);
|
||||
spin_lock_init(&sess->ttt_lock);
|
||||
|
||||
timer_setup(&sess->time2retain_timer,
|
||||
iscsit_handle_time2retain_timeout, 0);
|
||||
|
||||
idr_preload(GFP_KERNEL);
|
||||
spin_lock_bh(&sess_idr_lock);
|
||||
ret = idr_alloc(&sess_idr, NULL, 0, 0, GFP_NOWAIT);
|
||||
@ -839,9 +842,9 @@ void iscsi_post_login_handler(
|
||||
iscsit_dec_conn_usage_count(conn);
|
||||
}
|
||||
|
||||
static void iscsi_handle_login_thread_timeout(unsigned long data)
|
||||
void iscsi_handle_login_thread_timeout(struct timer_list *t)
|
||||
{
|
||||
struct iscsi_np *np = (struct iscsi_np *) data;
|
||||
struct iscsi_np *np = from_timer(np, t, np_login_timer);
|
||||
|
||||
spin_lock_bh(&np->np_thread_lock);
|
||||
pr_err("iSCSI Login timeout on Network Portal %pISpc\n",
|
||||
@ -866,13 +869,9 @@ static void iscsi_start_login_thread_timer(struct iscsi_np *np)
|
||||
* point we do not have access to ISCSI_TPG_ATTRIB(tpg)->login_timeout
|
||||
*/
|
||||
spin_lock_bh(&np->np_thread_lock);
|
||||
init_timer(&np->np_login_timer);
|
||||
np->np_login_timer.expires = (get_jiffies_64() + TA_LOGIN_TIMEOUT * HZ);
|
||||
np->np_login_timer.data = (unsigned long)np;
|
||||
np->np_login_timer.function = iscsi_handle_login_thread_timeout;
|
||||
np->np_login_timer_flags &= ~ISCSI_TF_STOP;
|
||||
np->np_login_timer_flags |= ISCSI_TF_RUNNING;
|
||||
add_timer(&np->np_login_timer);
|
||||
mod_timer(&np->np_login_timer, jiffies + TA_LOGIN_TIMEOUT * HZ);
|
||||
|
||||
pr_debug("Added timeout timer to iSCSI login request for"
|
||||
" %u seconds.\n", TA_LOGIN_TIMEOUT);
|
||||
@ -1266,6 +1265,10 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
|
||||
pr_debug("Moving to TARG_CONN_STATE_FREE.\n");
|
||||
conn->conn_state = TARG_CONN_STATE_FREE;
|
||||
|
||||
timer_setup(&conn->nopin_response_timer,
|
||||
iscsit_handle_nopin_response_timeout, 0);
|
||||
timer_setup(&conn->nopin_timer, iscsit_handle_nopin_timeout, 0);
|
||||
|
||||
if (iscsit_conn_set_transport(conn, np->np_transport) < 0) {
|
||||
kfree(conn);
|
||||
return 1;
|
||||
|
@ -24,5 +24,6 @@ extern void iscsi_post_login_handler(struct iscsi_np *, struct iscsi_conn *, u8)
|
||||
extern void iscsi_target_login_sess_out(struct iscsi_conn *, struct iscsi_np *,
|
||||
bool, bool);
|
||||
extern int iscsi_target_login_thread(void *);
|
||||
extern void iscsi_handle_login_thread_timeout(struct timer_list *t);
|
||||
|
||||
#endif /*** ISCSI_TARGET_LOGIN_H ***/
|
||||
|
@ -559,9 +559,15 @@ static void iscsi_target_login_drop(struct iscsi_conn *conn, struct iscsi_login
|
||||
iscsi_target_login_sess_out(conn, np, zero_tsih, true);
|
||||
}
|
||||
|
||||
static void iscsi_target_login_timeout(unsigned long data)
|
||||
struct conn_timeout {
|
||||
struct timer_list timer;
|
||||
struct iscsi_conn *conn;
|
||||
};
|
||||
|
||||
static void iscsi_target_login_timeout(struct timer_list *t)
|
||||
{
|
||||
struct iscsi_conn *conn = (struct iscsi_conn *)data;
|
||||
struct conn_timeout *timeout = from_timer(timeout, t, timer);
|
||||
struct iscsi_conn *conn = timeout->conn;
|
||||
|
||||
pr_debug("Entering iscsi_target_login_timeout >>>>>>>>>>>>>>>>>>>\n");
|
||||
|
||||
@ -580,7 +586,7 @@ static void iscsi_target_do_login_rx(struct work_struct *work)
|
||||
struct iscsi_np *np = login->np;
|
||||
struct iscsi_portal_group *tpg = conn->tpg;
|
||||
struct iscsi_tpg_np *tpg_np = conn->tpg_np;
|
||||
struct timer_list login_timer;
|
||||
struct conn_timeout timeout;
|
||||
int rc, zero_tsih = login->zero_tsih;
|
||||
bool state;
|
||||
|
||||
@ -618,15 +624,14 @@ static void iscsi_target_do_login_rx(struct work_struct *work)
|
||||
conn->login_kworker = current;
|
||||
allow_signal(SIGINT);
|
||||
|
||||
init_timer(&login_timer);
|
||||
login_timer.expires = (get_jiffies_64() + TA_LOGIN_TIMEOUT * HZ);
|
||||
login_timer.data = (unsigned long)conn;
|
||||
login_timer.function = iscsi_target_login_timeout;
|
||||
add_timer(&login_timer);
|
||||
pr_debug("Starting login_timer for %s/%d\n", current->comm, current->pid);
|
||||
timeout.conn = conn;
|
||||
timer_setup_on_stack(&timeout.timer, iscsi_target_login_timeout, 0);
|
||||
mod_timer(&timeout.timer, jiffies + TA_LOGIN_TIMEOUT * HZ);
|
||||
pr_debug("Starting login timer for %s/%d\n", current->comm, current->pid);
|
||||
|
||||
rc = conn->conn_transport->iscsit_get_login_rx(conn, login);
|
||||
del_timer_sync(&login_timer);
|
||||
del_timer_sync(&timeout.timer);
|
||||
destroy_timer_on_stack(&timeout.timer);
|
||||
flush_signals(current);
|
||||
conn->login_kworker = NULL;
|
||||
|
||||
|
@ -176,6 +176,7 @@ struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *conn, int state)
|
||||
spin_lock_init(&cmd->istate_lock);
|
||||
spin_lock_init(&cmd->error_lock);
|
||||
spin_lock_init(&cmd->r2t_lock);
|
||||
timer_setup(&cmd->dataout_timer, iscsit_handle_dataout_timeout, 0);
|
||||
|
||||
return cmd;
|
||||
}
|
||||
@ -880,9 +881,9 @@ static int iscsit_add_nopin(struct iscsi_conn *conn, int want_response)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void iscsit_handle_nopin_response_timeout(unsigned long data)
|
||||
void iscsit_handle_nopin_response_timeout(struct timer_list *t)
|
||||
{
|
||||
struct iscsi_conn *conn = (struct iscsi_conn *) data;
|
||||
struct iscsi_conn *conn = from_timer(conn, t, nopin_response_timer);
|
||||
|
||||
iscsit_inc_conn_usage_count(conn);
|
||||
|
||||
@ -949,14 +950,10 @@ void iscsit_start_nopin_response_timer(struct iscsi_conn *conn)
|
||||
return;
|
||||
}
|
||||
|
||||
init_timer(&conn->nopin_response_timer);
|
||||
conn->nopin_response_timer.expires =
|
||||
(get_jiffies_64() + na->nopin_response_timeout * HZ);
|
||||
conn->nopin_response_timer.data = (unsigned long)conn;
|
||||
conn->nopin_response_timer.function = iscsit_handle_nopin_response_timeout;
|
||||
conn->nopin_response_timer_flags &= ~ISCSI_TF_STOP;
|
||||
conn->nopin_response_timer_flags |= ISCSI_TF_RUNNING;
|
||||
add_timer(&conn->nopin_response_timer);
|
||||
mod_timer(&conn->nopin_response_timer,
|
||||
jiffies + na->nopin_response_timeout * HZ);
|
||||
|
||||
pr_debug("Started NOPIN Response Timer on CID: %d to %u"
|
||||
" seconds\n", conn->cid, na->nopin_response_timeout);
|
||||
@ -980,9 +977,9 @@ void iscsit_stop_nopin_response_timer(struct iscsi_conn *conn)
|
||||
spin_unlock_bh(&conn->nopin_timer_lock);
|
||||
}
|
||||
|
||||
static void iscsit_handle_nopin_timeout(unsigned long data)
|
||||
void iscsit_handle_nopin_timeout(struct timer_list *t)
|
||||
{
|
||||
struct iscsi_conn *conn = (struct iscsi_conn *) data;
|
||||
struct iscsi_conn *conn = from_timer(conn, t, nopin_timer);
|
||||
|
||||
iscsit_inc_conn_usage_count(conn);
|
||||
|
||||
@ -1015,13 +1012,9 @@ void __iscsit_start_nopin_timer(struct iscsi_conn *conn)
|
||||
if (conn->nopin_timer_flags & ISCSI_TF_RUNNING)
|
||||
return;
|
||||
|
||||
init_timer(&conn->nopin_timer);
|
||||
conn->nopin_timer.expires = (get_jiffies_64() + na->nopin_timeout * HZ);
|
||||
conn->nopin_timer.data = (unsigned long)conn;
|
||||
conn->nopin_timer.function = iscsit_handle_nopin_timeout;
|
||||
conn->nopin_timer_flags &= ~ISCSI_TF_STOP;
|
||||
conn->nopin_timer_flags |= ISCSI_TF_RUNNING;
|
||||
add_timer(&conn->nopin_timer);
|
||||
mod_timer(&conn->nopin_timer, jiffies + na->nopin_timeout * HZ);
|
||||
|
||||
pr_debug("Started NOPIN Timer on CID: %d at %u second"
|
||||
" interval\n", conn->cid, na->nopin_timeout);
|
||||
@ -1043,13 +1036,9 @@ void iscsit_start_nopin_timer(struct iscsi_conn *conn)
|
||||
return;
|
||||
}
|
||||
|
||||
init_timer(&conn->nopin_timer);
|
||||
conn->nopin_timer.expires = (get_jiffies_64() + na->nopin_timeout * HZ);
|
||||
conn->nopin_timer.data = (unsigned long)conn;
|
||||
conn->nopin_timer.function = iscsit_handle_nopin_timeout;
|
||||
conn->nopin_timer_flags &= ~ISCSI_TF_STOP;
|
||||
conn->nopin_timer_flags |= ISCSI_TF_RUNNING;
|
||||
add_timer(&conn->nopin_timer);
|
||||
mod_timer(&conn->nopin_timer, jiffies + na->nopin_timeout * HZ);
|
||||
|
||||
pr_debug("Started NOPIN Timer on CID: %d at %u second"
|
||||
" interval\n", conn->cid, na->nopin_timeout);
|
||||
|
@ -47,9 +47,11 @@ extern struct iscsi_conn *iscsit_get_conn_from_cid_rcfr(struct iscsi_session *,
|
||||
extern void iscsit_check_conn_usage_count(struct iscsi_conn *);
|
||||
extern void iscsit_dec_conn_usage_count(struct iscsi_conn *);
|
||||
extern void iscsit_inc_conn_usage_count(struct iscsi_conn *);
|
||||
extern void iscsit_handle_nopin_response_timeout(struct timer_list *t);
|
||||
extern void iscsit_mod_nopin_response_timer(struct iscsi_conn *);
|
||||
extern void iscsit_start_nopin_response_timer(struct iscsi_conn *);
|
||||
extern void iscsit_stop_nopin_response_timer(struct iscsi_conn *);
|
||||
extern void iscsit_handle_nopin_timeout(struct timer_list *t);
|
||||
extern void __iscsit_start_nopin_timer(struct iscsi_conn *);
|
||||
extern void iscsit_start_nopin_timer(struct iscsi_conn *);
|
||||
extern void iscsit_stop_nopin_timer(struct iscsi_conn *);
|
||||
|
@ -575,11 +575,16 @@ alloc_sglist(int nents, int max, int vary, struct usbtest_dev *dev, int pipe)
|
||||
return sg;
|
||||
}
|
||||
|
||||
static void sg_timeout(unsigned long _req)
|
||||
{
|
||||
struct usb_sg_request *req = (struct usb_sg_request *) _req;
|
||||
struct sg_timeout {
|
||||
struct timer_list timer;
|
||||
struct usb_sg_request *req;
|
||||
};
|
||||
|
||||
usb_sg_cancel(req);
|
||||
static void sg_timeout(struct timer_list *t)
|
||||
{
|
||||
struct sg_timeout *timeout = from_timer(timeout, t, timer);
|
||||
|
||||
usb_sg_cancel(timeout->req);
|
||||
}
|
||||
|
||||
static int perform_sglist(
|
||||
@ -593,9 +598,11 @@ static int perform_sglist(
|
||||
{
|
||||
struct usb_device *udev = testdev_to_usbdev(tdev);
|
||||
int retval = 0;
|
||||
struct timer_list sg_timer;
|
||||
struct sg_timeout timeout = {
|
||||
.req = req,
|
||||
};
|
||||
|
||||
setup_timer_on_stack(&sg_timer, sg_timeout, (unsigned long) req);
|
||||
timer_setup_on_stack(&timeout.timer, sg_timeout, 0);
|
||||
|
||||
while (retval == 0 && iterations-- > 0) {
|
||||
retval = usb_sg_init(req, udev, pipe,
|
||||
@ -606,13 +613,14 @@ static int perform_sglist(
|
||||
|
||||
if (retval)
|
||||
break;
|
||||
mod_timer(&sg_timer, jiffies +
|
||||
mod_timer(&timeout.timer, jiffies +
|
||||
msecs_to_jiffies(SIMPLE_IO_TIMEOUT));
|
||||
usb_sg_wait(req);
|
||||
if (!del_timer_sync(&sg_timer))
|
||||
if (!del_timer_sync(&timeout.timer))
|
||||
retval = -ETIMEDOUT;
|
||||
else
|
||||
retval = req->status;
|
||||
destroy_timer_on_stack(&timeout.timer);
|
||||
|
||||
/* FIXME check resulting data pattern */
|
||||
|
||||
|
@ -629,6 +629,7 @@ struct sas_task_slow {
|
||||
*/
|
||||
struct timer_list timer;
|
||||
struct completion completion;
|
||||
struct sas_task *task;
|
||||
};
|
||||
|
||||
#define SAS_TASK_STATE_PENDING 1
|
||||
|
Loading…
Reference in New Issue
Block a user