netvsc: fix net poll mode
Subsystems (3)
PATCH v2 1/1 netvsc: fix net poll mode
The ndo_poll_controller function needs to schedule NAPI to pick up arriving packets and send completions. Otherwise no data will ever be received.
Signed-off-by Stephen Hemminger <[email protected]>
---
v2 - use rcu to ensure lower data structure is present
drivers/net/hyperv/netvsc_drv.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-)
drivers/net/hyperv/netvsc_drv.c +15 -4
@@ -1158,11 +1158,22 @@ netvsc_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info, }#ifdef CONFIG_NET_POLL_CONTROLLER -static void netvsc_poll_controller (struct net_device *net) +static void netvsc_poll_controller (struct net_device *dev) { -/* As netvsc_start_xmit() works synchronous we don't have to -* trigger anything here. -*/ +struct net_device_context *ndc =netdev_priv (dev); +struct netvsc_device *ndev; +int i; + +rcu_read_lock (); + ndev =rcu_dereference (ndc->nvdev); +if (ndev) { +for (i =0 ; i < ndev->num_chn; i++) { +struct netvsc_channel *nvchan = &ndev->chan_table[i]; + +napi_schedule (&nvchan->napi); + } + } +rcu_read_unlock (); }#endif
Signature · 1 line
2.11.0
Quoted 5 lines · On Fri, 12 May 2017 15:55:30 -0700 Stephen Hemminger…
The
ndo_poll_controllerfunction needs to schedule NAPI to pick up arriving packets and send completions. Otherwise no data will ever be received.Signed-off-by Stephen Hemminger <[email protected]>
Hold off on this. I will send v3 with a couple other RCU related fixes.