mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 04:34:11 +08:00
RDMA/nes: Fix for terminate timer crash
The terminate timer needs to be initialized just once. Signed-off-by: Tatyana Nikolova <Tatyana.E.Nikolova@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
00ad255d17
commit
7bfcfa51c3
@ -532,6 +532,7 @@ void nes_iwarp_ce_handler(struct nes_device *, struct nes_hw_cq *);
|
||||
int nes_destroy_cqp(struct nes_device *);
|
||||
int nes_nic_cm_xmit(struct sk_buff *, struct net_device *);
|
||||
void nes_recheck_link_status(struct work_struct *work);
|
||||
void nes_terminate_timeout(unsigned long context);
|
||||
|
||||
/* nes_nic.c */
|
||||
struct net_device *nes_netdev_init(struct nes_device *, void __iomem *);
|
||||
|
@ -75,7 +75,6 @@ static void nes_process_iwarp_aeqe(struct nes_device *nesdev,
|
||||
static void process_critical_error(struct nes_device *nesdev);
|
||||
static void nes_process_mac_intr(struct nes_device *nesdev, u32 mac_number);
|
||||
static unsigned int nes_reset_adapter_ne020(struct nes_device *nesdev, u8 *OneG_Mode);
|
||||
static void nes_terminate_timeout(unsigned long context);
|
||||
static void nes_terminate_start_timer(struct nes_qp *nesqp);
|
||||
|
||||
#ifdef CONFIG_INFINIBAND_NES_DEBUG
|
||||
@ -3520,7 +3519,7 @@ static void nes_terminate_received(struct nes_device *nesdev,
|
||||
}
|
||||
|
||||
/* Timeout routine in case terminate fails to complete */
|
||||
static void nes_terminate_timeout(unsigned long context)
|
||||
void nes_terminate_timeout(unsigned long context)
|
||||
{
|
||||
struct nes_qp *nesqp = (struct nes_qp *)(unsigned long)context;
|
||||
|
||||
@ -3530,11 +3529,7 @@ static void nes_terminate_timeout(unsigned long context)
|
||||
/* Set a timer in case hw cannot complete the terminate sequence */
|
||||
static void nes_terminate_start_timer(struct nes_qp *nesqp)
|
||||
{
|
||||
init_timer(&nesqp->terminate_timer);
|
||||
nesqp->terminate_timer.function = nes_terminate_timeout;
|
||||
nesqp->terminate_timer.expires = jiffies + HZ;
|
||||
nesqp->terminate_timer.data = (unsigned long)nesqp;
|
||||
add_timer(&nesqp->terminate_timer);
|
||||
mod_timer(&nesqp->terminate_timer, (jiffies + HZ));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1404,6 +1404,9 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd,
|
||||
}
|
||||
|
||||
nesqp->sig_all = (init_attr->sq_sig_type == IB_SIGNAL_ALL_WR);
|
||||
init_timer(&nesqp->terminate_timer);
|
||||
nesqp->terminate_timer.function = nes_terminate_timeout;
|
||||
nesqp->terminate_timer.data = (unsigned long)nesqp;
|
||||
|
||||
/* update the QP table */
|
||||
nesdev->nesadapter->qp_table[nesqp->hwqp.qp_id-NES_FIRST_QPN] = nesqp;
|
||||
@ -1413,7 +1416,6 @@ static struct ib_qp *nes_create_qp(struct ib_pd *ibpd,
|
||||
return &nesqp->ibqp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* nes_clean_cq
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user