mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	bridge: restore br_setlink back to original
This is revert of:
commit 68e331c785 ("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:
		
							parent
							
								
									e71f220b34
								
							
						
					
					
						commit
						41c498b935
					
				
					 1 changed files with 1 additions and 10 deletions
				
			
		|  | @ -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: | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Scott Feldman
						Scott Feldman