IB/qib: Ensure that LOS and DFE are being turned off
Due to timing, it is possible for the LOS and DFE to remain on. This is due to the link progressing to LinkUP prior to the driver getting the first Status Changed interrupt. By expanding the conditions under which LOS is turned off and DFE timeout is being set, timing is no longer an issue. Signed-off-by: Mitko Haralanov <mitko@qlogic.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:

committed by
Roland Dreier

parent
2c53b436a3
commit
3126448451
@@ -96,8 +96,12 @@ void qib_handle_e_ibstatuschanged(struct qib_pportdata *ppd, u64 ibcs)
|
||||
* states, or if it transitions from any of the up (INIT or better)
|
||||
* states into any of the down states (except link recovery), then
|
||||
* call the chip-specific code to take appropriate actions.
|
||||
*
|
||||
* ppd->lflags could be 0 if this is the first time the interrupt
|
||||
* handlers has been called but the link is already up.
|
||||
*/
|
||||
if (lstate >= IB_PORT_INIT && (ppd->lflags & QIBL_LINKDOWN) &&
|
||||
if (lstate >= IB_PORT_INIT &&
|
||||
(!ppd->lflags || (ppd->lflags & QIBL_LINKDOWN)) &&
|
||||
ltstate == IB_PHYSPORTSTATE_LINKUP) {
|
||||
/* transitioned to UP */
|
||||
if (dd->f_ib_updown(ppd, 1, ibcs))
|
||||
|
Reference in New Issue
Block a user