diff options
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_iba7322.c')
| -rw-r--r-- | drivers/infiniband/hw/qib/qib_iba7322.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/infiniband/hw/qib/qib_iba7322.c b/drivers/infiniband/hw/qib/qib_iba7322.c index 5bd2162b95d..1d5895941e1 100644 --- a/drivers/infiniband/hw/qib/qib_iba7322.c +++ b/drivers/infiniband/hw/qib/qib_iba7322.c @@ -2307,19 +2307,11 @@ static int qib_7322_bringup_serdes(struct qib_pportdata *ppd)  		SYM_LSB(IBCCtrlA_0, MaxPktLen);  	ppd->cpspec->ibcctrl_a = ibc; /* without linkcmd or linkinitcmd! */ -	/* initially come up waiting for TS1, without sending anything. */ -	val = ppd->cpspec->ibcctrl_a | (QLOGIC_IB_IBCC_LINKINITCMD_DISABLE << -		QLOGIC_IB_IBCC_LINKINITCMD_SHIFT); - -	ppd->cpspec->ibcctrl_a = val;  	/*  	 * Reset the PCS interface to the serdes (and also ibc, which is still  	 * in reset from above).  Writes new value of ibcctrl_a as last step.  	 */  	qib_7322_mini_pcs_reset(ppd); -	qib_write_kreg(dd, kr_scratch, 0ULL); -	/* clear the linkinit cmds */ -	ppd->cpspec->ibcctrl_a &= ~SYM_MASK(IBCCtrlA_0, LinkInitCmd);  	if (!ppd->cpspec->ibcctrl_b) {  		unsigned lse = ppd->link_speed_enabled; @@ -2385,6 +2377,14 @@ static int qib_7322_bringup_serdes(struct qib_pportdata *ppd)  	ppd->cpspec->ibcctrl_a |= SYM_MASK(IBCCtrlA_0, IBLinkEn);  	set_vls(ppd); +	/* initially come up DISABLED, without sending anything. */ +	val = ppd->cpspec->ibcctrl_a | (QLOGIC_IB_IBCC_LINKINITCMD_DISABLE << +					QLOGIC_IB_IBCC_LINKINITCMD_SHIFT); +	qib_write_kreg_port(ppd, krp_ibcctrl_a, val); +	qib_write_kreg(dd, kr_scratch, 0ULL); +	/* clear the linkinit cmds */ +	ppd->cpspec->ibcctrl_a = val & ~SYM_MASK(IBCCtrlA_0, LinkInitCmd); +  	/* be paranoid against later code motion, etc. */  	spin_lock_irqsave(&dd->cspec->rcvmod_lock, flags);  	ppd->p_rcvctrl |= SYM_MASK(RcvCtrl_0, RcvIBPortEnable); @@ -5241,7 +5241,7 @@ static int qib_7322_ib_updown(struct qib_pportdata *ppd, int ibup, u64 ibcs)  			   off */  			if (ppd->dd->flags & QIB_HAS_QSFP) {  				qd->t_insert = get_jiffies_64(); -				schedule_work(&qd->work); +				queue_work(ib_wq, &qd->work);  			}  			spin_lock_irqsave(&ppd->sdma_lock, flags);  			if (__qib_sdma_running(ppd))  |