aboutsummaryrefslogtreecommitdiffstats
path: root/net/switchdev/switchdev.c
diff options
context:
space:
mode:
authorScott Feldman <sfeldma@gmail.com>2015-05-10 12:47:51 -0400
committerDavid S. Miller <davem@davemloft.net>2015-05-12 18:43:53 -0400
commit3563606258cf3b8f02eabddb1cb45a94c44d9611 (patch)
treee8c03f3d9274f5dac86490342f9f46016e660113 /net/switchdev/switchdev.c
parentc4f20321d9680760a291991d77bc5b6d0eb2ed78 (diff)
switchdev: convert STP update to switchdev attr set
STP update is just a settable port attribute, so convert switchdev_port_stp_update to an attr set. For DSA, the prepare phase is skipped and STP updates are only done in the commit phase. This is because currently the DSA drivers don't need to allocate any memory for STP updates and the STP update will not fail to HW (unless something horrible goes wrong on the MDIO bus, in which case the prepare phase wouldn't have been able to predict anyway). Signed-off-by: Scott Feldman <sfeldma@gmail.com> Acked-by: Jiri Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/switchdev/switchdev.c')
-rw-r--r--net/switchdev/switchdev.c28
1 files changed, 0 insertions, 28 deletions
diff --git a/net/switchdev/switchdev.c b/net/switchdev/switchdev.c
index 117fd0797abd..a3c359004902 100644
--- a/net/switchdev/switchdev.c
+++ b/net/switchdev/switchdev.c
@@ -187,34 +187,6 @@ int switchdev_port_attr_set(struct net_device *dev, struct switchdev_attr *attr)
187} 187}
188EXPORT_SYMBOL_GPL(switchdev_port_attr_set); 188EXPORT_SYMBOL_GPL(switchdev_port_attr_set);
189 189
190/**
191 * switchdev_port_stp_update - Notify switch device port of STP
192 * state change
193 * @dev: port device
194 * @state: port STP state
195 *
196 * Notify switch device port of bridge port STP state change.
197 */
198int switchdev_port_stp_update(struct net_device *dev, u8 state)
199{
200 const struct switchdev_ops *ops = dev->switchdev_ops;
201 struct net_device *lower_dev;
202 struct list_head *iter;
203 int err = -EOPNOTSUPP;
204
205 if (ops && ops->switchdev_port_stp_update)
206 return ops->switchdev_port_stp_update(dev, state);
207
208 netdev_for_each_lower_dev(dev, lower_dev, iter) {
209 err = switchdev_port_stp_update(lower_dev, state);
210 if (err && err != -EOPNOTSUPP)
211 return err;
212 }
213
214 return err;
215}
216EXPORT_SYMBOL_GPL(switchdev_port_stp_update);
217
218static DEFINE_MUTEX(switchdev_mutex); 190static DEFINE_MUTEX(switchdev_mutex);
219static RAW_NOTIFIER_HEAD(switchdev_notif_chain); 191static RAW_NOTIFIER_HEAD(switchdev_notif_chain);
220 192