On 22/11/2018 18:04, Andrew Lunn wrote: >> int br_boolopt_get(const struct net_bridge *br, enum br_boolopt_id opt) >> { >> - int optval = 0; >> - >> switch (opt) { >> + case BR_BOOLOPT_NO_LL_LEARN: >> + return br_opt_get(br, BROPT_NO_LL_LEARN); >> default: >> break; >> } >> >> - return optval; >> + return 0; >> } > > It seems like 1/2 of that change belongs in the previous patch. > Yes, I could squash this into patch 01. >> --- a/net/bridge/br_sysfs_br.c >> +++ b/net/bridge/br_sysfs_br.c >> @@ -328,6 +328,27 @@ static ssize_t flush_store(struct device *d, >> } >> static DEVICE_ATTR_WO(flush); >> >> +static ssize_t no_linklocal_learn_show(struct device *d, >> + struct device_attribute *attr, >> + char *buf) >> +{ >> + struct net_bridge *br = to_bridge(d); >> + return sprintf(buf, "%d\n", br_boolopt_get(br, BR_BOOLOPT_NO_LL_LEARN)); >> +} >> + >> +static int set_no_linklocal_learn(struct net_bridge *br, unsigned long val) >> +{ >> + return br_boolopt_toggle(br, BR_BOOLOPT_NO_LL_LEARN, !!val); >> +} >> + >> +static ssize_t no_linklocal_learn_store(struct device *d, >> + struct device_attribute *attr, >> + const char *buf, size_t len) >> +{ >> + return store_bridge_parm(d, buf, len, set_no_linklocal_learn); >> +} >> +static DEVICE_ATTR_RW(no_linklocal_learn); > > I thought we where trying to move away from sysfs? Do we need to add > new options here? It seems like forcing people to use iproute2 for > newer options is a good way to get people to convert to iproute2. > Being consistent, all of the bridge options are exported via sysfs. If we start ignoring it now it'll be confusing. > Andrew >