Commit 0db9dec2 authored by Dean Luick's avatar Dean Luick Committed by Doug Ledford

IB/hfi1: Move serdes tune inside link start function

All calls to tune_serdes and start_link are paired.  Move
tune_serdes inside start_link.
Reviewed-by: default avatarEaswar Hariharan <easwar.hariharan@intel.com>
Signed-off-by: default avatarDean Luick <dean.luick@intel.com>
Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 261a4351
...@@ -6825,7 +6825,6 @@ void handle_link_up(struct work_struct *work) ...@@ -6825,7 +6825,6 @@ void handle_link_up(struct work_struct *work)
set_link_down_reason(ppd, OPA_LINKDOWN_REASON_SPEED_POLICY, 0, set_link_down_reason(ppd, OPA_LINKDOWN_REASON_SPEED_POLICY, 0,
OPA_LINKDOWN_REASON_SPEED_POLICY); OPA_LINKDOWN_REASON_SPEED_POLICY);
set_link_state(ppd, HLS_DN_OFFLINE); set_link_state(ppd, HLS_DN_OFFLINE);
tune_serdes(ppd);
start_link(ppd); start_link(ppd);
} }
} }
...@@ -6998,12 +6997,10 @@ void handle_link_down(struct work_struct *work) ...@@ -6998,12 +6997,10 @@ void handle_link_down(struct work_struct *work)
* If there is no cable attached, turn the DC off. Otherwise, * If there is no cable attached, turn the DC off. Otherwise,
* start the link bring up. * start the link bring up.
*/ */
if (ppd->port_type == PORT_TYPE_QSFP && !qsfp_mod_present(ppd)) { if (ppd->port_type == PORT_TYPE_QSFP && !qsfp_mod_present(ppd))
dc_shutdown(ppd->dd); dc_shutdown(ppd->dd);
} else { else
tune_serdes(ppd);
start_link(ppd); start_link(ppd);
}
} }
void handle_link_bounce(struct work_struct *work) void handle_link_bounce(struct work_struct *work)
...@@ -7016,7 +7013,6 @@ void handle_link_bounce(struct work_struct *work) ...@@ -7016,7 +7013,6 @@ void handle_link_bounce(struct work_struct *work)
*/ */
if (ppd->host_link_state & HLS_UP) { if (ppd->host_link_state & HLS_UP) {
set_link_state(ppd, HLS_DN_OFFLINE); set_link_state(ppd, HLS_DN_OFFLINE);
tune_serdes(ppd);
start_link(ppd); start_link(ppd);
} else { } else {
dd_dev_info(ppd->dd, "%s: link not up (%s), nothing to do\n", dd_dev_info(ppd->dd, "%s: link not up (%s), nothing to do\n",
...@@ -7531,7 +7527,6 @@ void apply_link_downgrade_policy(struct hfi1_pportdata *ppd, int refresh_widths) ...@@ -7531,7 +7527,6 @@ void apply_link_downgrade_policy(struct hfi1_pportdata *ppd, int refresh_widths)
set_link_down_reason(ppd, OPA_LINKDOWN_REASON_WIDTH_POLICY, 0, set_link_down_reason(ppd, OPA_LINKDOWN_REASON_WIDTH_POLICY, 0,
OPA_LINKDOWN_REASON_WIDTH_POLICY); OPA_LINKDOWN_REASON_WIDTH_POLICY);
set_link_state(ppd, HLS_DN_OFFLINE); set_link_state(ppd, HLS_DN_OFFLINE);
tune_serdes(ppd);
start_link(ppd); start_link(ppd);
} }
} }
...@@ -9161,6 +9156,12 @@ static int set_local_link_attributes(struct hfi1_pportdata *ppd) ...@@ -9161,6 +9156,12 @@ static int set_local_link_attributes(struct hfi1_pportdata *ppd)
*/ */
int start_link(struct hfi1_pportdata *ppd) int start_link(struct hfi1_pportdata *ppd)
{ {
/*
* Tune the SerDes to a ballpark setting for optimal signal and bit
* error rate. Needs to be done before starting the link.
*/
tune_serdes(ppd);
if (!ppd->link_enabled) { if (!ppd->link_enabled) {
dd_dev_info(ppd->dd, dd_dev_info(ppd->dd,
"%s: stopping link start because link is disabled\n", "%s: stopping link start because link is disabled\n",
...@@ -9401,8 +9402,6 @@ void qsfp_event(struct work_struct *work) ...@@ -9401,8 +9402,6 @@ void qsfp_event(struct work_struct *work)
*/ */
set_qsfp_int_n(ppd, 1); set_qsfp_int_n(ppd, 1);
tune_serdes(ppd);
start_link(ppd); start_link(ppd);
} }
...@@ -9544,11 +9543,6 @@ static void try_start_link(struct hfi1_pportdata *ppd) ...@@ -9544,11 +9543,6 @@ static void try_start_link(struct hfi1_pportdata *ppd)
} }
ppd->qsfp_retry_count = 0; ppd->qsfp_retry_count = 0;
/*
* Tune the SerDes to a ballpark setting for optimal signal and bit
* error rate. Needs to be done before starting the link.
*/
tune_serdes(ppd);
start_link(ppd); start_link(ppd);
} }
......
...@@ -1013,7 +1013,6 @@ static int set_port_states(struct hfi1_pportdata *ppd, struct opa_smp *smp, ...@@ -1013,7 +1013,6 @@ static int set_port_states(struct hfi1_pportdata *ppd, struct opa_smp *smp,
* offline. * offline.
*/ */
set_link_state(ppd, HLS_DN_OFFLINE); set_link_state(ppd, HLS_DN_OFFLINE);
tune_serdes(ppd);
start_link(ppd); start_link(ppd);
} else { } else {
set_link_state(ppd, link_state); set_link_state(ppd, link_state);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment