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: b9d0fedc6234 ("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>
This commit is contained in:
parent
a9ac2e1877
commit
47bcc9c1cf
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user