MVLS(8)

πŸ“¦ version 1.3.2, in nixos 26.05, nixpkgs unstable

πŸ’… MVLS(8) β€” okay bestie, let's peek inside the switch ✨

So like, mvls is a System Manager's Manual page (section 8, very sysadmin-coded πŸ’…) and it's all about dumping the internal state of Marvell LinkStreet Ethernet switches. Yes, the actual insides. No cap.

✨ SYNOPSIS ✨

mvls [port | atu | vtu | pvt [DEV]]

πŸŽ€ DESCRIPTION πŸŽ€

Okay so here's the vibe: if you run mvls with no arguments at all, it just dumps the vtu, the atu, and the port tables for you. All three. Like a little sampler platter πŸ“.

  • port β€” lists the basic info about, like, every port on every switch on the system. All of them. Main character energy for your ports πŸ‘‘
  • atu β€” dumps all the entries in the Address Translation Units (ATUs) of every device on the system. And fun fact: ATU is the Marvell LinkStreet–specific name for a Forwarding Database (FDB). iykyk 🧚
  • vtu β€” dumps all the entries in the VLAN Translation Units (VTUs) of every device on the system. And here's the part you actually need to memorise: each port will be in one of four states:
    • . β€” not a member of the VLAN πŸ™ˆ
    • u β€” member of the VLAN, and traffic egresses untagged
    • t β€” member of the VLAN, and traffic egresses tagged
    • = β€” member of the VLAN, and traffic egresses unmodified
  • pvt [DEV] β€” the Port based VLAN Tables, bestie. If you don't give it a DEV, it shows you a condensed view of the PVTs of all devices on the system. The output is an N Γ— N matrix, where N is the number of ports on the system. Each element is one of four possible values:
    • . β€” no communication is allowed between the ports at the corresponding row and column
    • x β€” bidirectional communication is allowed between the ports at the corresponding row and column
    • < β€” only unidirectional communication from the column port to the row port is allowed
    • ^ β€” only unidirectional communication from the row port to the column port is allowed

And if you do supply DEV, it dumps the full PVT table for that device. Which is genuinely useful btw, because it lets you inspect entries that don't correspond to any physical device β€” like, specifically, those used by the mv88e6xxx driver to isolate Linux bridges. Obsessed with a debugging tool that shows you the invisible stuff πŸ¦‹


🌈 SEE ALSO 🌈

devlink(8) mdio(8)

πŸ’œ HISTORY πŸ’œ

So mvls gets all its data from the devlink interface of the mv88e6xxx driver. But β€” and this is the whole point β€” unlike devlink(8), it does not concern itself with maintaining multiple snapshots of register regions and whatnot. It's intended to be used interactively during development and debugging. Lowkey that's its entire personality 🫢

⭐ AUTHORS ⭐

Tobias Waldekranz <tobias@waldekranz.com>


Okay that's the whole page, you ate that πŸ’… Go dump some tables. This one's from the Linux manual set, version September 16, 2021, and yes the title really is MVLS(8) β€” slay, go debug something πŸŽ€πŸ”₯

πŸ“¦ where this page comes from