| 1257 | } |
| 1258 | |
| 1259 | static int |
| 1260 | idpf_dev_vport_init(struct rte_eth_dev *dev, void *init_params) |
| 1261 | { |
| 1262 | struct idpf_vport *vport = dev->data->dev_private; |
| 1263 | struct idpf_vport_param *param = init_params; |
| 1264 | struct idpf_adapter_ext *adapter = param->adapter; |
| 1265 | /* for sending create vport virtchnl msg prepare */ |
| 1266 | struct virtchnl2_create_vport create_vport_info; |
| 1267 | int ret = 0; |
| 1268 | |
| 1269 | dev->dev_ops = &idpf_eth_dev_ops; |
| 1270 | vport->adapter = &adapter->base; |
| 1271 | vport->sw_idx = param->idx; |
| 1272 | vport->devarg_id = param->devarg_id; |
| 1273 | |
| 1274 | memset(&create_vport_info, 0, sizeof(create_vport_info)); |
| 1275 | ret = idpf_vport_info_init(vport, &create_vport_info); |
| 1276 | if (ret != 0) { |
| 1277 | PMD_INIT_LOG(ERR, "Failed to init vport req_info."); |
| 1278 | goto err; |
| 1279 | } |
| 1280 | |
| 1281 | ret = idpf_vport_init(vport, &create_vport_info, dev->data); |
| 1282 | if (ret != 0) { |
| 1283 | PMD_INIT_LOG(ERR, "Failed to init vports."); |
| 1284 | goto err; |
| 1285 | } |
| 1286 | |
| 1287 | dev->data->mac_addrs = rte_zmalloc(NULL, RTE_ETHER_ADDR_LEN, 0); |
| 1288 | if (dev->data->mac_addrs == NULL) { |
| 1289 | PMD_INIT_LOG(ERR, "Cannot allocate mac_addr memory."); |
| 1290 | ret = -ENOMEM; |
| 1291 | goto err_mac_addrs; |
| 1292 | } |
| 1293 | |
| 1294 | rte_ether_addr_copy((struct rte_ether_addr *)vport->default_mac_addr, |
| 1295 | &dev->data->mac_addrs[0]); |
| 1296 | |
| 1297 | adapter->vports[param->idx] = vport; |
| 1298 | adapter->cur_vports |= RTE_BIT32(param->devarg_id); |
| 1299 | adapter->cur_vport_nb++; |
| 1300 | |
| 1301 | return 0; |
| 1302 | |
| 1303 | err_mac_addrs: |
| 1304 | adapter->vports[param->idx] = NULL; /* reset */ |
| 1305 | idpf_vport_deinit(vport); |
| 1306 | err: |
| 1307 | return ret; |
| 1308 | } |
| 1309 | |
| 1310 | static const struct rte_pci_id pci_id_idpf_map[] = { |
| 1311 | { RTE_PCI_DEVICE(IDPF_INTEL_VENDOR_ID, IDPF_DEV_ID_PF) }, |
nothing calls this directly
no test coverage detected