mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
port: add a helper to steer a link-local group via a static L2 entry
port_l2mc_set() writes a static L2 multicast entry for a reserved group 01:80:C2:00:00:<last> in a given VLAN with a given member portmask. Slow-protocol frames must reach the management CPU without being flooded to other ports, but the RMA "trap" action cannot deliver to the internal NIC on this hardware - its destination is an external CPU attached to a physical port. The working alternative is to keep the RMA action at "forward" and constrain the egress with a static entry: the forward lookup then hits the entry's member mask instead of the VLAN flood mask. Hardware-verified on a SWTGW218AS in both directions: a mask without the CPU bit stops delivery to the CPU, a CPU-only mask delivers with no port egress. Lookups are IVL, so callers add one entry per VID they care about; rewriting the same MAC+VID replaces the entry in place. Used by the BPDU containment in the next commit; the pending LACP branch adopts it for 01:80:C2:00:00:02 the same way.
This commit is contained in:
@@ -54,6 +54,7 @@ void vlan_name_remove(uint16_t vlan) __banked;
|
||||
void vlan_setup(void) __banked;
|
||||
void port_pvid_set(uint8_t port, __xdata uint16_t pvid) __banked;
|
||||
uint16_t port_pvid_get(uint8_t port) __banked;
|
||||
void port_l2mc_set(uint8_t mac_last, __xdata uint16_t vid, __xdata uint16_t pmask) __banked;
|
||||
void vlan_create(void) __banked;
|
||||
void vlan_delete(uint16_t vlan) __banked;
|
||||
void vlan_dump(void) __banked;
|
||||
|
||||
Reference in New Issue
Block a user