IB/hfi1: Fix MAD port poll for active cables
A MAD directive to start polling must go through the normal link tuning and start steps in order to correctly handle active cables. Reviewed-by: Easwar Hariharan <easwar.hariharan@intel.com> Signed-off-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
015e91fbc9
commit
1cbaa67035
|
@ -999,7 +999,21 @@ static int set_port_states(struct hfi1_pportdata *ppd, struct opa_smp *smp,
|
|||
break;
|
||||
}
|
||||
|
||||
set_link_state(ppd, link_state);
|
||||
if ((link_state == HLS_DN_POLL ||
|
||||
link_state == HLS_DN_DOWNDEF)) {
|
||||
/*
|
||||
* Going to poll. No matter what the current state,
|
||||
* always move offline first, then tune and start the
|
||||
* link. This correctly handles a FM link bounce and
|
||||
* a link enable. Going offline is a no-op if already
|
||||
* offline.
|
||||
*/
|
||||
set_link_state(ppd, HLS_DN_OFFLINE);
|
||||
tune_serdes(ppd);
|
||||
start_link(ppd);
|
||||
} else {
|
||||
set_link_state(ppd, link_state);
|
||||
}
|
||||
if (link_state == HLS_DN_DISABLE &&
|
||||
(ppd->offline_disabled_reason >
|
||||
HFI1_ODR_MASK(OPA_LINKDOWN_REASON_SMA_DISABLED) ||
|
||||
|
|
Loading…
Reference in New Issue