aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge/br_device.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bridge/br_device.c')
-rw-r--r--net/bridge/br_device.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index f15f9c4a0dd2..22b97ba7dc52 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -199,7 +199,7 @@ static int br_set_tx_csum(struct net_device *dev, u32 data)
199} 199}
200 200
201#ifdef CONFIG_NET_POLL_CONTROLLER 201#ifdef CONFIG_NET_POLL_CONTROLLER
202bool br_devices_support_netpoll(struct net_bridge *br) 202static bool br_devices_support_netpoll(struct net_bridge *br)
203{ 203{
204 struct net_bridge_port *p; 204 struct net_bridge_port *p;
205 bool ret = true; 205 bool ret = true;
@@ -225,9 +225,9 @@ static void br_poll_controller(struct net_device *br_dev)
225 netpoll_poll_dev(np->real_dev); 225 netpoll_poll_dev(np->real_dev);
226} 226}
227 227
228void br_netpoll_cleanup(struct net_device *br_dev) 228void br_netpoll_cleanup(struct net_device *dev)
229{ 229{
230 struct net_bridge *br = netdev_priv(br_dev); 230 struct net_bridge *br = netdev_priv(dev);
231 struct net_bridge_port *p, *n; 231 struct net_bridge_port *p, *n;
232 const struct net_device_ops *ops; 232 const struct net_device_ops *ops;
233 233
@@ -243,10 +243,30 @@ void br_netpoll_cleanup(struct net_device *br_dev)
243 } 243 }
244} 244}
245 245
246#else 246void br_netpoll_disable(struct net_bridge *br,
247 struct net_device *dev)
248{
249 if (br_devices_support_netpoll(br))
250 br->dev->priv_flags &= ~IFF_DISABLE_NETPOLL;
251 if (dev->netdev_ops->ndo_netpoll_cleanup)
252 dev->netdev_ops->ndo_netpoll_cleanup(dev);
253 else
254 dev->npinfo = NULL;
255}
247 256
248void br_netpoll_cleanup(struct net_device *br_dev) 257void br_netpoll_enable(struct net_bridge *br,
258 struct net_device *dev)
249{ 259{
260 if (br_devices_support_netpoll(br)) {
261 br->dev->priv_flags &= ~IFF_DISABLE_NETPOLL;
262 if (br->dev->npinfo)
263 dev->npinfo = br->dev->npinfo;
264 } else if (!(br->dev->priv_flags & IFF_DISABLE_NETPOLL)) {
265 br->dev->priv_flags |= IFF_DISABLE_NETPOLL;
266 printk(KERN_INFO "%s:new device %s"
267 " does not support netpoll (disabling)",
268 br->dev->name, dev->name);
269 }
250} 270}
251 271
252#endif 272#endif