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