Commit f97fc7ef authored by Raju Rangoju's avatar Raju Rangoju Committed by Jakub Kicinski

amd-xgbe: Yellow carp devices do not need rrc

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: dbb6c58b ("net: amd-xgbe: Add Support for Yellow Carp Ethernet device")
Signed-off-by: default avatarRaju Rangoju <Raju.Rangoju@amd.com>
Acked-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4d814b32
...@@ -285,6 +285,9 @@ static int xgbe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -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 */ /* Yellow Carp devices do not need cdr workaround */
pdata->vdata->an_cdr_workaround = 0; pdata->vdata->an_cdr_workaround = 0;
/* Yellow Carp devices do not need rrc */
pdata->vdata->enable_rrc = 0;
} else { } else {
pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF; pdata->xpcs_window_def_reg = PCS_V2_WINDOW_DEF;
pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT; pdata->xpcs_window_sel_reg = PCS_V2_WINDOW_SELECT;
...@@ -483,6 +486,7 @@ static struct xgbe_version_data xgbe_v2a = { ...@@ -483,6 +486,7 @@ static struct xgbe_version_data xgbe_v2a = {
.tx_desc_prefetch = 5, .tx_desc_prefetch = 5,
.rx_desc_prefetch = 5, .rx_desc_prefetch = 5,
.an_cdr_workaround = 1, .an_cdr_workaround = 1,
.enable_rrc = 1,
}; };
static struct xgbe_version_data xgbe_v2b = { static struct xgbe_version_data xgbe_v2b = {
...@@ -498,6 +502,7 @@ static struct xgbe_version_data xgbe_v2b = { ...@@ -498,6 +502,7 @@ static struct xgbe_version_data xgbe_v2b = {
.tx_desc_prefetch = 5, .tx_desc_prefetch = 5,
.rx_desc_prefetch = 5, .rx_desc_prefetch = 5,
.an_cdr_workaround = 1, .an_cdr_workaround = 1,
.enable_rrc = 1,
}; };
static const struct pci_device_id xgbe_pci_table[] = { static const struct pci_device_id xgbe_pci_table[] = {
......
...@@ -2640,7 +2640,7 @@ static int xgbe_phy_link_status(struct xgbe_prv_data *pdata, int *an_restart) ...@@ -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 */ /* 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; phy_data->rrc_count = 0;
xgbe_phy_rrc(pdata); xgbe_phy_rrc(pdata);
} }
......
...@@ -1013,6 +1013,7 @@ struct xgbe_version_data { ...@@ -1013,6 +1013,7 @@ struct xgbe_version_data {
unsigned int tx_desc_prefetch; unsigned int tx_desc_prefetch;
unsigned int rx_desc_prefetch; unsigned int rx_desc_prefetch;
unsigned int an_cdr_workaround; unsigned int an_cdr_workaround;
unsigned int enable_rrc;
}; };
struct xgbe_prv_data { struct xgbe_prv_data {
......
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