Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8a8ccd5 authored by Andy Gospodarek's avatar Andy Gospodarek Committed by Jeff Garzik
Browse files

bonding: ARP monitoring broken on x86_64



While working with the latest bonding code I noticed a nasty problem that
will prevent arp monitoring from always functioning correctly on x86_64
systems.  Comparing ints to longs and expecting reliable results on x86_64
is a bad idea.  With this patch, arp monitoring works correctly again.

Signed-off-by: default avatarAndy Gospodarek <andy@greyhouse.net>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Stephen Hemminger <shemminger@osdl.org>
Cc: Jeff Garzik <jeff@garzik.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent d4150a27
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -151,8 +151,8 @@ struct slave {
	struct slave *next;
	struct slave *next;
	struct slave *prev;
	struct slave *prev;
	int    delay;
	int    delay;
	u32    jiffies;
	unsigned long jiffies;
	u32    last_arp_rx;
	unsigned long last_arp_rx;
	s8     link;    /* one of BOND_LINK_XXXX */
	s8     link;    /* one of BOND_LINK_XXXX */
	s8     state;   /* one of BOND_STATE_XXXX */
	s8     state;   /* one of BOND_STATE_XXXX */
	u32    original_flags;
	u32    original_flags;
@@ -242,7 +242,8 @@ extern inline int slave_do_arp_validate(struct bonding *bond, struct slave *slav
	return bond->params.arp_validate & (1 << slave->state);
	return bond->params.arp_validate & (1 << slave->state);
}
}


extern inline u32 slave_last_rx(struct bonding *bond, struct slave *slave)
extern inline unsigned long slave_last_rx(struct bonding *bond,
					struct slave *slave)
{
{
	if (slave_do_arp_validate(bond, slave))
	if (slave_do_arp_validate(bond, slave))
		return slave->last_arp_rx;
		return slave->last_arp_rx;