Commit 6fc21641 authored by Hariprasad Kelam's avatar Hariprasad Kelam Committed by Paolo Abeni
Browse files

octeontx2-af: RPM: fix stale FCFEC counters



The corrected words register(FCFECX_VL0_CCW_LO)/Uncorrected words
register (FCFECX_VL0_NCCW_LO) of FCFEC counter has different LMAC
offset which needs to be accessed differently.

Fixes: 84ad3642 ("octeontx2-af: Add FEC stats for RPM/RPM_USX block")
Signed-off-by: default avatarHariprasad Kelam <hkelam@marvell.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 07cd1eb1
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -704,27 +704,27 @@ int rpm_get_fec_stats(void *rpmd, int lmac_id, struct cgx_fec_stats_rsp *rsp)
	 */
	mutex_lock(&rpm->lock);
	if (rpm->lmac_idmap[lmac_id]->link_info.fec == OTX2_FEC_BASER) {
		val_lo = rpm_read(rpm, lmac_id, RPMX_MTI_FCFECX_VL0_CCW_LO);
		val_hi = rpm_read(rpm, lmac_id, RPMX_MTI_FCFECX_CW_HI);
		val_lo = rpm_read(rpm, 0, RPMX_MTI_FCFECX_VL0_CCW_LO(lmac_id));
		val_hi = rpm_read(rpm, 0, RPMX_MTI_FCFECX_CW_HI(lmac_id));
		rsp->fec_corr_blks = (val_hi << 16 | val_lo);

		val_lo = rpm_read(rpm, lmac_id, RPMX_MTI_FCFECX_VL0_NCCW_LO);
		val_hi = rpm_read(rpm, lmac_id, RPMX_MTI_FCFECX_CW_HI);
		val_lo = rpm_read(rpm, 0, RPMX_MTI_FCFECX_VL0_NCCW_LO(lmac_id));
		val_hi = rpm_read(rpm, 0, RPMX_MTI_FCFECX_CW_HI(lmac_id));
		rsp->fec_uncorr_blks = (val_hi << 16 | val_lo);

		/* 50G uses 2 Physical serdes lines */
		if (rpm->lmac_idmap[lmac_id]->link_info.lmac_type_id ==
		    LMAC_MODE_50G_R) {
			val_lo = rpm_read(rpm, lmac_id,
					  RPMX_MTI_FCFECX_VL1_CCW_LO);
			val_hi = rpm_read(rpm, lmac_id,
					  RPMX_MTI_FCFECX_CW_HI);
			val_lo = rpm_read(rpm, 0,
					  RPMX_MTI_FCFECX_VL1_CCW_LO(lmac_id));
			val_hi = rpm_read(rpm, 0,
					  RPMX_MTI_FCFECX_CW_HI(lmac_id));
			rsp->fec_corr_blks += (val_hi << 16 | val_lo);

			val_lo = rpm_read(rpm, lmac_id,
					  RPMX_MTI_FCFECX_VL1_NCCW_LO);
			val_hi = rpm_read(rpm, lmac_id,
					  RPMX_MTI_FCFECX_CW_HI);
			val_lo = rpm_read(rpm, 0,
					  RPMX_MTI_FCFECX_VL1_NCCW_LO(lmac_id));
			val_hi = rpm_read(rpm, 0,
					  RPMX_MTI_FCFECX_CW_HI(lmac_id));
			rsp->fec_uncorr_blks += (val_hi << 16 | val_lo);
		}
	} else {
+5 −5
Original line number Diff line number Diff line
@@ -91,11 +91,11 @@
#define RPMX_MTI_RSFEC_STAT_FAST_DATA_HI_CDC            0x40000
#define RPMX_MTI_RSFEC_STAT_COUNTER_CAPTURE_2		0x40050
#define RPMX_MTI_RSFEC_STAT_COUNTER_CAPTURE_3		0x40058
#define RPMX_MTI_FCFECX_VL0_CCW_LO			0x38618
#define RPMX_MTI_FCFECX_VL0_NCCW_LO			0x38620
#define RPMX_MTI_FCFECX_VL1_CCW_LO			0x38628
#define RPMX_MTI_FCFECX_VL1_NCCW_LO			0x38630
#define RPMX_MTI_FCFECX_CW_HI				0x38638
#define RPMX_MTI_FCFECX_VL0_CCW_LO(a)			(0x38618 + ((a) * 0x40))
#define RPMX_MTI_FCFECX_VL0_NCCW_LO(a)			(0x38620 + ((a) * 0x40))
#define RPMX_MTI_FCFECX_VL1_CCW_LO(a)			(0x38628 + ((a) * 0x40))
#define RPMX_MTI_FCFECX_VL1_NCCW_LO(a)			(0x38630 + ((a) * 0x40))
#define RPMX_MTI_FCFECX_CW_HI(a)			(0x38638 + ((a) * 0x40))

/* CN10KB CSR Declaration */
#define  RPM2_CMRX_SW_INT				0x1b0