| 204 | } |
| 205 | |
| 206 | void |
| 207 | rte_eth_dev_probing_finish(struct rte_eth_dev *dev) |
| 208 | { |
| 209 | if (dev == NULL) |
| 210 | return; |
| 211 | |
| 212 | /* |
| 213 | * for secondary process, at that point we expect device |
| 214 | * to be already 'usable', so shared data and all function pointers |
| 215 | * for fast-path devops have to be setup properly inside rte_eth_dev. |
| 216 | */ |
| 217 | if (rte_eal_process_type() == RTE_PROC_SECONDARY) |
| 218 | eth_dev_fp_ops_setup(rte_eth_fp_ops + dev->data->port_id, dev); |
| 219 | |
| 220 | rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_NEW, NULL); |
| 221 | |
| 222 | dev->state = RTE_ETH_DEV_ATTACHED; |
| 223 | } |
| 224 | |
| 225 | int |
| 226 | rte_eth_dev_release_port(struct rte_eth_dev *eth_dev) |