Loading include/linux/netdevice.h +2 −0 Original line number Diff line number Diff line Loading @@ -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, Loading net/core/netpoll.c +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -817,6 +825,8 @@ int netpoll_setup(struct netpoll *np) return 0; free_npinfo: kfree(npinfo); unlock: rtnl_unlock(); put: Loading Loading
include/linux/netdevice.h +2 −0 Original line number Diff line number Diff line Loading @@ -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, Loading
net/core/netpoll.c +10 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); Loading @@ -817,6 +825,8 @@ int netpoll_setup(struct netpoll *np) return 0; free_npinfo: kfree(npinfo); unlock: rtnl_unlock(); put: Loading