aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bonding.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bonding/bonding.h')
-rw-r--r--drivers/net/bonding/bonding.h14
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
136struct bond_parm_tbl { 141struct 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}