1. 26 3月, 2009 1 次提交
    • J
      bonding: select current active slave when enslaving device for mode tlb and alb · 5a29f789
      Jiri Pirko 提交于
      I've hit an issue on my system when I've been using RealTek RTL8139D cards in
      bonding interface in mode balancing-alb. When I enslave a card, the current
      active slave (bond->curr_active_slave) is not set and the link is therefore
      not functional.
      
      ----
      # cat /proc/net/bonding/bond0
      Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)
      
      Bonding Mode: adaptive load balancing
      Primary Slave: None
      Currently Active Slave: None
      MII Status: up
      MII Polling Interval (ms): 100
      Up Delay (ms): 0
      Down Delay (ms): 0
      
      Slave Interface: eth1
      MII Status: up
      Link Failure Count: 0
      Permanent HW addr: 00:1f:1f:01:2f:22
      ----
      
      The thing that gets it right is when I unplug the cable and then I put it back
      into the NIC. Then the current active slave is set to eth1 and link is working
      just fine. Here is dmesg log with bonding DEBUG messages turned on:
      ----
      ADDRCONF(NETDEV_UP): bond0: link is not ready
      event_dev: bond0, event: 1
      IFF_MASTER
      event_dev: bond0, event: 8
      IFF_MASTER
      bond_ioctl: master=bond0, cmd=35216
      slave_dev=cac5d800: 
      slave_dev->name=eth1: 
      eth1: ! NETIF_F_VLAN_CHALLENGED
      event_dev: eth1, event: 8
      eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
      event_dev: eth1, event: 1
      event_dev: eth1, event: 8
      IFF_SLAVE
      Initial state of slave_dev is BOND_LINK_UP
      bonding: bond0: enslaving eth1 as an active interface with an up link.
      ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
      event_dev: bond0, event: 4
      IFF_MASTER
      bond0: no IPv6 routers present
      
      <<<<cable unplug>>>>
      
      eth1: link down
      event_dev: eth1, event: 4
      IFF_SLAVE
      bonding: bond0: link status definitely down for interface eth1, disabling it
      event_dev: bond0, event: 4
      IFF_MASTER
      
      <<<<cable plug>>>>
      
      eth1: link up, 100Mbps, full-duplex, lpa 0xC5E1
      event_dev: eth1, event: 4
      IFF_SLAVE
      bonding: bond0: link status definitely up for interface eth1.
      bonding: bond0: making interface eth1 the new active one.
      event_dev: eth1, event: 8
      IFF_SLAVE
      event_dev: eth1, event: 8
      IFF_SLAVE
      bonding: bond0: first active interface up!
      event_dev: bond0, event: 4
      IFF_MASTER
      ----
      
      The current active slave is set by calling bond_select_active_slave() function
      from bond_miimon_commit() function when the slave (eth1) link goes to state up.
      
      I also tested this on other machine with Broadcom NetXtreme II BCM5708
      1000Base-T NIC and there all works fine. The thing is that this adapter is down
      and goes up after few seconds after it is enslaved.
      
      This patch calls bond_select_active_slave() in bond_enslave() function for modes
      alb and tlb and makes sure that the current active slave is set up properly even
      when the slave state is already up. Tested on both systems, works fine.
      
      Notice: The same problem can maybe also occrur in mode 8023AD but I'm unable to
      test that.
      Signed-off-by: NJiri Pirko <jpirko@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5a29f789
  2. 19 3月, 2009 1 次提交
    • J
      bonding: Fix updating of speed/duplex changes · 17d04500
      Jay Vosburgh 提交于
      	This patch corrects an omission from the following commit:
      
      commit f0c76d61
      Author: Jay Vosburgh <fubar@us.ibm.com>
      Date:   Wed Jul 2 18:21:58 2008 -0700
      
          bonding: refactor mii monitor
      
      	The un-refactored code checked the link speed and duplex of
      every slave on every pass; the refactored code did not do so.
      
      	The 802.3ad and balance-alb/tlb modes utilize the speed and
      duplex information, and require it to be kept up to date.  This patch
      adds a notifier check to perform the appropriate updating when the slave
      device speed changes.
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      17d04500
  3. 05 3月, 2009 1 次提交
  4. 18 2月, 2009 2 次提交
  5. 01 2月, 2009 1 次提交
  6. 22 1月, 2009 1 次提交
  7. 07 1月, 2009 1 次提交
  8. 27 12月, 2008 7 次提交
  9. 26 12月, 2008 1 次提交
  10. 18 12月, 2008 9 次提交
  11. 10 12月, 2008 7 次提交
  12. 04 12月, 2008 1 次提交
  13. 21 11月, 2008 1 次提交
  14. 20 11月, 2008 2 次提交
  15. 13 11月, 2008 1 次提交
    • W
      netdevice: safe convert to netdev_priv() #part-1 · 454d7c9b
      Wang Chen 提交于
      We have some reasons to kill netdev->priv:
      1. netdev->priv is equal to netdev_priv().
      2. netdev_priv() wraps the calculation of netdev->priv's offset, obviously
         netdev_priv() is more flexible than netdev->priv.
      But we cann't kill netdev->priv, because so many drivers reference to it
      directly.
      
      This patch is a safe convert for netdev->priv to netdev_priv(netdev).
      Since all of the netdev->priv is only for read.
      But it is too big to be sent in one mail.
      I split it to 4 parts and make every part smaller than 100,000 bytes,
      which is max size allowed by vger.
      Signed-off-by: NWang Chen <wangchen@cn.fujitsu.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      454d7c9b
  16. 06 11月, 2008 3 次提交
    • J
      bonding: alternate agg selection policies for 802.3ad · fd989c83
      Jay Vosburgh 提交于
      	This patch implements alternative aggregator selection policies
      for 802.3ad.  The existing policy, now termed "stable," selects the active
      aggregator by greatest bandwidth, and only reselects a new aggregator
      if the active aggregator is entirely disabled (no more ports or all ports
      down).
      
      	This patch adds two new policies: bandwidth and count, selecting
      the active aggregator by total bandwidth (like the stable policy) or by
      the number of ports in the aggregator, respectively.  These two policies
      also differ from the stable policy in that they will reselect the active
      aggregator when availability-related changes occur in the bond (e.g.,
      link state change).
      
      	This permits "gang failover" within 802.3ad, allowing redundant
      aggregators along parallel paths to always maintain the "best" aggregator
      as the active aggregator (rather than having to wait for the active to
      entirely fail).
      
      	This patch also updates the driver version to 3.5.0.
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      fd989c83
    • J
      bonding: Fix ALB mode to balance traffic on VLANs · 6146b1a4
      Jay Vosburgh 提交于
      	The current ALB function that processes incoming ARPs
      does not handle traffic for VLANs configured above bonding.  This causes
      traffic on those VLANs to all be assigned the same slave.  This patch
      corrects that misbehavior by locating the bonding interface nested below
      the VLAN interface.
      
      	Bug reported by Sven Anders <anders@anduras.de>, who also
      tested an earlier version of this patch and confirmed that it resolved
      the problem.
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      6146b1a4
    • B
      bonding: send IPv6 neighbor advertisement on failover · 305d552a
      Brian Haley 提交于
      This patch adds better IPv6 failover support for bonding devices,
      especially when in active-backup mode and there are only IPv6 addresses
      configured, as reported by Alex Sidorenko.
      
      - Creates a new file, net/drivers/bonding/bond_ipv6.c, for the
         IPv6-specific routines.  Both regular bonds and VLANs over bonds
         are supported.
      
      - Adds a new tunable, num_unsol_na, to limit the number of unsolicited
         IPv6 Neighbor Advertisements that are sent on a failover event.
         Default is 1.
      
      - Creates two new IPv6 neighbor discovery functions:
      
         ndisc_build_skb()
         ndisc_send_skb()
      
         These were required to support VLANs since we have to be able to
         add the VLAN id to the skb since ndisc_send_na() and friends
         shouldn't be asked to do this.  These two routines are basically
         __ndisc_send() split into two pieces, in a slightly different order.
      
      - Updates Documentation/networking/bonding.txt and bumps the rev of bond
         support to 3.4.0.
      
      On failover, this new code will generate one packet:
      
      - An unsolicited IPv6 Neighbor Advertisement, which helps the switch
         learn that the address has moved to the new slave.
      
      Testing has shown that sending just the NA results in pretty good
      behavior when in active-back mode, I saw no lost ping packets for example.
      Signed-off-by: NBrian Haley <brian.haley@hp.com>
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      305d552a