aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/veth.c
diff options
context:
space:
mode:
authorWANG Cong <xiyou.wangcong@gmail.com>2014-06-23 18:36:02 -0400
committerDavid S. Miller <davem@davemloft.net>2014-06-25 19:35:37 -0400
commitbb446c19fefd7b4435adb12a9dd7666adc5b553a (patch)
tree6bdb8af244fa9e70a09621209eac7e51a895368a /drivers/net/veth.c
parent13ec7a6b9dad16e8d5ed4e92eb1869670db7a93f (diff)
veth: add netpoll support
It is trivial to add netpoll support to veth, since it is not a stacked device, we don't need to setup and clean up netpoll. Reported-by: Stefan Priebe <s.priebe@profihost.ag> Cc: "David S. Miller" <davem@davemloft.net> Cc: Neil Horman <nhorman@tuxdriver.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/veth.c')
-rw-r--r--drivers/net/veth.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/veth.c b/drivers/net/veth.c
index b4a10bcb66a0..9b945e60530e 100644
--- a/drivers/net/veth.c
+++ b/drivers/net/veth.c
@@ -248,6 +248,21 @@ static void veth_dev_free(struct net_device *dev)
248 free_netdev(dev); 248 free_netdev(dev);
249} 249}
250 250
251#ifdef CONFIG_NET_POLL_CONTROLLER
252static void veth_poll_controller(struct net_device *dev)
253{
254 /* veth only receives frames when its peer sends one
255 * Since it's a synchronous operation, we are guaranteed
256 * never to have pending data when we poll for it so
257 * there is nothing to do here.
258 *
259 * We need this though so netpoll recognizes us as an interface that
260 * supports polling, which enables bridge devices in virt setups to
261 * still use netconsole
262 */
263}
264#endif /* CONFIG_NET_POLL_CONTROLLER */
265
251static const struct net_device_ops veth_netdev_ops = { 266static const struct net_device_ops veth_netdev_ops = {
252 .ndo_init = veth_dev_init, 267 .ndo_init = veth_dev_init,
253 .ndo_open = veth_open, 268 .ndo_open = veth_open,
@@ -257,6 +272,9 @@ static const struct net_device_ops veth_netdev_ops = {
257 .ndo_get_stats64 = veth_get_stats64, 272 .ndo_get_stats64 = veth_get_stats64,
258 .ndo_set_rx_mode = veth_set_multicast_list, 273 .ndo_set_rx_mode = veth_set_multicast_list,
259 .ndo_set_mac_address = eth_mac_addr, 274 .ndo_set_mac_address = eth_mac_addr,
275#ifdef CONFIG_NET_POLL_CONTROLLER
276 .ndo_poll_controller = veth_poll_controller,
277#endif
260}; 278};
261 279
262#define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \ 280#define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_ALL_TSO | \