| 1396 | } |
| 1397 | |
| 1398 | static int |
| 1399 | eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) |
| 1400 | { |
| 1401 | struct hn_data *hv = eth_dev->data->dev_private; |
| 1402 | int ret, ret_stop; |
| 1403 | |
| 1404 | PMD_INIT_FUNC_TRACE(); |
| 1405 | |
| 1406 | if (rte_eal_process_type() != RTE_PROC_PRIMARY) |
| 1407 | return 0; |
| 1408 | |
| 1409 | ret_stop = hn_dev_stop(eth_dev); |
| 1410 | hn_dev_close(eth_dev); |
| 1411 | |
| 1412 | free(hv->vf_devargs); |
| 1413 | hv->vf_devargs = NULL; |
| 1414 | |
| 1415 | hn_detach(hv); |
| 1416 | hn_chim_uninit(eth_dev); |
| 1417 | rte_vmbus_chan_close(hv->channels[0]); |
| 1418 | rte_free(hv->primary); |
| 1419 | ret = rte_eth_dev_owner_delete(hv->owner.id); |
| 1420 | if (ret != 0) |
| 1421 | return ret; |
| 1422 | |
| 1423 | return ret_stop; |
| 1424 | } |
| 1425 | |
| 1426 | static int eth_hn_probe(struct rte_vmbus_driver *drv __rte_unused, |
| 1427 | struct rte_vmbus_device *dev) |
no test coverage detected