* [net PATCH 0/3] Fix PFC related issues
@ 2023-08-08 11:27 Suman Ghosh
2023-08-08 11:27 ` [net PATCH 1/3] octeontx2-pf: Update PFC configuration Suman Ghosh
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Suman Ghosh @ 2023-08-08 11:27 UTC (permalink / raw)
To: sgoutham, gakula, sbhatta, hkelam, davem, edumazet, kuba, pabeni,
netdev, linux-kernel, lcherian, jerinj
Cc: Suman Ghosh
This patchset fixes multiple PFC related issues related to Octeon.
Patch #1: octeontx2-pf: Update PFC configuration
Patch #2: octeontx2-pf: Fix PFC TX scheduler free
Patch #3: octeontx2-af: CN10KB: fix PFC configuration
Hariprasad Kelam (1):
octeontx2-af: CN10KB: fix PFC configuration
Suman Ghosh (2):
octeontx2-pf: Update PFC configuration
octeontx2-pf: Fix PFC TX scheduler free
.../net/ethernet/marvell/octeontx2/af/rpm.c | 17 ++++++------
.../ethernet/marvell/octeontx2/af/rvu_reg.c | 4 +--
.../marvell/octeontx2/nic/otx2_dcbnl.c | 27 ++++++-------------
3 files changed, 19 insertions(+), 29 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [net PATCH 1/3] octeontx2-pf: Update PFC configuration
2023-08-08 11:27 [net PATCH 0/3] Fix PFC related issues Suman Ghosh
@ 2023-08-08 11:27 ` Suman Ghosh
2023-08-08 11:27 ` [net PATCH 2/3] octeontx2-pf: Fix PFC TX scheduler free Suman Ghosh
2023-08-08 11:27 ` [net PATCH 3/3] octeontx2-af: CN10KB: fix PFC configuration Suman Ghosh
2 siblings, 0 replies; 5+ messages in thread
From: Suman Ghosh @ 2023-08-08 11:27 UTC (permalink / raw)
To: sgoutham, gakula, sbhatta, hkelam, davem, edumazet, kuba, pabeni,
netdev, linux-kernel, lcherian, jerinj
Cc: Suman Ghosh
As of now we are creating/deleting Tx schedulers when user is
setting PFC on/off. The problem is if we have a running traffic on
the interface and as we are updating the sq->smq mapping on the fly,
we might loose completion interrupt for some packets. As a result of
that a watchdog reset is hit from BQL.
This patch solves the issue by simply calling interface off/on APIs
which will reconfigure all the queues. We might loss the running traffic
momentarily but that should be fine.
Fixes: 99c969a83d82 ("octeontx2-pf: Add egress PFC support")
Signed-off-by: Suman Ghosh <sumang@marvell.com>
---
.../net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
index ccaf97bb1ce0..d54edfa8fcc9 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
@@ -406,6 +406,7 @@ static int otx2_dcbnl_ieee_getpfc(struct net_device *dev, struct ieee_pfc *pfc)
static int otx2_dcbnl_ieee_setpfc(struct net_device *dev, struct ieee_pfc *pfc)
{
struct otx2_nic *pfvf = netdev_priv(dev);
+ bool if_up = netif_running(dev);
int err;
/* Save PFC configuration to interface */
@@ -426,14 +427,9 @@ static int otx2_dcbnl_ieee_setpfc(struct net_device *dev, struct ieee_pfc *pfc)
if (err)
return err;
- /* Request Per channel Bpids */
- if (pfc->pfc_en)
- otx2_nix_config_bp(pfvf, true);
-
- err = otx2_pfc_txschq_update(pfvf);
- if (err) {
- dev_err(pfvf->dev, "%s failed to update TX schedulers\n", __func__);
- return err;
+ if (if_up) {
+ otx2_stop(dev);
+ otx2_open(dev);
}
return 0;
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [net PATCH 2/3] octeontx2-pf: Fix PFC TX scheduler free
2023-08-08 11:27 [net PATCH 0/3] Fix PFC related issues Suman Ghosh
2023-08-08 11:27 ` [net PATCH 1/3] octeontx2-pf: Update PFC configuration Suman Ghosh
@ 2023-08-08 11:27 ` Suman Ghosh
2023-08-08 22:15 ` Jakub Kicinski
2023-08-08 11:27 ` [net PATCH 3/3] octeontx2-af: CN10KB: fix PFC configuration Suman Ghosh
2 siblings, 1 reply; 5+ messages in thread
From: Suman Ghosh @ 2023-08-08 11:27 UTC (permalink / raw)
To: sgoutham, gakula, sbhatta, hkelam, davem, edumazet, kuba, pabeni,
netdev, linux-kernel, lcherian, jerinj
Cc: Suman Ghosh
During PFC TX schedulers free, flag TXSCHQ_FREE_ALL was being set
which caused free up all schedulers other than the PFC schedulers.
This patch fixes that to free only the PFC Tx schedulers.
Fixes: 99c969a83d82 ("octeontx2-pf: Add egress PFC support")
Signed-off-by: Suman Ghosh <sumang@marvell.com>
---
.../ethernet/marvell/octeontx2/nic/otx2_dcbnl.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
index d54edfa8fcc9..c75435bab411 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
@@ -125,19 +125,12 @@ int otx2_pfc_txschq_alloc(struct otx2_nic *pfvf)
static int otx2_pfc_txschq_stop_one(struct otx2_nic *pfvf, u8 prio)
{
- struct nix_txsch_free_req *free_req;
+ int lvl;
- mutex_lock(&pfvf->mbox.lock);
/* free PFC TLx nodes */
- free_req = otx2_mbox_alloc_msg_nix_txsch_free(&pfvf->mbox);
- if (!free_req) {
- mutex_unlock(&pfvf->mbox.lock);
- return -ENOMEM;
- }
-
- free_req->flags = TXSCHQ_FREE_ALL;
- otx2_sync_mbox_msg(&pfvf->mbox);
- mutex_unlock(&pfvf->mbox.lock);
+ for (lvl = 0; lvl < pfvf->hw.txschq_link_cfg_lvl; lvl++)
+ otx2_txschq_free_one(pfvf, lvl,
+ pfvf->pfc_schq_list[lvl][prio]);
pfvf->pfc_alloc_status[prio] = false;
return 0;
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [net PATCH 3/3] octeontx2-af: CN10KB: fix PFC configuration
2023-08-08 11:27 [net PATCH 0/3] Fix PFC related issues Suman Ghosh
2023-08-08 11:27 ` [net PATCH 1/3] octeontx2-pf: Update PFC configuration Suman Ghosh
2023-08-08 11:27 ` [net PATCH 2/3] octeontx2-pf: Fix PFC TX scheduler free Suman Ghosh
@ 2023-08-08 11:27 ` Suman Ghosh
2 siblings, 0 replies; 5+ messages in thread
From: Suman Ghosh @ 2023-08-08 11:27 UTC (permalink / raw)
To: sgoutham, gakula, sbhatta, hkelam, davem, edumazet, kuba, pabeni,
netdev, linux-kernel, lcherian, jerinj
From: Hariprasad Kelam <hkelam@marvell.com>
The previous patch which added new CN10KB RPM block support,
has a bug due to which PFC is not getting configured properly.
This patch fixes the same.
Fixes: b9d0fedc6234 ("octeontx2-af: cn10kb: Add RPM_USX MAC support")
Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
---
drivers/net/ethernet/marvell/octeontx2/af/rpm.c | 17 +++++++++--------
.../net/ethernet/marvell/octeontx2/af/rvu_reg.c | 4 ++--
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rpm.c b/drivers/net/ethernet/marvell/octeontx2/af/rpm.c
index b4fcb20c3f4f..af21e2030cff 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/rpm.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/rpm.c
@@ -355,8 +355,8 @@ int rpm_lmac_enadis_pause_frm(void *rpmd, int lmac_id, u8 tx_pause,
void rpm_lmac_pause_frm_config(void *rpmd, int lmac_id, bool enable)
{
+ u64 cfg, pfc_class_mask_cfg;
rpm_t *rpm = rpmd;
- u64 cfg;
/* ALL pause frames received are completely ignored */
cfg = rpm_read(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG);
@@ -380,9 +380,11 @@ void rpm_lmac_pause_frm_config(void *rpmd, int lmac_id, bool enable)
rpm_write(rpm, 0, RPMX_CMR_CHAN_MSK_OR, ~0ULL);
/* Disable all PFC classes */
- cfg = rpm_read(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL);
+ pfc_class_mask_cfg = is_dev_rpm2(rpm) ? RPM2_CMRX_PRT_CBFC_CTL :
+ RPMX_CMRX_PRT_CBFC_CTL;
+ cfg = rpm_read(rpm, lmac_id, pfc_class_mask_cfg);
cfg = FIELD_SET(RPM_PFC_CLASS_MASK, 0, cfg);
- rpm_write(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL, cfg);
+ rpm_write(rpm, lmac_id, pfc_class_mask_cfg, cfg);
}
int rpm_get_rx_stats(void *rpmd, int lmac_id, int idx, u64 *rx_stat)
@@ -605,8 +607,11 @@ int rpm_lmac_pfc_config(void *rpmd, int lmac_id, u8 tx_pause, u8 rx_pause, u16 p
if (!is_lmac_valid(rpm, lmac_id))
return -ENODEV;
+ pfc_class_mask_cfg = is_dev_rpm2(rpm) ? RPM2_CMRX_PRT_CBFC_CTL :
+ RPMX_CMRX_PRT_CBFC_CTL;
+
cfg = rpm_read(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG);
- class_en = rpm_read(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL);
+ class_en = rpm_read(rpm, lmac_id, pfc_class_mask_cfg);
pfc_en |= FIELD_GET(RPM_PFC_CLASS_MASK, class_en);
if (rx_pause) {
@@ -635,10 +640,6 @@ int rpm_lmac_pfc_config(void *rpmd, int lmac_id, u8 tx_pause, u8 rx_pause, u16 p
cfg |= RPMX_MTI_MAC100X_COMMAND_CONFIG_PFC_MODE;
rpm_write(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG, cfg);
-
- pfc_class_mask_cfg = is_dev_rpm2(rpm) ? RPM2_CMRX_PRT_CBFC_CTL :
- RPMX_CMRX_PRT_CBFC_CTL;
-
rpm_write(rpm, lmac_id, pfc_class_mask_cfg, class_en);
return 0;
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.c
index b3150f053291..d46ac29adb96 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_reg.c
@@ -31,8 +31,8 @@ static struct hw_reg_map txsch_reg_map[NIX_TXSCH_LVL_CNT] = {
{NIX_TXSCH_LVL_TL4, 3, 0xFFFF, {{0x0B00, 0x0B08}, {0x0B10, 0x0B18},
{0x1200, 0x12E0} } },
{NIX_TXSCH_LVL_TL3, 4, 0xFFFF, {{0x1000, 0x10E0}, {0x1600, 0x1608},
- {0x1610, 0x1618}, {0x1700, 0x17B0} } },
- {NIX_TXSCH_LVL_TL2, 2, 0xFFFF, {{0x0E00, 0x0EE0}, {0x1700, 0x17B0} } },
+ {0x1610, 0x1618}, {0x1700, 0x17C8} } },
+ {NIX_TXSCH_LVL_TL2, 2, 0xFFFF, {{0x0E00, 0x0EE0}, {0x1700, 0x17C8} } },
{NIX_TXSCH_LVL_TL1, 1, 0xFFFF, {{0x0C00, 0x0D98} } },
};
--
2.25.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [net PATCH 2/3] octeontx2-pf: Fix PFC TX scheduler free
2023-08-08 11:27 ` [net PATCH 2/3] octeontx2-pf: Fix PFC TX scheduler free Suman Ghosh
@ 2023-08-08 22:15 ` Jakub Kicinski
0 siblings, 0 replies; 5+ messages in thread
From: Jakub Kicinski @ 2023-08-08 22:15 UTC (permalink / raw)
To: Suman Ghosh
Cc: sgoutham, gakula, sbhatta, hkelam, davem, edumazet, pabeni,
netdev, linux-kernel, lcherian, jerinj
On Tue, 8 Aug 2023 16:57:07 +0530 Suman Ghosh wrote:
> + for (lvl = 0; lvl < pfvf->hw.txschq_link_cfg_lvl; lvl++)
> + otx2_txschq_free_one(pfvf, lvl,
> + pfvf->pfc_schq_list[lvl][prio]);
ERROR: modpost: "otx2_txschq_free_one" [drivers/net/ethernet/marvell/octeontx2/nic/rvu_nicvf.ko] undefined!
--
pw-bot: cr
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-08-08 22:15 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-08 11:27 [net PATCH 0/3] Fix PFC related issues Suman Ghosh
2023-08-08 11:27 ` [net PATCH 1/3] octeontx2-pf: Update PFC configuration Suman Ghosh
2023-08-08 11:27 ` [net PATCH 2/3] octeontx2-pf: Fix PFC TX scheduler free Suman Ghosh
2023-08-08 22:15 ` Jakub Kicinski
2023-08-08 11:27 ` [net PATCH 3/3] octeontx2-af: CN10KB: fix PFC configuration Suman Ghosh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.