[v7,09/12] vdpa/ifc: change some driver logic
Checks
Commit Message
Insert internal list element to internal list before
register vdpa device, in order to call vdpa ops during
vdpa device registration.
Signed-off-by: Andy Pei <andy.pei@intel.com>
---
drivers/vdpa/ifc/ifcvf_vdpa.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
@@ -1737,17 +1737,20 @@ struct rte_vdpa_dev_info dev_info[] = {
}
internal->sw_lm = sw_fallback_lm;
+ pthread_mutex_lock(&internal_list_lock);
+ TAILQ_INSERT_TAIL(&internal_list, list, next);
+ pthread_mutex_unlock(&internal_list_lock);
+
internal->vdev = rte_vdpa_register_device(&pci_dev->device,
dev_info[internal->hw.device_type].ops);
if (internal->vdev == NULL) {
DRV_LOG(ERR, "failed to register device %s", pci_dev->name);
+ pthread_mutex_lock(&internal_list_lock);
+ TAILQ_REMOVE(&internal_list, list, next);
+ pthread_mutex_unlock(&internal_list_lock);
goto error;
}
- pthread_mutex_lock(&internal_list_lock);
- TAILQ_INSERT_TAIL(&internal_list, list, next);
- pthread_mutex_unlock(&internal_list_lock);
-
rte_atomic32_set(&internal->started, 1);
update_datapath(internal);