mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
eth: fbnic: request ops lock
We'll add queue ops soon so. queue ops will opt the driver into extra locking. Request this locking explicitly already to make future patches smaller and easier to review. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Link: https://patch.msgid.link/20250901211214.1027927-6-kuba@kernel.org Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
426e13db36
commit
4ddb17c1a2
|
|
@ -714,6 +714,8 @@ struct net_device *fbnic_netdev_alloc(struct fbnic_dev *fbd)
|
|||
|
||||
fbnic_set_ethtool_ops(netdev);
|
||||
|
||||
netdev->request_ops_lock = true;
|
||||
|
||||
fbn = netdev_priv(netdev);
|
||||
|
||||
fbn->netdev = netdev;
|
||||
|
|
|
|||
|
|
@ -206,8 +206,11 @@ static void fbnic_service_task(struct work_struct *work)
|
|||
|
||||
fbnic_bmc_rpc_check(fbd);
|
||||
|
||||
if (netif_carrier_ok(fbd->netdev))
|
||||
if (netif_carrier_ok(fbd->netdev)) {
|
||||
netdev_lock(fbd->netdev);
|
||||
fbnic_napi_depletion_check(fbd->netdev);
|
||||
netdev_unlock(fbd->netdev);
|
||||
}
|
||||
|
||||
if (netif_running(fbd->netdev))
|
||||
schedule_delayed_work(&fbd->service_task, HZ);
|
||||
|
|
@ -391,12 +394,14 @@ static int fbnic_pm_suspend(struct device *dev)
|
|||
goto null_uc_addr;
|
||||
|
||||
rtnl_lock();
|
||||
netdev_lock(netdev);
|
||||
|
||||
netif_device_detach(netdev);
|
||||
|
||||
if (netif_running(netdev))
|
||||
netdev->netdev_ops->ndo_stop(netdev);
|
||||
|
||||
netdev_unlock(netdev);
|
||||
rtnl_unlock();
|
||||
|
||||
null_uc_addr:
|
||||
|
|
@ -461,10 +466,12 @@ static int __fbnic_pm_resume(struct device *dev)
|
|||
fbnic_reset_queues(fbn, fbn->num_tx_queues, fbn->num_rx_queues);
|
||||
|
||||
rtnl_lock();
|
||||
netdev_lock(netdev);
|
||||
|
||||
if (netif_running(netdev))
|
||||
err = __fbnic_open(fbn);
|
||||
|
||||
netdev_unlock(netdev);
|
||||
rtnl_unlock();
|
||||
if (err)
|
||||
goto err_free_mbx;
|
||||
|
|
|
|||
|
|
@ -1501,7 +1501,7 @@ static void fbnic_free_napi_vector(struct fbnic_net *fbn,
|
|||
}
|
||||
|
||||
fbnic_napi_free_irq(fbd, nv);
|
||||
netif_napi_del(&nv->napi);
|
||||
netif_napi_del_locked(&nv->napi);
|
||||
fbn->napi[fbnic_napi_idx(nv)] = NULL;
|
||||
kfree(nv);
|
||||
}
|
||||
|
|
@ -1611,11 +1611,12 @@ static int fbnic_alloc_napi_vector(struct fbnic_dev *fbd, struct fbnic_net *fbn,
|
|||
|
||||
/* Tie napi to netdev */
|
||||
fbn->napi[fbnic_napi_idx(nv)] = nv;
|
||||
netif_napi_add(fbn->netdev, &nv->napi, fbnic_poll);
|
||||
netif_napi_add_locked(fbn->netdev, &nv->napi, fbnic_poll);
|
||||
|
||||
/* Record IRQ to NAPI struct */
|
||||
netif_napi_set_irq(&nv->napi,
|
||||
pci_irq_vector(to_pci_dev(fbd->dev), nv->v_idx));
|
||||
netif_napi_set_irq_locked(&nv->napi,
|
||||
pci_irq_vector(to_pci_dev(fbd->dev),
|
||||
nv->v_idx));
|
||||
|
||||
/* Tie nv back to PCIe dev */
|
||||
nv->dev = fbd->dev;
|
||||
|
|
@ -1704,7 +1705,7 @@ static int fbnic_alloc_napi_vector(struct fbnic_dev *fbd, struct fbnic_net *fbn,
|
|||
return 0;
|
||||
|
||||
napi_del:
|
||||
netif_napi_del(&nv->napi);
|
||||
netif_napi_del_locked(&nv->napi);
|
||||
fbn->napi[fbnic_napi_idx(nv)] = NULL;
|
||||
kfree(nv);
|
||||
return err;
|
||||
|
|
@ -2173,7 +2174,7 @@ void fbnic_napi_disable(struct fbnic_net *fbn)
|
|||
int i;
|
||||
|
||||
for (i = 0; i < fbn->num_napi; i++) {
|
||||
napi_disable(&fbn->napi[i]->napi);
|
||||
napi_disable_locked(&fbn->napi[i]->napi);
|
||||
|
||||
fbnic_nv_irq_disable(fbn->napi[i]);
|
||||
}
|
||||
|
|
@ -2621,7 +2622,7 @@ void fbnic_napi_enable(struct fbnic_net *fbn)
|
|||
for (i = 0; i < fbn->num_napi; i++) {
|
||||
struct fbnic_napi_vector *nv = fbn->napi[i];
|
||||
|
||||
napi_enable(&nv->napi);
|
||||
napi_enable_locked(&nv->napi);
|
||||
|
||||
fbnic_nv_irq_enable(nv);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user