Hello,
I am working on an Access Point device (AP1) running linux kernel 3.0.34 on which my bridge configuration is as follows.~ # brctl show
bridge name bridge id STP enabled interfaces
mbr 8000.xxxxxxxx0271 no eth1
wlan0
br_multicast_flood(struct net_bridge_mdb_entry *mdst, ....)
.... <code snippet>
while (p || rp) {
....
rp = rcu_dereference(hlist_first_rcu(&br->router_list));
p = mdst ? rcu_dereference(mdst->ports) : NULL;
}
if (!prev)
{
/******* packets getting dropped here. *********/....
rp = rcu_dereference(hlist_first_rcu(&br->router_list));
p = mdst ? rcu_dereference(mdst->ports) : NULL;
}
if (!prev)
{
goto out;
}
........
}
........
The three pointers mdst, p and rp are NULL. Prior to reaching here, the packet traversed successfully via br_handle_frame()->br_handle_frame_finish()->br_multicast_forward()->br_multicast_flood(). The source and multicast destination address in the skb look alright.
Additional Note: I have another ethernet interface on AP1 which is eth0. If I remove wlan0 and add eth0, then multicast packets successfully pass from eth1 to eth0 in the bridge module.
Could anybody share some pointer on this? Thank you.
With Regards,
Saurav