bridge: restore br_setlink back to original
This is revert of: commit 68e331c785b8 ("bridge: offload bridge port attributes to switch asic if feature flag set") Restore br_setlink back to original and don't call into SELF port driver. rtnetlink.c:bridge_setlink() already does a call into port driver for SELF. bridge set link cmd defaults to MASTER. From man page for bridge link set cmd: self link setting is configured on specified physical device master link setting is configured on the software bridge (default) The link setting has two values: the device-side value and the software bridge-side value. These are independent and settable using the bridge link set cmd by specifying some combination of [master] | [self]. Furthermore, the device-side and bridge-side settings have their own initial value, viewable from bridge -d link show cmd. Restoring br_setlink back to original makes rocker (the only in-kernel user of SELF link settings) work as first implement: two-sided values. It's true that when both MASTER and SELF are specified from the command, two netlink notifications are generated, one for each side of the settings. The user-space app can distiquish between the two notifications by observing the MASTER or SELF flag. Signed-off-by: Scott Feldman <sfeldma@gmail.com> Acked-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
e71f220b34
commit
41c498b935
@ -586,7 +586,7 @@ int br_setlink(struct net_device *dev, struct nlmsghdr *nlh, u16 flags)
|
||||
struct nlattr *afspec;
|
||||
struct net_bridge_port *p;
|
||||
struct nlattr *tb[IFLA_BRPORT_MAX + 1];
|
||||
int err = 0, ret_offload = 0;
|
||||
int err = 0;
|
||||
|
||||
protinfo = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_PROTINFO);
|
||||
afspec = nlmsg_find_attr(nlh, sizeof(struct ifinfomsg), IFLA_AF_SPEC);
|
||||
@ -628,15 +628,6 @@ int br_setlink(struct net_device *dev, struct nlmsghdr *nlh, u16 flags)
|
||||
afspec, RTM_SETLINK);
|
||||
}
|
||||
|
||||
if (p && !(flags & BRIDGE_FLAGS_SELF)) {
|
||||
/* set bridge attributes in hardware if supported
|
||||
*/
|
||||
ret_offload = switchdev_port_bridge_setlink(dev, nlh, flags);
|
||||
if (ret_offload && ret_offload != -EOPNOTSUPP)
|
||||
br_warn(p->br, "error setting attrs on port %u(%s)\n",
|
||||
(unsigned int)p->port_no, p->dev->name);
|
||||
}
|
||||
|
||||
if (err == 0)
|
||||
br_ifinfo_notify(RTM_NEWLINK, p);
|
||||
out:
|
||||
|
Reference in New Issue
Block a user