diff options
| -rw-r--r-- | drivers/net/bonding/bond_main.c | 7 | ||||
| -rw-r--r-- | include/linux/if.h | 1 |
2 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index d2f460b0dbab..9e5a533a1622 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
| @@ -1371,6 +1371,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) | |||
| 1371 | } | 1371 | } |
| 1372 | 1372 | ||
| 1373 | new_slave->dev = slave_dev; | 1373 | new_slave->dev = slave_dev; |
| 1374 | slave_dev->priv_flags |= IFF_BONDING; | ||
| 1374 | 1375 | ||
| 1375 | if ((bond->params.mode == BOND_MODE_TLB) || | 1376 | if ((bond->params.mode == BOND_MODE_TLB) || |
| 1376 | (bond->params.mode == BOND_MODE_ALB)) { | 1377 | (bond->params.mode == BOND_MODE_ALB)) { |
| @@ -1784,7 +1785,7 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev) | |||
| 1784 | dev_set_mac_address(slave_dev, &addr); | 1785 | dev_set_mac_address(slave_dev, &addr); |
| 1785 | 1786 | ||
| 1786 | slave_dev->priv_flags &= ~(IFF_MASTER_8023AD | IFF_MASTER_ALB | | 1787 | slave_dev->priv_flags &= ~(IFF_MASTER_8023AD | IFF_MASTER_ALB | |
| 1787 | IFF_SLAVE_INACTIVE); | 1788 | IFF_SLAVE_INACTIVE | IFF_BONDING); |
| 1788 | 1789 | ||
| 1789 | kfree(slave); | 1790 | kfree(slave); |
| 1790 | 1791 | ||
| @@ -3216,6 +3217,9 @@ static int bond_netdev_event(struct notifier_block *this, unsigned long event, v | |||
| 3216 | (event_dev ? event_dev->name : "None"), | 3217 | (event_dev ? event_dev->name : "None"), |
| 3217 | event); | 3218 | event); |
| 3218 | 3219 | ||
| 3220 | if (!(event_dev->priv_flags & IFF_BONDING)) | ||
| 3221 | return NOTIFY_DONE; | ||
| 3222 | |||
| 3219 | if (event_dev->flags & IFF_MASTER) { | 3223 | if (event_dev->flags & IFF_MASTER) { |
| 3220 | dprintk("IFF_MASTER\n"); | 3224 | dprintk("IFF_MASTER\n"); |
| 3221 | return bond_master_netdev_event(event, event_dev); | 3225 | return bond_master_netdev_event(event, event_dev); |
| @@ -4185,6 +4189,7 @@ static int bond_init(struct net_device *bond_dev, struct bond_params *params) | |||
| 4185 | /* Initialize the device options */ | 4189 | /* Initialize the device options */ |
| 4186 | bond_dev->tx_queue_len = 0; | 4190 | bond_dev->tx_queue_len = 0; |
| 4187 | bond_dev->flags |= IFF_MASTER|IFF_MULTICAST; | 4191 | bond_dev->flags |= IFF_MASTER|IFF_MULTICAST; |
| 4192 | bond_dev->priv_flags |= IFF_BONDING; | ||
| 4188 | 4193 | ||
| 4189 | /* At first, we block adding VLANs. That's the only way to | 4194 | /* At first, we block adding VLANs. That's the only way to |
| 4190 | * prevent problems that occur when adding VLANs over an | 4195 | * prevent problems that occur when adding VLANs over an |
diff --git a/include/linux/if.h b/include/linux/if.h index cd080d765324..a023ec1274fe 100644 --- a/include/linux/if.h +++ b/include/linux/if.h | |||
| @@ -59,6 +59,7 @@ | |||
| 59 | #define IFF_SLAVE_INACTIVE 0x4 /* bonding slave not the curr. active */ | 59 | #define IFF_SLAVE_INACTIVE 0x4 /* bonding slave not the curr. active */ |
| 60 | #define IFF_MASTER_8023AD 0x8 /* bonding master, 802.3ad. */ | 60 | #define IFF_MASTER_8023AD 0x8 /* bonding master, 802.3ad. */ |
| 61 | #define IFF_MASTER_ALB 0x10 /* bonding master, balance-alb. */ | 61 | #define IFF_MASTER_ALB 0x10 /* bonding master, balance-alb. */ |
| 62 | #define IFF_BONDING 0x20 /* bonding master or slave */ | ||
| 62 | 63 | ||
| 63 | #define IF_GET_IFACE 0x0001 /* for querying only */ | 64 | #define IF_GET_IFACE 0x0001 /* for querying only */ |
| 64 | #define IF_GET_PROTO 0x0002 | 65 | #define IF_GET_PROTO 0x0002 |
