|
@@ -226,6 +226,33 @@ static void br_netpoll_cleanup(struct net_device *dev)
|
|
|
br_netpoll_disable(p);
|
|
|
}
|
|
|
|
|
|
+static int __br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
|
|
|
+{
|
|
|
+ struct netpoll *np;
|
|
|
+ int err;
|
|
|
+
|
|
|
+ np = kzalloc(sizeof(*p->np), gfp);
|
|
|
+ if (!np)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+ err = __netpoll_setup(np, p->dev, gfp);
|
|
|
+ if (err) {
|
|
|
+ kfree(np);
|
|
|
+ return err;
|
|
|
+ }
|
|
|
+
|
|
|
+ p->np = np;
|
|
|
+ return err;
|
|
|
+}
|
|
|
+
|
|
|
+int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
|
|
|
+{
|
|
|
+ if (!p->br->dev->npinfo)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ return __br_netpoll_enable(p, gfp);
|
|
|
+}
|
|
|
+
|
|
|
static int br_netpoll_setup(struct net_device *dev, struct netpoll_info *ni,
|
|
|
gfp_t gfp)
|
|
|
{
|
|
@@ -236,7 +263,7 @@ static int br_netpoll_setup(struct net_device *dev, struct netpoll_info *ni,
|
|
|
list_for_each_entry(p, &br->port_list, list) {
|
|
|
if (!p->dev)
|
|
|
continue;
|
|
|
- err = br_netpoll_enable(p, gfp);
|
|
|
+ err = __br_netpoll_enable(p, gfp);
|
|
|
if (err)
|
|
|
goto fail;
|
|
|
}
|
|
@@ -249,28 +276,6 @@ fail:
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
-int br_netpoll_enable(struct net_bridge_port *p, gfp_t gfp)
|
|
|
-{
|
|
|
- struct netpoll *np;
|
|
|
- int err;
|
|
|
-
|
|
|
- if (!p->br->dev->npinfo)
|
|
|
- return 0;
|
|
|
-
|
|
|
- np = kzalloc(sizeof(*p->np), gfp);
|
|
|
- if (!np)
|
|
|
- return -ENOMEM;
|
|
|
-
|
|
|
- err = __netpoll_setup(np, p->dev, gfp);
|
|
|
- if (err) {
|
|
|
- kfree(np);
|
|
|
- return err;
|
|
|
- }
|
|
|
-
|
|
|
- p->np = np;
|
|
|
- return err;
|
|
|
-}
|
|
|
-
|
|
|
void br_netpoll_disable(struct net_bridge_port *p)
|
|
|
{
|
|
|
struct netpoll *np = p->np;
|