Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4247e161 authored by Herbert Xu's avatar Herbert Xu Committed by David S. Miller
Browse files

netpoll: Add ndo_netpoll_setup



This patch adds ndo_netpoll_setup as the initialisation primitive
to complement ndo_netpoll_cleanup.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent dbaa1541
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -744,6 +744,8 @@ struct net_device_ops {
						        unsigned short vid);
#ifdef CONFIG_NET_POLL_CONTROLLER
	void                    (*ndo_poll_controller)(struct net_device *dev);
	int			(*ndo_netpoll_setup)(struct net_device *dev,
						     struct netpoll_info *info);
	void			(*ndo_netpoll_cleanup)(struct net_device *dev);
#endif
	int			(*ndo_set_vf_mac)(struct net_device *dev,
+10 −0
Original line number Diff line number Diff line
@@ -698,6 +698,7 @@ int netpoll_setup(struct netpoll *np)
	struct net_device *ndev = NULL;
	struct in_device *in_dev;
	struct netpoll_info *npinfo;
	const struct net_device_ops *ops;
	unsigned long flags;
	int err;

@@ -797,6 +798,13 @@ int netpoll_setup(struct netpoll *np)
		INIT_DELAYED_WORK(&npinfo->tx_work, queue_process);

		atomic_set(&npinfo->refcnt, 1);

		ops = np->dev->netdev_ops;
		if (ops->ndo_netpoll_setup) {
			err = ops->ndo_netpoll_setup(ndev, npinfo);
			if (err)
				goto free_npinfo;
		}
	} else {
		npinfo = ndev->npinfo;
		atomic_inc(&npinfo->refcnt);
@@ -817,6 +825,8 @@ int netpoll_setup(struct netpoll *np)

	return 0;

free_npinfo:
	kfree(npinfo);
unlock:
	rtnl_unlock();
put: