Commit:     031ae4deb095a1f18a842740459c5ae184ec931c
Parent:     3201e656ce56ed02e9501906c18ffe16ae350a52
Author:     Jay Vosburgh <[EMAIL PROTECTED]>
AuthorDate: Wed Jun 13 22:11:34 2007 -0700
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Wed Jun 20 19:12:41 2007 -0400

    bonding: Fix 802.3ad no carrier on "no partner found" instance
        Modify carrier state determination for 802.3ad mode to comply
    with section 43.3.9 of IEEE 802.3, which requires that "Links that are
    not successful candidates for aggregation (e.g., links that are attached
    to other devices that cannot perform aggregation or links that have been
    manually configured to be non-aggregatable) are enabled to operate as
    individual IEEE 802.3 links."
        Bug reported by Laurent Chavey <[EMAIL PROTECTED]>.  This patch
    is an updated version of his patch that changes the wording of
    commentary and adds an update to the driver version.
    Signed-off-by: Jay Vosburgh <[EMAIL PROTECTED]>
    Signed-off-by: Laurent Chavey <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
 drivers/net/bonding/bond_3ad.c |    9 ++++-----
 drivers/net/bonding/bonding.h  |    4 ++--
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index 7e03f41..f829e4a 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -2303,19 +2303,18 @@ void bond_3ad_handle_link_change(struct slave *slave, 
char link)
- * set link state for bonding master: if we have an active partnered
+ * set link state for bonding master: if we have an active 
  * aggregator, we're up, if not, we're down.  Presumes that we cannot
  * have an active aggregator if there are no slaves with link up.
+ * This behavior complies with IEEE 802.3 section 43.3.9.
+ *
  * Called by bond_set_carrier(). Return zero if carrier state does not
  * change, nonzero if it does.
 int bond_3ad_set_carrier(struct bonding *bond)
-       struct aggregator *agg;
-       agg = __get_active_agg(&(SLAVE_AD_INFO(bond->first_slave).aggregator));
-       if (agg && MAC_ADDRESS_COMPARE(&agg->partner_system, &null_mac_addr)) {
+       if (__get_active_agg(&(SLAVE_AD_INFO(bond->first_slave).aggregator))) {
                if (!netif_carrier_ok(bond->dev)) {
                        return 1;
diff --git a/drivers/net/bonding/bonding.h b/drivers/net/bonding/bonding.h
index 41aa78b..a891021 100644
--- a/drivers/net/bonding/bonding.h
+++ b/drivers/net/bonding/bonding.h
@@ -22,8 +22,8 @@
 #include "bond_3ad.h"
 #include "bond_alb.h"
-#define DRV_VERSION    "3.1.2"
-#define DRV_RELDATE    "January 20, 2007"
+#define DRV_VERSION    "3.1.3"
+#define DRV_RELDATE    "June 13, 2007"
 #define DRV_NAME       "bonding"
 #define DRV_DESCRIPTION        "Ethernet Channel Bonding Driver"
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to