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

Function ionic_port_init

dpdk/drivers/net/ionic/ionic_main.c:467–509  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

465}
466
467int
468ionic_port_init(struct ionic_adapter *adapter)
469{
470 struct ionic_dev *idev = &adapter->idev;
471 struct ionic_identity *ident = &adapter->ident;
472 char z_name[RTE_MEMZONE_NAMESIZE];
473 uint32_t config_words = RTE_DIM(ident->port.config.words);
474 uint32_t cmd_words = RTE_DIM(idev->dev_cmd->data);
475 uint32_t i, nwords;
476 int err;
477
478 if (idev->port_info)
479 return 0;
480
481 idev->port_info_sz = RTE_ALIGN(sizeof(*idev->port_info),
482 rte_mem_page_size());
483
484 snprintf(z_name, sizeof(z_name), "%s_port_%s_info",
485 IONIC_DRV_NAME, adapter->name);
486
487 idev->port_info_z = ionic_memzone_reserve(z_name, idev->port_info_sz,
488 SOCKET_ID_ANY);
489 if (!idev->port_info_z) {
490 IONIC_PRINT(ERR, "Cannot reserve port info DMA memory");
491 return -ENOMEM;
492 }
493
494 idev->port_info = idev->port_info_z->addr;
495 idev->port_info_pa = idev->port_info_z->iova;
496
497 nwords = RTE_MIN(config_words, cmd_words);
498
499 for (i = 0; i < nwords; i++)
500 iowrite32(ident->port.config.words[i], &idev->dev_cmd->data[i]);
501
502 idev->port_info->config.state = IONIC_PORT_ADMIN_STATE_UP;
503 ionic_dev_cmd_port_init(idev);
504 err = ionic_dev_cmd_wait_check(idev, IONIC_DEVCMD_TIMEOUT);
505 if (err)
506 IONIC_PRINT(ERR, "Failed to init port");
507
508 return err;
509}
510
511int
512ionic_port_reset(struct ionic_adapter *adapter)

Callers 1

eth_ionic_dev_probeFunction · 0.85

Calls 6

snprintfFunction · 0.85
ionic_memzone_reserveFunction · 0.85
ionic_dev_cmd_port_initFunction · 0.85
ionic_dev_cmd_wait_checkFunction · 0.85
rte_mem_page_sizeFunction · 0.50
iowrite32Function · 0.50

Tested by

no test coverage detected