struct rte_device *dev = rte_eth_devices[port_id].device;
int ret;
- /* Tell VSP to switch data path to synthentic */
+ /* Tell VSP to switch data path to synthetic */
hn_vf_remove(hv);
PMD_DRV_LOG(NOTICE, "Start to remove port %d", port_id);
PMD_DRV_LOG(ERR, "rte_eth_dev_stop failed port_id=%u ret=%d",
port_id, ret);
+ /* Record the device parameters for possible hotplug events */
+ if (dev->devargs && dev->devargs->args)
+ hv->vf_devargs = strdup(dev->devargs->args);
+
ret = rte_eth_dev_close(port_id);
if (ret)
PMD_DRV_LOG(ERR, "rte_eth_dev_close failed port_id=%u ret=%d",
rte_rwlock_read_lock(&hv->vf_lock);
vf_dev = hn_get_vf_dev(hv);
- if (vf_dev && vf_dev->dev_ops->tx_queue_release) {
- void *subq = vf_dev->data->tx_queues[queue_id];
-
- (*vf_dev->dev_ops->tx_queue_release)(subq);
- }
+ if (vf_dev && vf_dev->dev_ops->tx_queue_release)
+ (*vf_dev->dev_ops->tx_queue_release)(vf_dev, queue_id);
rte_rwlock_read_unlock(&hv->vf_lock);
}
rte_rwlock_read_lock(&hv->vf_lock);
vf_dev = hn_get_vf_dev(hv);
- if (vf_dev && vf_dev->dev_ops->rx_queue_release) {
- void *subq = vf_dev->data->rx_queues[queue_id];
-
- (*vf_dev->dev_ops->rx_queue_release)(subq);
- }
+ if (vf_dev && vf_dev->dev_ops->rx_queue_release)
+ (*vf_dev->dev_ops->rx_queue_release)(vf_dev, queue_id);
rte_rwlock_read_unlock(&hv->vf_lock);
}