From: David S. Miller Date: Wed, 22 Jan 2014 23:39:18 +0000 (-0800) Subject: Merge branch 'bonding_option_api' X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=b414ac9a3ea8a547e4a413160d36bffefb2ba5c7;p=openwrt%2Fstaging%2Fblogic.git Merge branch 'bonding_option_api' 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: David S. Miller --- b414ac9a3ea8a547e4a413160d36bffefb2ba5c7