aboutsummaryrefslogtreecommitdiffstats
path: root/net/switchdev/switchdev.c
diff options
context:
space:
mode:
authorScott Feldman <sfeldma@gmail.com>2015-06-11 11:19:01 -0400
committerDavid S. Miller <davem@davemloft.net>2015-06-11 19:27:09 -0400
commit57225e7720ac3d7ffcb0086c716753abf6e54e8d (patch)
tree9ebdc1f6899baf7496a8907323a6ae9e55cc390f /net/switchdev/switchdev.c
parentd0504f4d8fc4618ee0d6f8124a10da0a007ff347 (diff)
switchdev: fix BUG when port driver doesn't support set attr op
Fix a BUG_ON() where CONFIG_NET_SWITCHDEV is set but the driver for a bridged port does not support switchdev_port_attr_set op. Don't BUG_ON() if -EOPNOTSUPP is returned. Also change BUG_ON() to netdev_err since this is a normal error path and does not warrant the use of BUG_ON(), which is reserved for unrecoverable errs. Signed-off-by: Scott Feldman <sfeldma@gmail.com> Reported-by: Brenden Blanco <bblanco@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/switchdev/switchdev.c')
-rw-r--r--net/switchdev/switchdev.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c
index b683e89b4caa..658bc3ac8008 100644
--- a/net/switchdev/switchdev.c
+++ b/net/switchdev/switchdev.c
@@ -103,7 +103,9 @@ static void switchdev_port_attr_set_work(struct work_struct *work)
103 103
104 rtnl_lock(); 104 rtnl_lock();
105 err = switchdev_port_attr_set(asw->dev, &asw->attr); 105 err = switchdev_port_attr_set(asw->dev, &asw->attr);
106 BUG_ON(err); 106 if (err && err != -EOPNOTSUPP)
107 netdev_err(asw->dev, "failed (err=%d) to set attribute (id=%d)\n",
108 err, asw->attr.id);
107 rtnl_unlock(); 109 rtnl_unlock();
108 110
109 dev_put(asw->dev); 111 dev_put(asw->dev);