1. 最近在调试一款三层交换机,方案是 BCM56218,在测试过程中发现 vlan功能不正常。
通过 vlan show命令,发现 vlan 1中bitmap只有6个端口。而在正常情况下,初始化中会把所有端口都加入到 vlan 1中。
2. 通过在 bcm_esw_vlan_init() 中加调试语句,发现在初始化时,确实将所有端口都加入到了vlan 1中,但 vlan show也确实不对,并且vlan功能也不正常。
跟踪 ==> bcm_xgs3_vlan_port_get()==> _bcm_xgs3_vlan_table_port_get(unit, vid, &lacal_pbmp, ubmp, NULL, EGR_VLANm)
发现 vlan的 pbmp和 ubmp都是通过 EGR_VLAN table得到。对比 BCM56218 和 BCM56224 datasheet,发现BCM56218与 BCM56224不同,EGR_VLAN table中只有 ubmp,根本没有 pbmp,所以造成 pbmp不对,但 ubmp是对的。
3. 解决办法:通过宏对 BCM56218特殊处理,pbmp从 VLAN table中读取,ubmp从 EGR_VLAN table中获取,如此 vlan功能正常。