On Wed, Feb 26, 2014 at 10:18:19AM -0500, Vlad Yasevich wrote: > Turn the flag change macro into a function to allow > easier updates and to reduce space. > > Signed-off-by: Vlad Yasevich <vyasevic@xxxxxxxxxx> > --- > net/bridge/br_sysfs_if.c | 29 +++++++++++++++++++---------- > 1 file changed, 19 insertions(+), 10 deletions(-) > > diff --git a/net/bridge/br_sysfs_if.c b/net/bridge/br_sysfs_if.c > index dd595bd..7f66aa4 100644 > --- a/net/bridge/br_sysfs_if.c > +++ b/net/bridge/br_sysfs_if.c > @@ -25,6 +25,8 @@ struct brport_attribute { > ssize_t (*show)(struct net_bridge_port *, char *); > int (*store)(struct net_bridge_port *, unsigned long); > }; > +static int store_flag(struct net_bridge_port *p, unsigned long v, > + unsigned long mask); > > #define BRPORT_ATTR(_name, _mode, _show, _store) \ > const struct brport_attribute brport_attr_##_name = { \ nitpicking: Do we have to have forward declarations like this? They make it harder to find where the code is. Also, pls add an empty line between struct and function. > @@ -41,20 +43,27 @@ static ssize_t show_##_name(struct net_bridge_port *p, char *buf) \ > } \ > static int store_##_name(struct net_bridge_port *p, unsigned long v) \ > { \ > - unsigned long flags = p->flags; \ > - if (v) \ > - flags |= _mask; \ > - else \ > - flags &= ~_mask; \ > - if (flags != p->flags) { \ > - p->flags = flags; \ > - br_ifinfo_notify(RTM_NEWLINK, p); \ > - } \ > - return 0; \ > + return store_flag(p, v, _mask); \ > } \ > static BRPORT_ATTR(_name, S_IRUGO | S_IWUSR, \ > show_##_name, store_##_name) > > +static int store_flag(struct net_bridge_port *p, unsigned long v, > + unsigned long mask) > +{ > + unsigned long flags = p->flags; > + > + if (v) > + flags |= mask; > + else > + flags &= ~mask; > + > + if (flags != p->flags) { > + p->flags = flags; > + br_ifinfo_notify(RTM_NEWLINK, p); > + } > + return 0; > +} > > static ssize_t show_path_cost(struct net_bridge_port *p, char *buf) > { > -- > 1.8.5.3