diff options
Diffstat (limited to 'net/switchdev/switchdev.c')
| -rw-r--r-- | net/switchdev/switchdev.c | 11 | 
1 files changed, 10 insertions, 1 deletions
| diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c index 3a1d428c1336..f25604d68337 100644 --- a/net/switchdev/switchdev.c +++ b/net/switchdev/switchdev.c @@ -29,7 +29,7 @@ struct switchdev_deferred_item {  	struct list_head list;  	struct net_device *dev;  	switchdev_deferred_func_t *func; -	unsigned long data[0]; +	unsigned long data[];  };  static struct switchdev_deferred_item *switchdev_deferred_dequeue(void) @@ -475,6 +475,9 @@ static int __switchdev_handle_port_obj_add(struct net_device *dev,  	 * necessary to go through this helper.  	 */  	netdev_for_each_lower_dev(dev, lower_dev, iter) { +		if (netif_is_bridge_master(lower_dev)) +			continue; +  		err = __switchdev_handle_port_obj_add(lower_dev, port_obj_info,  						      check_cb, add_cb);  		if (err && err != -EOPNOTSUPP) @@ -526,6 +529,9 @@ static int __switchdev_handle_port_obj_del(struct net_device *dev,  	 * necessary to go through this helper.  	 */  	netdev_for_each_lower_dev(dev, lower_dev, iter) { +		if (netif_is_bridge_master(lower_dev)) +			continue; +  		err = __switchdev_handle_port_obj_del(lower_dev, port_obj_info,  						      check_cb, del_cb);  		if (err && err != -EOPNOTSUPP) @@ -576,6 +582,9 @@ static int __switchdev_handle_port_attr_set(struct net_device *dev,  	 * necessary to go through this helper.  	 */  	netdev_for_each_lower_dev(dev, lower_dev, iter) { +		if (netif_is_bridge_master(lower_dev)) +			continue; +  		err = __switchdev_handle_port_attr_set(lower_dev, port_attr_info,  						       check_cb, set_cb);  		if (err && err != -EOPNOTSUPP) | 
