aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bonding.h
diff options
context:
space:
mode:
authorJay Vosburgh <fubar@us.ibm.com>2008-05-18 00:10:13 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-05-22 06:34:28 -0400
commitb2220cad583c9b63e085476df448fa2aff5ea906 (patch)
tree73d2322a9e5edd2ef7f2e97f523162b57f3e8ebb /drivers/net/bonding/bonding.h
parent7893b2491a2d5f716540ac5643d78d37a7f6628b (diff)
bonding: refactor ARP active-backup monitor
Refactor ARP monitor for active-backup mode. The motivation for this is to take care of locking issues in a clear manner (particularly to correctly handle RTNL vs. the bonding locks). Currently, the a-b ARP monitor does not hold RTNL at all, but future changes will require RTNL during ARP monitor failovers. Rather than using conditional locking, this patch instead breaks up the ARP monitor into three discrete steps: inspection, commit changes, and probe. The inspection phase marks slaves that require link state changes. The commit phase is only called if inspection detects that changes are needed, and is called with RTNL. Lastly, the probe phase issues the ARP probes that the inspection phase uses to determine link state. Signed-off-by: Jay Vosburgh <fubar@us.ibm.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/bonding/bonding.h')
-rw-r--r--drivers/net/bonding/bonding.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
index 46a2ed507b33..8766b1213690 100644
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -158,6 +158,7 @@ struct slave {
158 unsigned long jiffies; 158 unsigned long jiffies;
159 unsigned long last_arp_rx; 159 unsigned long last_arp_rx;
160 s8 link; /* one of BOND_LINK_XXXX */ 160 s8 link; /* one of BOND_LINK_XXXX */
161 s8 new_link;
161 s8 state; /* one of BOND_STATE_XXXX */ 162 s8 state; /* one of BOND_STATE_XXXX */
162 u32 original_flags; 163 u32 original_flags;
163 u32 original_mtu; 164 u32 original_mtu;
@@ -170,6 +171,11 @@ struct slave {
170}; 171};
171 172
172/* 173/*
174 * Link pseudo-state only used internally by monitors
175 */
176#define BOND_LINK_NOCHANGE -1
177
178/*
173 * Here are the locking policies for the two bonding locks: 179 * Here are the locking policies for the two bonding locks:
174 * 180 *
175 * 1) Get bond->lock when reading/writing slave list. 181 * 1) Get bond->lock when reading/writing slave list.