Lines Matching defs:psnet
60 struct psnet *psnet = snet->psnet;
65 if (PSNET_FLAG_ON(psnet, SNET_CFG_FLAG_IRQ_PF))
345 off = snet->psnet->cfg.host_cfg_off;
349 snet_write32(snet, off, snet->psnet->negotiated_cfg_ver);
384 snet_write32(snet, snet->psnet->cfg.host_cfg_off, SNET_SIGNATURE);
387 ret = readx_poll_timeout(ioread32, snet->bar + snet->psnet->cfg.host_cfg_off,
431 struct psnet *psnet = snet->psnet;
442 pf_irqs = PSNET_FLAG_ON(psnet, SNET_CFG_FLAG_IRQ_PF);
556 static int psnet_open_pf_bar(struct pci_dev *pdev, struct psnet *psnet)
576 snprintf(name, sizeof(name), "psnet[%s]-bars", pci_name(pdev));
585 psnet->bars[i] = pcim_iomap_table(pdev)[i];
598 ret = pcim_iomap_regions(pdev, BIT(snet->psnet->cfg.vf_bar), name);
604 snet->bar = pcim_iomap_table(pdev)[snet->psnet->cfg.vf_bar];
628 static int psnet_detect_bar(struct psnet *psnet, u32 off)
639 if (!psnet->bars[i])
642 if (ioread32(psnet->bars[i] + off) == SNET_SIGNATURE)
651 static void psnet_unmap_unused_bars(struct pci_dev *pdev, struct psnet *psnet)
656 if (psnet->bars[i] && i != psnet->barno)
665 static int psnet_read_cfg(struct pci_dev *pdev, struct psnet *psnet)
667 struct snet_cfg *cfg = &psnet->cfg;
675 barno = psnet_detect_bar(psnet, off);
682 psnet->barno = barno;
685 psnet_unmap_unused_bars(pdev, psnet);
688 cfg->key = psnet_read32(psnet, off);
690 cfg->cfg_size = psnet_read32(psnet, off);
692 cfg->cfg_ver = psnet_read32(psnet, off);
697 psnet->negotiated_cfg_ver = min_t(u32, cfg->cfg_ver, SNET_CFG_VERSION);
698 SNET_DBG(pdev, "SNET config version %u\n", psnet->negotiated_cfg_ver);
700 cfg->vf_num = psnet_read32(psnet, off);
702 cfg->vf_bar = psnet_read32(psnet, off);
704 cfg->host_cfg_off = psnet_read32(psnet, off);
706 cfg->max_size_host_cfg = psnet_read32(psnet, off);
708 cfg->virtio_cfg_off = psnet_read32(psnet, off);
710 cfg->kick_off = psnet_read32(psnet, off);
712 cfg->hwmon_off = psnet_read32(psnet, off);
714 cfg->ctrl_off = psnet_read32(psnet, off);
716 cfg->flags = psnet_read32(psnet, off);
721 cfg->devices_num = psnet_read32(psnet, off);
736 cfg->devs[i]->virtio_id = psnet_read32(psnet, off);
738 cfg->devs[i]->vq_num = psnet_read32(psnet, off);
740 cfg->devs[i]->vq_size = psnet_read32(psnet, off);
742 cfg->devs[i]->vfid = psnet_read32(psnet, off);
744 cfg->devs[i]->features = psnet_read64(psnet, off);
749 cfg->devs[i]->cfg_size = psnet_read32(psnet, off);
763 static int psnet_alloc_irq_vector(struct pci_dev *pdev, struct psnet *psnet)
769 for (i = 0; i < psnet->cfg.devices_num; i++)
770 irq_num += psnet->cfg.devs[i]->vq_num + 1;
835 snet->vqs[i]->kick_ptr = snet->bar + snet->psnet->cfg.kick_off +
843 static int psnet_get_next_irq_num(struct psnet *psnet)
847 spin_lock(&psnet->lock);
848 irq = psnet->next_irq++;
849 spin_unlock(&psnet->lock);
856 struct psnet *psnet = snet->psnet;
860 snet->cfg_irq_idx = psnet_get_next_irq_num(psnet);
866 snet->vqs[i]->irq_idx = psnet_get_next_irq_num(psnet);
889 struct psnet *psnet;
900 psnet = kzalloc(sizeof(*psnet), GFP_KERNEL);
901 if (!psnet)
905 spin_lock_init(&psnet->lock);
908 pci_set_drvdata(pdev, psnet);
911 ret = psnet_open_pf_bar(pdev, psnet);
916 ret = psnet_read_cfg(pdev, psnet);
923 pf_irqs = PSNET_FLAG_ON(psnet, SNET_CFG_FLAG_IRQ_PF);
926 ret = psnet_alloc_irq_vector(pdev, psnet);
931 SNET_DBG(pdev, "Enable %u virtual functions\n", psnet->cfg.vf_num);
932 ret = pci_enable_sriov(pdev, psnet->cfg.vf_num);
939 if (PSNET_FLAG_ON(psnet, SNET_CFG_FLAG_HWMON)) {
953 snet_free_cfg(&psnet->cfg);
955 kfree(psnet);
963 struct psnet *psnet = pci_get_drvdata(pdev_pf);
981 dev_cfg = snet_find_dev_cfg(&psnet->cfg, vfid);
990 pf_irqs = PSNET_FLAG_ON(psnet, SNET_CFG_FLAG_IRQ_PF);
1020 snet->psnet = psnet;
1032 snet->cfg->virtio_cfg = snet->bar + snet->psnet->cfg.virtio_cfg_off;
1082 struct psnet *psnet = pci_get_drvdata(pdev);
1086 if (PSNET_FLAG_ON(psnet, SNET_CFG_FLAG_IRQ_PF))
1089 snet_free_cfg(&psnet->cfg);
1090 kfree(psnet);
1096 struct psnet *psnet = snet->psnet;
1101 if (!PSNET_FLAG_ON(psnet, SNET_CFG_FLAG_IRQ_PF))