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

Function roc_ree_dev_init

dpdk/drivers/common/cnxk/roc_ree.c:562–635  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

560}
561
562int
563roc_ree_dev_init(struct roc_ree_vf *vf)
564{
565 struct plt_pci_device *pci_dev;
566 struct ree *ree;
567 struct dev *dev;
568 uint8_t max_matches = 0;
569 uint16_t nb_queues = 0;
570 int rc;
571
572 if (vf == NULL || vf->pci_dev == NULL)
573 return -EINVAL;
574
575 PLT_STATIC_ASSERT(sizeof(struct ree) <= ROC_REE_MEM_SZ);
576
577 ree = roc_ree_to_ree_priv(vf);
578 memset(ree, 0, sizeof(*ree));
579 vf->dev = &ree->dev;
580
581 pci_dev = vf->pci_dev;
582 dev = vf->dev;
583
584 /* Initialize device */
585 rc = dev_init(dev, pci_dev);
586 if (rc) {
587 plt_err("Failed to init roc device");
588 goto fail;
589 }
590
591 /* Get REE block address */
592 vf->block_address = ree_get_blkaddr(dev);
593 if (!vf->block_address) {
594 plt_err("Could not determine block PF number");
595 goto fail;
596 }
597
598 /* Get number of queues available on the device */
599 rc = roc_ree_available_queues_get(vf, &nb_queues);
600 if (rc) {
601 plt_err("Could not determine the number of queues available");
602 goto fail;
603 }
604
605 /* Don't exceed the limits set per VF */
606 nb_queues = RTE_MIN(nb_queues, REE_MAX_QUEUES_PER_VF);
607
608 if (nb_queues == 0) {
609 plt_err("No free queues available on the device");
610 goto fail;
611 }
612
613 vf->max_queues = nb_queues;
614
615 plt_ree_dbg("Max queues supported by device: %d", vf->max_queues);
616
617 /* Get number of maximum matches supported on the device */
618 rc = roc_ree_max_matches_get(vf, &max_matches);
619 if (rc) {

Callers 1

cn9k_ree_pci_probeFunction · 0.85

Calls 6

roc_ree_to_ree_privFunction · 0.85
memsetFunction · 0.85
dev_initFunction · 0.85
ree_get_blkaddrFunction · 0.85
roc_ree_max_matches_getFunction · 0.85

Tested by

no test coverage detected