1. 23 1月, 2014 6 次提交
    • N
      bonding: convert arp_all_targets to use the new option API · edf36b24
      Nikolay Aleksandrov 提交于
      This patch adds the necessary changes so arp_all_targets would use the
      new bonding option API.
      Signed-off-by: NNikolay Aleksandrov <nikolay@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      edf36b24
    • N
      bonding: convert arp_validate to use the new option API · 16228881
      Nikolay Aleksandrov 提交于
      This patch adds the necessary changes so arp_validate would use the
      new bonding option API. Also fix some trivial/style errors.
      Signed-off-by: NNikolay Aleksandrov <nikolay@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      16228881
    • N
      bonding: convert xmit_hash_policy to use the new option API · a4b32ce7
      Nikolay Aleksandrov 提交于
      This patch adds the necessary changes so xmit_hash_policy would use the
      new bonding option API. Also fix some trivial/style errors.
      Signed-off-by: NNikolay Aleksandrov <nikolay@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a4b32ce7
    • N
      bonding: convert packets_per_slave to use the new option API · aa59d851
      Nikolay Aleksandrov 提交于
      This patch adds the necessary changes so packets_per_slave would use the
      new bonding option API.
      Signed-off-by: NNikolay Aleksandrov <nikolay@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aa59d851
    • N
      bonding: convert mode setting to use the new option API · 2b3798d5
      Nikolay Aleksandrov 提交于
      This patch makes the bond's mode setting use the new option API and
      adds support for dependency printing which relies on having an entry for
      the mode option in the bond_opts[] array.
      Also add the ability to print the mode name when mode dependency fails
      and fix some trivial/style errors.
      Signed-off-by: NNikolay Aleksandrov <nikolay@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2b3798d5
    • N
      bonding: add infrastructure for an option API · 09117362
      Nikolay Aleksandrov 提交于
      This patch adds the necessary basic infrastructure to support
      centralized and unified option manipulation API for the bonding. The new
      structure bond_option will be used to describe each option with its
      dependencies on modes which will be checked automatically thus removing a
      lot of duplicated code. Also automatic range checking is added for
      some options. Currently the option setting function requires RTNL to
      be acquired prior to calling it, since many options already rely on RTNL
      it seemed like the best choice to protect all against common race
      conditions.
      In order to add an option the following steps need to be done:
      1. Add an entry BOND_OPT_<option> to bond_options.h so it gets a unique id
         and a bit corresponding to the id
      2. Add a bond_option entry to the bond_opts[] array in bond_options.c which
         describes the option, its dependencies and its manipulation function
      3. Add code to export the option through sysfs and/or as a module parameter
         (the sysfs export will be made automatically in the future)
      
      The options can have different flags set, currently the following are
      supported:
      BOND_OPTFLAG_NOSLAVES - require that the bond device has no slaves prior
                              to setting the option
      BOND_OPTFLAG_IFDOWN - require that the bond device is down prior to
                            setting the option
      BOND_OPTFLAG_RAWVAL - don't parse the value but return it raw for the
                            option to parse
      
      There's a new value structure to describe different types of values
      which can have the following flags:
      BOND_VALFLAG_DEFAULT - marks the default option (permanent string alias
                             to this option is "default")
      BOND_VALFLAG_MIN - the minimum value that this option can have
      BOND_VALFLAG_MAX - the maximum value that this option can have
      
      An example would be nice here, so if we have an option which can have
      the values "off"(2), "special"(4, default) and supports a range, say
      16 - 32, it should be defined as follows:
      "off", 2,
      "special", 4, BOND_VALFLAG_DEFAULT,
      "rangemin", 16, BOND_VALFLAG_MIN,
      "rangemax", 32, BOND_VALFLAG_MAX
      So we have the valid intervals: [2, 2], [4, 4], [16, 32]
      Also the valid strings: "off" = 2, "special" and "default" = 4
                              "rangemin" = 16, "rangemax" = 32
      
      BOND_VALFLAG_(MIN|MAX) can be used to specify a valid range for an
      option, if MIN is omitted then 0 is considered as a minimum. If an
      exact match is found in the values[] table it will be returned,
      otherwise the range is tried (if available).
      
      The option parameter passing is done by using a special structure called
      bond_opt_value which can take either a string or a value to parse. One
      of the bond_opt_init(val|str) macros should be used depending on which
      one does the user want to parse (string or value). Then a call to
      __bond_opt_set should be done under RTNL.
      Signed-off-by: NNikolay Aleksandrov <nikolay@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      09117362
  2. 22 1月, 2014 2 次提交
  3. 18 1月, 2014 2 次提交
  4. 17 1月, 2014 1 次提交
  5. 15 1月, 2014 1 次提交
  6. 14 1月, 2014 3 次提交
    • V
      bonding: fix __get_active_agg() RCU logic · 49b7624e
      Veaceslav Falico 提交于
      Currently, the implementation is meaningless - once again, we take the
      slave structure and use it after we've exited RCU critical section.
      
      Fix this by removing the rcu_read_lock() from __get_active_agg(), and
      ensuring that all its callers are holding RCU.
      
      Fixes: be79bd04 ("bonding: add RCU for bond_3ad_state_machine_handler()")
      CC: dingtianhong@huawei.com
      CC: Jay Vosburgh <fubar@us.ibm.com>
      CC: Andy Gospodarek <andy@greyhouse.net>
      Signed-off-by: NVeaceslav Falico <vfalico@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      49b7624e
    • V
      bonding: fix __get_first_agg RCU usage · 768b9549
      Veaceslav Falico 提交于
      Currently, the RCU read lock usage is just wrong - it gets the slave struct
      under RCU and continues to use it when RCU lock is released.
      
      However, it's still safe to do this cause we didn't need the
      rcu_read_lock() initially - all of the __get_first_agg() callers are either
      holding RCU read lock or the RTNL lock, so that we can't sync while in it.
      
      Fixes: be79bd04 ("bonding: add RCU for bond_3ad_state_machine_handler()")
      CC: dingtianhong@huawei.com
      CC: Jay Vosburgh <fubar@us.ibm.com>
      CC: Andy Gospodarek <andy@greyhouse.net>
      Signed-off-by: NVeaceslav Falico <vfalico@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      768b9549
    • V
      bonding: fix bond_3ad_set_carrier() RCU usage · c1bc9644
      Veaceslav Falico 提交于
      Currently, its usage is just plainly wrong. It first gets a slave under
      RCU, and, after releasing the RCU lock, continues to use it - whilst it can
      be freed.
      
      Fix this by ensuring that bond_3ad_set_carrier() holds RCU till it uses its
      slave (or its agg).
      
      Fixes: be79bd04 ("bonding: add RCU for bond_3ad_state_machine_handler()")
      CC: dingtianhong@huawei.com
      CC: Jay Vosburgh <fubar@us.ibm.com>
      CC: Andy Gospodarek <andy@greyhouse.net>
      Signed-off-by: NVeaceslav Falico <vfalico@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c1bc9644
  7. 13 1月, 2014 3 次提交
  8. 11 1月, 2014 1 次提交
    • J
      net: core: explicitly select a txq before doing l2 forwarding · f663dd9a
      Jason Wang 提交于
      Currently, the tx queue were selected implicitly in ndo_dfwd_start_xmit(). The
      will cause several issues:
      
      - NETIF_F_LLTX were removed for macvlan, so txq lock were done for macvlan
        instead of lower device which misses the necessary txq synchronization for
        lower device such as txq stopping or frozen required by dev watchdog or
        control path.
      - dev_hard_start_xmit() was called with NULL txq which bypasses the net device
        watchdog.
      - dev_hard_start_xmit() does not check txq everywhere which will lead a crash
        when tso is disabled for lower device.
      
      Fix this by explicitly introducing a new param for .ndo_select_queue() for just
      selecting queues in the case of l2 forwarding offload. netdev_pick_tx() was also
      extended to accept this parameter and dev_queue_xmit_accel() was used to do l2
      forwarding transmission.
      
      With this fixes, NETIF_F_LLTX could be preserved for macvlan and there's no need
      to check txq against NULL in dev_hard_start_xmit(). Also there's no need to keep
      a dedicated ndo_dfwd_start_xmit() and we can just reuse the code of
      dev_queue_xmit() to do the transmission.
      
      In the future, it was also required for macvtap l2 forwarding support since it
      provides a necessary synchronization method.
      
      Cc: John Fastabend <john.r.fastabend@intel.com>
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Cc: e1000-devel@lists.sourceforge.net
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      Acked-by: NNeil Horman <nhorman@tuxdriver.com>
      Acked-by: NJohn Fastabend <john.r.fastabend@intel.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f663dd9a
  9. 07 1月, 2014 1 次提交
  10. 04 1月, 2014 5 次提交
  11. 02 1月, 2014 8 次提交
  12. 31 12月, 2013 2 次提交
  13. 30 12月, 2013 1 次提交
  14. 20 12月, 2013 4 次提交