Message ID | 20221020064215.2341278-2-Raju.Rangoju@amd.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f97fc7ef414603189d5ba6f529407c5341c03c2a |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | amd-xgbe: Miscellaneous fixes | expand |
On Thu, 20 Oct 2022 12:12:11 +0530 Raju Rangoju wrote: > Link stability issues are noticed on Yellow carp platforms when Receiver > Reset Cycle is issued. Since the CDR workaround is disabled on these > platforms, the Receiver Reset Cycle is not needed. > > So, avoid issuing rrc on Yellow carp platforms. Let me retry [1] the same question: These devices are only present on SoCs? Changing global data during probe looks odd. [1] https://lore.kernel.org/all/20221006172654.45372b3b@kernel.org/
On 10/20/22 23:46, Jakub Kicinski wrote: > On Thu, 20 Oct 2022 12:12:11 +0530 Raju Rangoju wrote: >> Link stability issues are noticed on Yellow carp platforms when Receiver >> Reset Cycle is issued. Since the CDR workaround is disabled on these >> platforms, the Receiver Reset Cycle is not needed. >> >> So, avoid issuing rrc on Yellow carp platforms. > > Let me retry [1] the same question: > > These devices are only present on SoCs? Changing global data during > probe looks odd. I can answer for Raju, yes, these are only on SoCs. But it would still probably be worth a series that allocates memory to copy the vdata and use that, free to modify without impacting any other device that is probed. Thanks, Tom > > [1] https://lore.kernel.org/all/20221006172654.45372b3b@kernel.org/
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c index 2af3da4b2d05..f409d7bd1f1e 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-pci.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-pci.c @@ -285,6 +285,9 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) /* Yellow Carp devices do not need cdr workaround */ pdata->vdata->an_cdr_workaround = 0; + + /* Yellow Carp devices do not need rrc */ + pdata->vdata->enable_rrc = 0; } else { pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; @@ -483,6 +486,7 @@ static struct xgbe_version_data xgbe_v2a = { .tx_desc_prefetch = 5, .rx_desc_prefetch = 5, .an_cdr_workaround = 1, + .enable_rrc = 1, }; static struct xgbe_version_data xgbe_v2b = { @@ -498,6 +502,7 @@ static struct xgbe_version_data xgbe_v2b = { .tx_desc_prefetch = 5, .rx_desc_prefetch = 5, .an_cdr_workaround = 1, + .enable_rrc = 1, }; static const struct pci_device_id xgbe_pci_table[] = { diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c index 2156600641b6..19b943eba560 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c @@ -2640,7 +2640,7 @@ static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart) } /* No link, attempt a receiver reset cycle */ - if (phy_data->rrc_count++ > XGBE_RRC_FREQUENCY) { + if (pdata->vdata->enable_rrc && phy_data->rrc_count++ > XGBE_RRC_FREQUENCY) { phy_data->rrc_count = 0; xgbe_phy_rrc(pdata); } diff --git a/drivers/net/ethernet/amd/xgbe/xgbe.h b/drivers/net/ethernet/amd/xgbe/xgbe.h index b875c430222e..49d23abce73d 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe.h +++ b/drivers/net/ethernet/amd/xgbe/xgbe.h @@ -1013,6 +1013,7 @@ struct xgbe_version_data { unsigned int tx_desc_prefetch; unsigned int rx_desc_prefetch; unsigned int an_cdr_workaround; + unsigned int enable_rrc; }; struct xgbe_prv_data {
Link stability issues are noticed on Yellow carp platforms when Receiver Reset Cycle is issued. Since the CDR workaround is disabled on these platforms, the Receiver Reset Cycle is not needed. So, avoid issuing rrc on Yellow carp platforms. Fixes: dbb6c58b5a61 ("net: amd-xgbe: Add Support for Yellow Carp Ethernet device") Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com> --- Changes since v1: - Use the correct fixes tag - Update the commit message drivers/net/ethernet/amd/xgbe/xgbe-pci.c | 5 +++++ drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 2 +- drivers/net/ethernet/amd/xgbe/xgbe.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-)