diff options
Diffstat (limited to 'drivers/net/bonding/bonding.h')
-rw-r--r-- | drivers/net/bonding/bonding.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h index 2aa336720591..c6fdd851579a 100644 --- a/drivers/net/bonding/bonding.h +++ b/drivers/net/bonding/bonding.h | |||
@@ -23,8 +23,8 @@ | |||
23 | #include "bond_3ad.h" | 23 | #include "bond_3ad.h" |
24 | #include "bond_alb.h" | 24 | #include "bond_alb.h" |
25 | 25 | ||
26 | #define DRV_VERSION "3.6.0" | 26 | #define DRV_VERSION "3.7.0" |
27 | #define DRV_RELDATE "September 26, 2009" | 27 | #define DRV_RELDATE "June 2, 2010" |
28 | #define DRV_NAME "bonding" | 28 | #define DRV_NAME "bonding" |
29 | #define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" | 29 | #define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" |
30 | 30 | ||
@@ -60,6 +60,9 @@ | |||
60 | ((mode) == BOND_MODE_TLB) || \ | 60 | ((mode) == BOND_MODE_TLB) || \ |
61 | ((mode) == BOND_MODE_ALB)) | 61 | ((mode) == BOND_MODE_ALB)) |
62 | 62 | ||
63 | #define TX_QUEUE_OVERRIDE(mode) \ | ||
64 | (((mode) == BOND_MODE_ACTIVEBACKUP) || \ | ||
65 | ((mode) == BOND_MODE_ROUNDROBIN)) | ||
63 | /* | 66 | /* |
64 | * Less bad way to call ioctl from within the kernel; this needs to be | 67 | * Less bad way to call ioctl from within the kernel; this needs to be |
65 | * done some other way to get the call out of interrupt context. | 68 | * done some other way to get the call out of interrupt context. |
@@ -131,6 +134,8 @@ struct bond_params { | |||
131 | char primary[IFNAMSIZ]; | 134 | char primary[IFNAMSIZ]; |
132 | int primary_reselect; | 135 | int primary_reselect; |
133 | __be32 arp_targets[BOND_MAX_ARP_TARGETS]; | 136 | __be32 arp_targets[BOND_MAX_ARP_TARGETS]; |
137 | int tx_queues; | ||
138 | int all_slaves_active; | ||
134 | }; | 139 | }; |
135 | 140 | ||
136 | struct bond_parm_tbl { | 141 | struct bond_parm_tbl { |
@@ -159,12 +164,12 @@ struct slave { | |||
159 | s8 link; /* one of BOND_LINK_XXXX */ | 164 | s8 link; /* one of BOND_LINK_XXXX */ |
160 | s8 new_link; | 165 | s8 new_link; |
161 | s8 state; /* one of BOND_STATE_XXXX */ | 166 | s8 state; /* one of BOND_STATE_XXXX */ |
162 | u32 original_flags; | ||
163 | u32 original_mtu; | 167 | u32 original_mtu; |
164 | u32 link_failure_count; | 168 | u32 link_failure_count; |
165 | u8 perm_hwaddr[ETH_ALEN]; | 169 | u8 perm_hwaddr[ETH_ALEN]; |
166 | u16 speed; | 170 | u16 speed; |
167 | u8 duplex; | 171 | u8 duplex; |
172 | u16 queue_id; | ||
168 | struct ad_slave_info ad_info; /* HUGE - better to dynamically alloc */ | 173 | struct ad_slave_info ad_info; /* HUGE - better to dynamically alloc */ |
169 | struct tlb_slave_info tlb_info; | 174 | struct tlb_slave_info tlb_info; |
170 | }; | 175 | }; |
@@ -291,7 +296,8 @@ static inline void bond_set_slave_inactive_flags(struct slave *slave) | |||
291 | struct bonding *bond = netdev_priv(slave->dev->master); | 296 | struct bonding *bond = netdev_priv(slave->dev->master); |
292 | if (!bond_is_lb(bond)) | 297 | if (!bond_is_lb(bond)) |
293 | slave->state = BOND_STATE_BACKUP; | 298 | slave->state = BOND_STATE_BACKUP; |
294 | slave->dev->priv_flags |= IFF_SLAVE_INACTIVE; | 299 | if (!bond->params.all_slaves_active) |
300 | slave->dev->priv_flags |= IFF_SLAVE_INACTIVE; | ||
295 | if (slave_do_arp_validate(bond, slave)) | 301 | if (slave_do_arp_validate(bond, slave)) |
296 | slave->dev->priv_flags |= IFF_SLAVE_NEEDARP; | 302 | slave->dev->priv_flags |= IFF_SLAVE_NEEDARP; |
297 | } | 303 | } |