aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKornel Dulęba <kd@FreeBSD.org>2022-07-04 06:53:41 +0000
committerKornel Dulęba <kd@FreeBSD.org>2022-07-04 14:22:22 +0000
commit66548259075788d2084e9da1c5df7b88f44c4b4d (patch)
tree79930811d3fd6ee957634b84252028a0f9e7e1f4
parent9dbacce2d48abf04b4d65d2994586e1ff44b08fb (diff)
downloadsrc-66548259075788d2084e9da1c5df7b88f44c4b4d.tar.gz
src-66548259075788d2084e9da1c5df7b88f44c4b4d.zip
e6000sw: Fix direct register write logic
When accessing a register directly from etherswitchcfg one must specify a register group(e.g. registers of portN) and the register offset within the group. The latter is passed as the 5 least significant bits. Extract the former by dividing the register address by 32, not by 5. Approved by: mw(mentor) Obtained from: Semihalf Sponsored by: Stormshield MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D35672
-rw-r--r--sys/dev/etherswitch/e6000sw/e6000sw.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/etherswitch/e6000sw/e6000sw.c b/sys/dev/etherswitch/e6000sw/e6000sw.c
index 3c0ede5cddcd..7374fe2d74e5 100644
--- a/sys/dev/etherswitch/e6000sw/e6000sw.c
+++ b/sys/dev/etherswitch/e6000sw/e6000sw.c
@@ -1061,7 +1061,7 @@ e6000sw_writereg_wrapper(device_t dev, int addr_reg, int val)
device_printf(dev, "Wrong register address.\n");
return (EINVAL);
}
- e6000sw_writereg(device_get_softc(dev), addr_reg / 5,
+ e6000sw_writereg(device_get_softc(dev), addr_reg / 32,
addr_reg % 32, val);
return (0);