Side effect of putting OpenWrt on a Sophos XGS 107w: its
Marvell 88E6193X switch wouldn't probe under a recent kernel. Chasing that down turned into a
net: dsa: mv88e6xxx fix, reviewed by Marvell switch driver maintainer Andrew Lunn and
merged into net.git by netdev maintainer Jakub Kicinski.
The failure
Booting a mainline kernel against the XGS 107w's switch produced:
mv88e6xxx ...: unexpected cycle counter period of 0 ps
and the switch never probed — no ports, nothing. The 88E6193X is a 6393-family part, and the
driver's mv88e6xxx_table entry for it points at mv88e6393x_ops with
ptp_support = true. Since 7e3c18097a70 ("net: dsa: mv88e6xxx: read cycle
counter period from hardware"), PTP setup reads that period straight from the TAI (Time
Application Interface) hardware registers — and on this chip, that register reads back zero.
Root cause
The 88E6191X and 88E6193X share mv88e6393x_ops with the 88E6393X, which does have
PTP and AVB. But Marvell's own UMSD reference driver describes the 88E6193X's package as "No AVB,
No Routing, No Cut-through" — and reading the actual hardware on the reference unit confirmed it
directly: the whole indirect AVB register space behind Global 2 registers 0x16/0x17 read zero for
every port, block and address, tried with both the 6390 and 6352 command encodings. Writes to the
TAI registers — including the clock period register the new probe code reads — read back as zero
too. The chip has no AVB or PTP block at all; the driver was just assuming it did because it shares
an ops struct with a sibling that does.
From workaround to real fix
The first attempt was a narrower workaround — just enough to stop the probe from reading a
period of zero. Andrew Lunn, one of the mv88e6xxx maintainers, suggested the actual
fix instead: give the 88E6191X and 88E6193X their own ops struct. Suggested-by
on the final patch is his.
mv88e6191x_ops is a copy of mv88e6393x_ops with avb_ops
and ptp_ops left out, and ptp_support dropped from both table entries:
- .ptp_support = true,
- .ops = &mv88e6393x_ops,
+ .ops = &mv88e6191x_ops,
(applied to both the MV88E6191X and MV88E6193X entries in
mv88e6xxx_table). The 88E6393X itself is untouched — it keeps
mv88e6393x_ops and real PTP support. Tested on the reference 88E6193X: the switch
probes and every port works. There's no 88E6191X on hand to test directly, but UMSD describes it
the same way as the 88E6193X, so it gets the same treatment.
Review and merge
Sent to netdev as [PATCH net v2], tagged Fixes: de776d0d316f since
that's the commit that turned a latent assumption into an actual probe failure. Andrew Lunn
reviewed it (Reviewed-by), and it was picked up by Jakub Kicinski —
the netdev subsystem maintainer — into net.git:
net: dsa: mv88e6xxx: 88E6191X and 88E6193X have no PTP →
Timeline
Both series — the netdev fix above and a 3-patch series adding the Sophos vendor prefix and a
device tree for the XGS 107w's Marvell CN9130 NPU board, sent to the mvebu/dt tree —
went out together and were reviewed in parallel:
| Date | Event |
|---|---|
| 2026-09-19 | v1 sent: 3 device-tree patches (vendor prefix, binding, DTS) + the netdev patch |
| 2026-09-20 | Andrew Lunn and Krzysztof Kozlowski review v1, request changes |
| 2026-09-21 02:26 | v2 of the 3 device-tree patches sent |
| 2026-09-21 05:56 | v2 of the netdev patch sent |
| 2026-09-21 14:18 | Andrew Lunn gives Reviewed-by on the netdev patch
v2 |
| 2026-09-22 14:08 | Andrew Lunn gives Reviewed-by on device-tree patch
3/3 (the board DTS) |
| 2026-09-24 | Netdev patch merged into net.git by Jakub Kicinski, commit
6b491af0 |
| 2026-09-24 | Krzysztof Kozlowski gives Acked-by on device-tree patch
2/3 (the binding) |
| 2026-09-28 | Netdev patch backported to the 7.2-stable tree by Sasha Levin
(queue-7.2), commit 6a366176ce5f |
Device-tree patch 1/3 (the sophos vendor prefix) already had Krzysztof Kozlowski's
Acked-by from the v1 review on 2026-09-20, carried unchanged into v2.
Device tree: signed off, not applied yet
As of 2026-09-28, all three device-tree patches have every reviewer's sign-off they need — 1/3
and 2/3 Acked-by Krzysztof Kozlowski, 3/3 Reviewed-by Andrew Lunn — but no
Marvell/mvebu maintainer (Gregory Clement, Andrew Lunn or Sebastian Hesselbarth) has applied them to
their tree yet. That's the one open item, no date yet. All four patches, the cover letter and the
checks run on them are in the project repo's
upstream/
directory.
Full project background: the Sophos XGS 107w docs page and the OpenWrt write-up.