1. 24 Jan, 2014 6 commits
  2. 23 Jan, 2014 33 commits
  3. 22 Jan, 2014 1 commit
    • David S. Miller's avatar
      Merge branch 'bonding_option_api' · b414ac9a
      David S. Miller authored
      Nikolay Aleksandrov says:
      
      ====================
      bonding: introduce new option API
      
      This patchset's goal is to introduce a new option API which should be used
      to properly describe the bonding options with their mode dependcies and
      requirements. With this patchset applied we get centralized option
      manipulation, automatic RTNL acquire per option setting, automatic option
      range checking, mode dependcy checking and other various flags which are
      described in detail in patch 01's commit message and comments.
      Also the parameter passing is changed to use a specialized structure which
      is initialized to a value depending on the needs.
      The main exported functions are:
       __bond_opt_set() - set an option (RTNL should be acquired prior)
       bond_opt_init(val|str) - init a bond_opt_value struct for value or string
                                parameter passing
       bond_opt_tryset_rtnl() - function which tries to acquire rtnl, mainly used
                                for sysfs
       bond_opt_parse - used to parse or check for valid values
       bond_opt_get - retrieve a pointer to bond_option struct for some option
       bond_opt_get_val - retrieve a pointer to a bond_opt_value struct for
                          some value
      
      The same functions are used to set an option via sysfs and netlink, just
      the parameter that's passed is usually initialized in a different way.
      The converted options have multiple style fixes, there're some longer
      lines but they looked either ugly or were strings/pr_warnings, if you
      think some line would be better broken just let me know :-) there're
      also a few sscanf false-positive warnings.
      I decided to keep the "unsuppmodes" way of mode dep checking since it's
      straight forward, if we make a more general way for checking dependencies
      it'll be easy to change it.
      
      Future plans for this work include:
       - Automatic sysfs generation from the bond_opts[].
       - Use of the API in bond_check_params() and thus cleaning it up (this has
         actually started, I'll take care of the rest in a separate patch)
       - Clean up all option-unrelated files of option definitions and functions
      
      I've tried to leave as much documentation as possible, if there's anything
      unclear please let me know. One more thing, I haven't moved all
      option-related functions from bonding.h to the new bond_options.h, this
      will be done in a separate patch, it's in my todo list.
      
      This patchset has been tested by setting each converted option via sysfs
      and netlink to a couple of wrong values, a couple of correct values and
      some random values, also for the opts that have flags they have been
      tested as well.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b414ac9a