On 06/06/2026 11:02, Luke Howard wrote:
So it sounds like you first need to work on the software
implementation and expand the simplified version with the features you
need. You can then add support to accelerate this by offloading it to
the hardware.
Agreed.
The definition of Dynamic Reservation Entries in 802.1Q (clause 8.8.7) might
support the addition of a new MDB (or even FDB) entry state to the kernel:
- add MDB_DYNAMIC_RESERVATION (a state, not a flag);
- the software bridge only _classifies_ packets against
MDB_DYNAMIC_RESERVATION entries, and only when MDB is authoritative.
Classification sets dynamic_reservation_hit on tc_skb_ext;
- dynamic_reservation_hit is visible to the flow dissector so can be used for
policy enforcement.
See, saying the bridge has to classify doesn't sound right. Why not do the
classification where such operations are usually done, e.g. tc?
You have to manually designate these entries anyway.
Advantages:
- the new MDB state maps well to 802.1Q;
- minimal changes to bridge;
- actual policy (reclassify, drop, etc) is left to the user;
- doesn’t require a new tc-flower entry for each stream DA;
- entry state maps 1:1 to mv88e6xxx AVB_NRL ATU EntryState.
Disadvantages:
- no unicast support, although potentially can be extended (there are some
subtleties);
- mv88e6xxx support would either require rich enough tc-flower support in TCAM,
intercepting TCA_FLOWER_DYNAMIC_RESERVATION_HIT and mapping to native AVB
admission control, or a per-port devlink parameter (not so nice).
This is implemented and working with the software bridge, I still haven’t quite
figured out the right mapping for mv88e6xxx.
Luke
PS. I previously incorrectly asserted that 802.1Q required dropping frames with
AVB/SRP PCPs but without valid dynamic reservation entries. 802.1Q discussions
priority mapping in clause 6.9.4 for traffic from SRP boundary ports (those not
participating in SRP). In practice I think this should all be policy, e.g. you
might want to reprioritise valid DSCP traffic from within a SRP domain, or drop
instead of reprioritise, etc.