Skip to content

Commit

Permalink
vmxnet3: Disable napi in suspend, reenable in resume.
Browse files Browse the repository at this point in the history
There is a small possibility of a race where the suspend routine gets
called, while a napi callback is still pending and when that comes up,
it enables interrupts which just got disabled in the suspend routine.
This change adds napi disable call in suspend and enable in resume to
avoid race.

Signed-off-by: Shreyas N Bhatewara <sbhatewara@vmware.com>
Acked-by: Dmitry Torokhov <dtor@vmware.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Shreyas Bhatewara authored and David S. Miller committed Jan 16, 2011
1 parent 76d39da commit 51956cd
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/net/vmxnet3/vmxnet3_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -3101,6 +3101,9 @@ vmxnet3_suspend(struct device *device)
if (!netif_running(netdev))
return 0;

for (i = 0; i < adapter->num_rx_queues; i++)
napi_disable(&adapter->rx_queue[i].napi);

vmxnet3_disable_all_intrs(adapter);
vmxnet3_free_irqs(adapter);
vmxnet3_free_intr_resources(adapter);
Expand Down Expand Up @@ -3192,7 +3195,7 @@ vmxnet3_suspend(struct device *device)
static int
vmxnet3_resume(struct device *device)
{
int err;
int err, i = 0;
struct pci_dev *pdev = to_pci_dev(device);
struct net_device *netdev = pci_get_drvdata(pdev);
struct vmxnet3_adapter *adapter = netdev_priv(netdev);
Expand Down Expand Up @@ -3224,6 +3227,8 @@ vmxnet3_resume(struct device *device)
VMXNET3_CMD_UPDATE_PMCFG);
vmxnet3_alloc_intr_resources(adapter);
vmxnet3_request_irqs(adapter);
for (i = 0; i < adapter->num_rx_queues; i++)
napi_enable(&adapter->rx_queue[i].napi);
vmxnet3_enable_all_intrs(adapter);

return 0;
Expand Down

0 comments on commit 51956cd

Please sign in to comment.