mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
net: systemport: Fix RUNT MIB counter register offset calculation
In UniMAC hardware, there is a 0xC byte gap between the RX MIB counters
and the TX MIB counters, and a second 0xC byte gap between the TX MIB
counters and the RX RUNT MIB counters.
In bcm_sysport_update_mib_counters(), 'offset' was only set to
UMAC_MIB_STAT_OFFSET (0xC) for all non-RX counters, omitting the second
0xC gap for BCM_SYSPORT_STAT_RUNT counters. As a result, all 4 RUNT MIB
counters were read from unmapped gap register space.
Fix this by setting offset to 2 * UMAC_MIB_STAT_OFFSET (0x18) when
reading BCM_SYSPORT_STAT_RUNT counters.
Fixes: 80105befdb ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
Reviewed-by: Nicolai Buchwitz <nb@tipi-net.de>
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20260922232440.598918-6-florian.fainelli@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
eb7b84af0e
commit
242935adfe
|
|
@ -391,8 +391,10 @@ static void bcm_sysport_update_mib_counters(struct bcm_sysport_priv *priv)
|
|||
if (priv->is_lite)
|
||||
continue;
|
||||
|
||||
if (s->type != BCM_SYSPORT_STAT_MIB_RX)
|
||||
if (s->type == BCM_SYSPORT_STAT_MIB_TX)
|
||||
offset = UMAC_MIB_STAT_OFFSET;
|
||||
else if (s->type == BCM_SYSPORT_STAT_RUNT)
|
||||
offset = 2 * UMAC_MIB_STAT_OFFSET;
|
||||
val = umac_readl(priv, UMAC_MIB_START + j + offset);
|
||||
break;
|
||||
case BCM_SYSPORT_STAT_RXCHK:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user