1. 05 6月, 2010 2 次提交
    • A
      bonding: allow user-controlled output slave selection · bb1d9123
      Andy Gospodarek 提交于
      v2: changed bonding module version, modified to apply on top of changes
      from previous patch in series, and updated documentation to elaborate on
      multiqueue awareness that now exists in bonding driver.
      
      This patch give the user the ability to control the output slave for
      round-robin and active-backup bonding.  Similar functionality was
      discussed in the past, but Jay Vosburgh indicated he would rather see a
      feature like this added to existing modes rather than creating a
      completely new mode.  Jay's thoughts as well as Neil's input surrounding
      some of the issues with the first implementation pushed us toward a
      design that relied on the queue_mapping rather than skb marks.
      Round-robin and active-backup modes were chosen as the first users of
      this slave selection as they seemed like the most logical choices when
      considering a multi-switch environment.
      
      Round-robin mode works without any modification, but active-backup does
      require inclusion of the first patch in this series and setting
      the 'all_slaves_active' flag.  This will allow reception of unicast traffic on
      any of the backup interfaces.
      
      This was tested with IPv4-based filters as well as VLAN-based filters
      with good results.
      
      More information as well as a configuration example is available in the
      patch to Documentation/networking/bonding.txt.
      Signed-off-by: NAndy Gospodarek <andy@greyhouse.net>
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bb1d9123
    • A
      bonding: add all_slaves_active parameter · ebd8e497
      Andy Gospodarek 提交于
      v2: changed parameter name from 'keep_all' to 'all_slaves_active' and
      skipped setting slaves to inactive rather than creating a new flag at
      Jay's suggestion.
      
      In an effort to suppress duplicate frames on certain bonding modes
      (specifically the modes that do not require additional configuration on
      the switch or switches connected to the host), code was added in the
      generic receive patch in 2.6.16.  The current behavior works quite well
      for most users, but there are some times it would be nice to restore old
      functionality and allow all frames to make their way up the stack.
      
      This patch adds support for a new module option and sysfs file called
      'all_slaves_active' that will restore pre-2.6.16 functionality if the
      user desires.  The default value is '0' and retains existing behavior,
      but the user can set it to '1' and allow all frames up if desired.
      Signed-off-by: NAndy Gospodarek <andy@greyhouse.net>
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ebd8e497
  2. 02 6月, 2010 7 次提交
  3. 06 5月, 2010 1 次提交
    • W
      bonding: make bonding support netpoll · f6dc31a8
      WANG Cong 提交于
      Based on Andy's work, but I modified a lot.
      
      Similar to the patch for bridge, this patch does:
      
      1) implement the 2 methods to support netpoll for bonding;
      
      2) modify netpoll during forwarding packets via bonding;
      
      3) disable netpoll support of bonding when a netpoll-unabled device
         is added to bonding;
      
      4) enable netpoll support when all underlying devices support netpoll.
      
      Cc: Andy Gospodarek <gospo@redhat.com>
      Cc: Jeff Moyer <jmoyer@redhat.com>
      Cc: Matt Mackall <mpm@selenic.com>
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Cc: Jay Vosburgh <fubar@us.ibm.com>
      Cc: David Miller <davem@davemloft.net>
      Signed-off-by: NWANG Cong <amwang@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f6dc31a8
  4. 04 4月, 2010 2 次提交
  5. 02 4月, 2010 1 次提交
    • A
      bonding: fix potential deadlock in bond_uninit() · 9e2e61fb
      Amerigo Wang 提交于
      bond_uninit() is invoked with rtnl_lock held, when it does destroy_workqueue()
      which will potentially flush all works in this workqueue, if we hold rtnl_lock
      again in the work function, it will deadlock.
      
      So move destroy_workqueue() to destructor where rtnl_lock is not held any more,
      suggested by Eric.
      Signed-off-by: NWANG Cong <amwang@redhat.com>
      Cc: Jay Vosburgh <fubar@us.ibm.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Stephen Hemminger <shemminger@vyatta.com>
      Cc: Jiri Pirko <jpirko@redhat.com>
      Cc: "Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9e2e61fb
  6. 31 3月, 2010 1 次提交
  7. 28 3月, 2010 1 次提交
    • A
      bonding: fix broken multicast with round-robin mode · a2fd940f
      Andy Gospodarek 提交于
      Round-robin (mode 0) does nothing to ensure that any multicast traffic
      originally destined for the host will continue to arrive at the host when
      the link that sent the IGMP join or membership report goes down.  One of
      the benefits of absolute round-robin transmit.
      
      Keeping track of subscribed multicast groups for each slave did not seem
      like a good use of resources, so I decided to simply send on the
      curr_active slave of the bond (typically the first enslaved device that
      is up).  This makes failover management simple as IGMP membership
      reports only need to be sent when the curr_active_slave changes.  I
      tested this patch and it appears to work as expected.
      
      Originally reported by Lon Hohberger <lhh@redhat.com>.
      Signed-off-by: NAndy Gospodarek <andy@greyhouse.net>
      CC: Lon Hohberger <lhh@redhat.com>
      CC: Jay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a2fd940f
  8. 25 3月, 2010 1 次提交
  9. 22 3月, 2010 1 次提交
  10. 21 3月, 2010 1 次提交
  11. 19 3月, 2010 2 次提交
  12. 08 3月, 2010 1 次提交
  13. 27 2月, 2010 1 次提交
  14. 04 2月, 2010 1 次提交
  15. 28 1月, 2010 1 次提交
  16. 18 1月, 2010 1 次提交
  17. 04 1月, 2010 1 次提交
    • A
      bonding: allow arp_ip_targets on separate vlans to use arp validation · 1f3c8804
      Andy Gospodarek 提交于
      This allows a bond device to specify an arp_ip_target as a host that is
      not on the same vlan as the base bond device and still use arp
      validation.  A configuration like this, now works:
      
      BONDING_OPTS="mode=active-backup arp_interval=1000 arp_ip_target=10.0.100.1 arp_validate=3"
      
      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8 scope host lo
          inet6 ::1/128 scope host
             valid_lft forever preferred_lft forever
      2: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 qlen 1000
          link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
      3: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 qlen 1000
          link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
      8: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue
          link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
          inet6 fe80::213:21ff:febe:33e9/64 scope link
             valid_lft forever preferred_lft forever
      9: bond0.100@bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue
          link/ether 00:13:21:be:33:e9 brd ff:ff:ff:ff:ff:ff
          inet 10.0.100.2/24 brd 10.0.100.255 scope global bond0.100
          inet6 fe80::213:21ff:febe:33e9/64 scope link
             valid_lft forever preferred_lft forever
      
      Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)
      
      Bonding Mode: fault-tolerance (active-backup)
      Primary Slave: None
      Currently Active Slave: eth1
      MII Status: up
      MII Polling Interval (ms): 0
      Up Delay (ms): 0
      Down Delay (ms): 0
      ARP Polling Interval (ms): 1000
      ARP IP target/s (n.n.n.n form): 10.0.100.1
      
      Slave Interface: eth1
      MII Status: up
      Link Failure Count: 1
      Permanent HW addr: 00:40:05:30:ff:30
      
      Slave Interface: eth0
      MII Status: up
      Link Failure Count: 0
      Permanent HW addr: 00:13:21:be:33:e9
      Signed-off-by: NAndy Gospodarek <andy@greyhouse.net>
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1f3c8804
  18. 27 12月, 2009 1 次提交
  19. 14 12月, 2009 1 次提交
  20. 04 12月, 2009 2 次提交
  21. 02 12月, 2009 1 次提交
  22. 18 11月, 2009 1 次提交
  23. 16 11月, 2009 1 次提交
    • J
      bonding: fix 802.3ad standards compliance error · 2d6682db
      Jay Vosburgh 提交于
      The language of 802.3ad 43.4.9 requires the "recordPDU" function
      to, in part, compare the Partner parameter values in a received LACPDU
      to the stored Actor values.  If those match, then the Partner's
      synchronization state is set to true.
      
      	The current 802.3ad implementation is performing these steps out
      of order; first, the synchronization check is done, then the paramters are
      checked to see if they match (the synch check being done against a match
      check of a prior LACPDU).  This causes delays in establishing aggregators
      in some circumstances.
      
      	This patch modifies the 802.3ad code to call __choose_matched,
      the function that does the "match" comparisions, as the first step of
      __record_pdu, instead of immediately afterwards.  This new behavior is
      in compliance with the language of the standard.
      
      	Some additional commentary relating to code vs. standard is also
      added.
      
      	Reported by Martin Patterson <martin@gear6.com> who also supplied
      the logic of the fix and verified the patch.
      Signed-off-by: NJay Vosburgh <fubar@us.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2d6682db
  24. 31 10月, 2009 6 次提交
  25. 29 10月, 2009 1 次提交
    • J
      bonding: fix a race condition in calls to slave MII ioctls · d9d52832
      Jiri Bohac 提交于
      In mii monitor mode, bond_check_dev_link() calls the the ioctl
      handler of slave devices. It stores the ndo_do_ioctl function
      pointer to a static (!) ioctl variable and later uses it to call the
      handler with the IOCTL macro.
      
      If another thread executes bond_check_dev_link() at the same time
      (even with a different bond, which none of the locks prevent), a
      race condition occurs. If the two racing slaves have different
      drivers, this may result in one driver's ioctl handler being
      called with a pointer to a net_device controlled with a different
      driver, resulting in unpredictable breakage.
      
      Unless I am overlooking something, the "static" must be a
      copy'n'paste error (?).
      Signed-off-by: NJiri Bohac <jbohac@suse.cz>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d9d52832