Skip to content

Commit 47bcc9c

Browse files
Hariprasad Kelamkuba-moo
authored andcommitted
octeontx2-af: CN10KB: fix PFC configuration
Suppose user has enabled pfc with prio 0,1 on a PF netdev(eth0) dcb pfc set dev eth0 prio-pfc o:on 1:on later user enabled pfc priorities 2 and 3 on the VF interface(eth1) dcb pfc set dev eth1 prio-pfc 2:on 3:on Instead of enabling pfc on all priorities (0..3), the driver only enables on priorities 2,3. This patch corrects the issue by using the proper CSR address. Fixes: b9d0fed ("octeontx2-af: cn10kb: Add RPM_USX MAC support") Signed-off-by: Hariprasad Kelam <hkelam@marvell.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://lore.kernel.org/r/20230824081032.436432-3-sumang@marvell.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent a9ac2e1 commit 47bcc9c

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

  • drivers/net/ethernet/marvell/octeontx2/af

drivers/net/ethernet/marvell/octeontx2/af/rpm.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -355,8 +355,8 @@ int rpm_lmac_enadis_pause_frm(void *rpmd, int lmac_id, u8 tx_pause,
355355

356356
void rpm_lmac_pause_frm_config(void *rpmd, int lmac_id, bool enable)
357357
{
358+
u64 cfg, pfc_class_mask_cfg;
358359
rpm_t *rpm = rpmd;
359-
u64 cfg;
360360

361361
/* ALL pause frames received are completely ignored */
362362
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)
380380
rpm_write(rpm, 0, RPMX_CMR_CHAN_MSK_OR, ~0ULL);
381381

382382
/* Disable all PFC classes */
383-
cfg = rpm_read(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL);
383+
pfc_class_mask_cfg = is_dev_rpm2(rpm) ? RPM2_CMRX_PRT_CBFC_CTL :
384+
RPMX_CMRX_PRT_CBFC_CTL;
385+
cfg = rpm_read(rpm, lmac_id, pfc_class_mask_cfg);
384386
cfg = FIELD_SET(RPM_PFC_CLASS_MASK, 0, cfg);
385-
rpm_write(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL, cfg);
387+
rpm_write(rpm, lmac_id, pfc_class_mask_cfg, cfg);
386388
}
387389

388390
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
605607
if (!is_lmac_valid(rpm, lmac_id))
606608
return -ENODEV;
607609

610+
pfc_class_mask_cfg = is_dev_rpm2(rpm) ? RPM2_CMRX_PRT_CBFC_CTL :
611+
RPMX_CMRX_PRT_CBFC_CTL;
612+
608613
cfg = rpm_read(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG);
609-
class_en = rpm_read(rpm, lmac_id, RPMX_CMRX_PRT_CBFC_CTL);
614+
class_en = rpm_read(rpm, lmac_id, pfc_class_mask_cfg);
610615
pfc_en |= FIELD_GET(RPM_PFC_CLASS_MASK, class_en);
611616

612617
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
635640
cfg |= RPMX_MTI_MAC100X_COMMAND_CONFIG_PFC_MODE;
636641

637642
rpm_write(rpm, lmac_id, RPMX_MTI_MAC100X_COMMAND_CONFIG, cfg);
638-
639-
pfc_class_mask_cfg = is_dev_rpm2(rpm) ? RPM2_CMRX_PRT_CBFC_CTL :
640-
RPMX_CMRX_PRT_CBFC_CTL;
641-
642643
rpm_write(rpm, lmac_id, pfc_class_mask_cfg, class_en);
643644

644645
return 0;

0 commit comments

Comments
 (0)