Could it be that #switchdev vs. #DSA is a bit of a mess on #Linux? I have the feeling I'm starting to get a better hang of their code, while trying to implement something in there. For instance: The Linux bridge notifies MDB additions through switchdev events. Either your switch driver can listen/react to them directly. But also DSA listens to them and can call a port_mdb_add handler which your driver registered with DSA. Some drivers are some DSA / switchdev hybrid...