mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
bnxt: use the devlink instance lock to protect sriov
In prep for .eswitch_mode_set being called with the devlink instance lock held use that lock explicitly instead of creating a local mutex just for the sriov reconfig. Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e7dc00f3d6
commit
7a1b0b1a55
|
|
@ -13470,7 +13470,6 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
|
||||
#ifdef CONFIG_BNXT_SRIOV
|
||||
init_waitqueue_head(&bp->sriov_cfg_wait);
|
||||
mutex_init(&bp->sriov_lock);
|
||||
#endif
|
||||
if (BNXT_SUPPORTS_TPA(bp)) {
|
||||
bp->gro_func = bnxt_gro_func_5730x;
|
||||
|
|
|
|||
|
|
@ -2072,12 +2072,6 @@ struct bnxt {
|
|||
wait_queue_head_t sriov_cfg_wait;
|
||||
bool sriov_cfg;
|
||||
#define BNXT_SRIOV_CFG_WAIT_TMO msecs_to_jiffies(10000)
|
||||
|
||||
/* lock to protect VF-rep creation/cleanup via
|
||||
* multiple paths such as ->sriov_configure() and
|
||||
* devlink ->eswitch_mode_set()
|
||||
*/
|
||||
struct mutex sriov_lock;
|
||||
#endif
|
||||
|
||||
#if BITS_PER_LONG == 32
|
||||
|
|
|
|||
|
|
@ -846,7 +846,7 @@ void bnxt_sriov_disable(struct bnxt *bp)
|
|||
return;
|
||||
|
||||
/* synchronize VF and VF-rep create and destroy */
|
||||
mutex_lock(&bp->sriov_lock);
|
||||
devl_lock(bp->dl);
|
||||
bnxt_vf_reps_destroy(bp);
|
||||
|
||||
if (pci_vfs_assigned(bp->pdev)) {
|
||||
|
|
@ -859,7 +859,7 @@ void bnxt_sriov_disable(struct bnxt *bp)
|
|||
/* Free the HW resources reserved for various VF's */
|
||||
bnxt_hwrm_func_vf_resource_free(bp, num_vfs);
|
||||
}
|
||||
mutex_unlock(&bp->sriov_lock);
|
||||
devl_unlock(bp->dl);
|
||||
|
||||
bnxt_free_vf_resources(bp);
|
||||
|
||||
|
|
|
|||
|
|
@ -561,7 +561,7 @@ int bnxt_dl_eswitch_mode_set(struct devlink *devlink, u16 mode,
|
|||
struct bnxt *bp = bnxt_get_bp_from_dl(devlink);
|
||||
int rc = 0;
|
||||
|
||||
mutex_lock(&bp->sriov_lock);
|
||||
devl_lock(devlink);
|
||||
if (bp->eswitch_mode == mode) {
|
||||
netdev_info(bp->dev, "already in %s eswitch mode\n",
|
||||
mode == DEVLINK_ESWITCH_MODE_LEGACY ?
|
||||
|
|
@ -595,7 +595,7 @@ int bnxt_dl_eswitch_mode_set(struct devlink *devlink, u16 mode,
|
|||
goto done;
|
||||
}
|
||||
done:
|
||||
mutex_unlock(&bp->sriov_lock);
|
||||
devl_unlock(devlink);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user