mirror of
https://github.com/torvalds/linux.git
synced 2026-10-09 20:09:02 +02:00
net: bcmgenet: mask DMA_TIMEOUT_MASK when reading DMA_RING0_TIMEOUT
bcmgenet_get_coalesce() reads DMA_RING0_TIMEOUT to calculate
rx_coalesce_usecs without masking out bits outside DMA_TIMEOUT_MASK
(16 bits). If upper bits are non-zero or contain status/flags, the
computed value of rx_coalesce_usecs returned to userspace via ethtool
becomes corrupted.
Mask the register read with DMA_TIMEOUT_MASK before computing the
timeout in microseconds.
Fixes: 4a29645bfe ("net: bcmgenet: Implement RX coalescing control knobs")
Reviewed-by: Nicolai Buchwitz <nb@tipi-net.de>
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20260921220021.281418-6-florian.fainelli@broadcom.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
273941c85f
commit
d64e277b95
|
|
@ -852,7 +852,8 @@ static int bcmgenet_get_coalesce(struct net_device *dev,
|
|||
ec->rx_max_coalesced_frames =
|
||||
bcmgenet_rdma_ring_readl(priv, 0, DMA_MBUF_DONE_THRESH);
|
||||
ec->rx_coalesce_usecs =
|
||||
bcmgenet_rdma_readl(priv, DMA_RING0_TIMEOUT) * 8192 / 1000;
|
||||
(bcmgenet_rdma_readl(priv, DMA_RING0_TIMEOUT) &
|
||||
DMA_TIMEOUT_MASK) * 8192 / 1000;
|
||||
|
||||
for (i = 0; i <= priv->hw_params->rx_queues; i++) {
|
||||
ring = &priv->rx_rings[i];
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user