【原创】Marvell 88E6390交换芯片disable自动学习功能的坑

官方芯片手册上说可以Marvell 88E6390通过清除端口的PAV来禁用端口的自动mac地址学习(Learning can be disabled on any individual port by clearing the port’s PAV to all zeros (see Port Association Vector, Port offset 0x0B).)

但是如果这样做的话如果报文的SA已经在其他端口学习到,芯片会清除掉该条转发表,芯片手册上也有说明如下:

【原创】Marvell 88E6390交换芯片disable自动学习功能的坑_第1张图片


我们当前有种应用场景是报文从端口A进入(学习SA),上送CPU处理之后,又从端口B返回芯片,这里就需要禁用端口B的自动学习,如果通过清除DPV来实现就会把端口A学习的转发表现清除,这个处理很坑。

【解决办法】

通过端口的lock功能(port’s LockedPort bit to a one (Port offset 0x0B).),锁定功能是指当一个新的SA进入芯片,会产生一个中断,由CPU决定是否学习该地址,如果不需要CPU可以忽略该中断或者通过中断控制寄存器直接不上报该中断达到禁止mac自动学习的功能而又不影响该地址在其他端口的学习。

你可能感兴趣的:(【原创】Marvell 88E6390交换芯片disable自动学习功能的坑)