Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 291618
b: refs/heads/master
c: 1c3ac42
h: refs/heads/master
v: v3
  • Loading branch information
Peter Pan(潘卫平) authored and David S. Miller committed Mar 19, 2012
1 parent 2400a28 commit fe33211
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba568335b089e0a27829e3a6117a7e1bf957ad07
refs/heads/master: 1c3ac4289a0e4d60cbd4787b4a91de4a0c785df1
18 changes: 15 additions & 3 deletions trunk/drivers/net/bonding/bond_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -766,18 +766,30 @@ static void __bond_resend_igmp_join_requests(struct net_device *dev)
*/
static void bond_resend_igmp_join_requests(struct bonding *bond)
{
struct net_device *vlan_dev;
struct net_device *bond_dev, *vlan_dev, *master_dev;
struct vlan_entry *vlan;

read_lock(&bond->lock);

bond_dev = bond->dev;

/* rejoin all groups on bond device */
__bond_resend_igmp_join_requests(bond->dev);
__bond_resend_igmp_join_requests(bond_dev);

/*
* if bond is enslaved to a bridge,
* then rejoin all groups on its master
*/
master_dev = bond_dev->master;
if (master_dev)
if ((master_dev->priv_flags & IFF_EBRIDGE)
&& (bond_dev->priv_flags & IFF_BRIDGE_PORT))
__bond_resend_igmp_join_requests(master_dev);

/* rejoin all groups on vlan devices */
list_for_each_entry(vlan, &bond->vlan_list, vlan_list) {
rcu_read_lock();
vlan_dev = __vlan_find_dev_deep(bond->dev,
vlan_dev = __vlan_find_dev_deep(bond_dev,
vlan->vlan_id);
rcu_read_unlock();
if (vlan_dev)
Expand Down

0 comments on commit fe33211

Please sign in to comment.