mirror of
git://nv-tegra.nvidia.com/kernel/nvethernetrm.git
synced 2025-12-22 09:12:10 +03:00
osi: core: increase delay for 25G
Issue:
data transfers on 25G interface is not working
Fix
This seems a regression caused by the change 1e8dfaf where
updated retry_delay for 25G is not being used. Later this
part of code is being removed to fix QNX SDP7.1 compiler error
with the change 248fb63. In short existing delay of 1usec is
not sufficient for25G, so increase the same to support 25G
Bug 5015243
Signed-off-by: Narayan Reddy <narayanr@nvidia.com>
Change-Id: I5892b428add6435130af94a4b2560dd3df73107c
Reviewed-on: https://git-master.nvidia.com/r/c/kernel/nvethernetrm/+/3307461
Reviewed-by: svcacv <svcacv@nvidia.com>
Reviewed-by: Mahesh Patil <maheshp@nvidia.com>
Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com>
GVS: buildbot_gerritrpt <buildbot_gerritrpt@nvidia.com>
Reviewed-by: Bhadram Varka <vbhadram@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
144d7dc226
commit
57ebd08cbc
@@ -417,6 +417,7 @@ static nve32_t xpcs_uphy_lane_bring_up(struct osi_core_priv_data *osi_core,
|
|||||||
nveu32_t count;
|
nveu32_t count;
|
||||||
nve32_t ret = 0;
|
nve32_t ret = 0;
|
||||||
nveu32_t once = 0;
|
nveu32_t once = 0;
|
||||||
|
nveu64_t retry_delay = OSI_DELAY_1US;
|
||||||
const nveu32_t uphy_status_reg[OSI_MAX_MAC_IP_TYPES] = {
|
const nveu32_t uphy_status_reg[OSI_MAX_MAC_IP_TYPES] = {
|
||||||
EQOS_XPCS_WRAP_UPHY_STATUS,
|
EQOS_XPCS_WRAP_UPHY_STATUS,
|
||||||
XPCS_WRAP_UPHY_STATUS,
|
XPCS_WRAP_UPHY_STATUS,
|
||||||
@@ -430,6 +431,15 @@ static nve32_t xpcs_uphy_lane_bring_up(struct osi_core_priv_data *osi_core,
|
|||||||
|
|
||||||
if ((osi_core->mac == OSI_MAC_HW_MGBE_T26X) || (osi_core->mac_ver == OSI_EQOS_MAC_5_40)) {
|
if ((osi_core->mac == OSI_MAC_HW_MGBE_T26X) || (osi_core->mac_ver == OSI_EQOS_MAC_5_40)) {
|
||||||
retry = 1000U;
|
retry = 1000U;
|
||||||
|
if (osi_core->uphy_gbe_mode == OSI_GBE_MODE_25G) {
|
||||||
|
/* Delay added as per HW team suggestion which is
|
||||||
|
* of 100msec if equalizer is enabled for every
|
||||||
|
* iteration of a lane bring sequence. So 100 * 1000
|
||||||
|
* gives us a delay of 100msec for each retry of lane
|
||||||
|
* bringup
|
||||||
|
*/
|
||||||
|
retry_delay = 100U;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val = osi_readla(osi_core,
|
val = osi_readla(osi_core,
|
||||||
@@ -466,10 +476,10 @@ static nve32_t xpcs_uphy_lane_bring_up(struct osi_core_priv_data *osi_core,
|
|||||||
* but added an extra count of 4 for safer side
|
* but added an extra count of 4 for safer side
|
||||||
*/
|
*/
|
||||||
if (once == 0U) {
|
if (once == 0U) {
|
||||||
osi_core->osd_ops.udelay(OSI_DELAY_1US);
|
osi_core->osd_ops.udelay(retry_delay);
|
||||||
once = 1U;
|
once = 1U;
|
||||||
} else {
|
} else {
|
||||||
osi_core->osd_ops.udelay(OSI_DELAY_4US);
|
osi_core->osd_ops.udelay(retry_delay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user