MCPcopy Create free account
hub / github.com/F-Stack/f-stack / bnxt_pci_probe

Function bnxt_pci_probe

dpdk/drivers/net/bnxt/bnxt_ethdev.c:6392–6438  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6390}
6391
6392static int bnxt_pci_probe(struct rte_pci_driver *pci_drv __rte_unused,
6393 struct rte_pci_device *pci_dev)
6394{
6395 struct rte_eth_devargs eth_da = { .nb_representor_ports = 0 };
6396 struct rte_eth_dev *backing_eth_dev;
6397 uint16_t num_rep;
6398 int ret = 0;
6399
6400 if (pci_dev->device.devargs) {
6401 ret = rte_eth_devargs_parse(pci_dev->device.devargs->args,
6402 &eth_da);
6403 if (ret)
6404 return ret;
6405 }
6406
6407 num_rep = eth_da.nb_representor_ports;
6408 PMD_DRV_LOG(DEBUG, "nb_representor_ports = %d\n",
6409 num_rep);
6410
6411 /* We could come here after first level of probe is already invoked
6412 * as part of an application bringup(OVS-DPDK vswitchd), so first check
6413 * for already allocated eth_dev for the backing device (PF/Trusted VF)
6414 */
6415 backing_eth_dev = rte_eth_dev_allocated(pci_dev->device.name);
6416 if (backing_eth_dev == NULL) {
6417 ret = rte_eth_dev_create(&pci_dev->device, pci_dev->device.name,
6418 sizeof(struct bnxt),
6419 eth_dev_pci_specific_init, pci_dev,
6420 bnxt_dev_init, NULL);
6421
6422 if (ret || !num_rep)
6423 return ret;
6424
6425 backing_eth_dev = rte_eth_dev_allocated(pci_dev->device.name);
6426 }
6427 PMD_DRV_LOG(DEBUG, "BNXT Port:%d pci probe\n",
6428 backing_eth_dev->data->port_id);
6429
6430 if (!num_rep)
6431 return ret;
6432
6433 /* probe representor ports now */
6434 ret = bnxt_rep_port_probe(pci_dev, &eth_da, backing_eth_dev,
6435 pci_dev->device.devargs->args);
6436
6437 return ret;
6438}
6439
6440static int bnxt_pci_remove(struct rte_pci_device *pci_dev)
6441{

Callers

nothing calls this directly

Calls 4

rte_eth_devargs_parseFunction · 0.85
rte_eth_dev_allocatedFunction · 0.85
rte_eth_dev_createFunction · 0.85
bnxt_rep_port_probeFunction · 0.85

Tested by

no test coverage detected