Lines Matching full:ndev

41 static void clear_nps_core_err_intr(struct nitrox_device *ndev)  in clear_nps_core_err_intr()  argument
46 value = nitrox_read_csr(ndev, NPS_CORE_INT); in clear_nps_core_err_intr()
47 nitrox_write_csr(ndev, NPS_CORE_INT, value); in clear_nps_core_err_intr()
49 dev_err_ratelimited(DEV(ndev), "NSP_CORE_INT 0x%016llx\n", value); in clear_nps_core_err_intr()
52 static void clear_nps_pkt_err_intr(struct nitrox_device *ndev) in clear_nps_pkt_err_intr() argument
58 pkt_int.value = nitrox_read_csr(ndev, NPS_PKT_INT); in clear_nps_pkt_err_intr()
59 dev_err_ratelimited(DEV(ndev), "NPS_PKT_INT 0x%016llx\n", in clear_nps_pkt_err_intr()
64 value = nitrox_read_csr(ndev, offset); in clear_nps_pkt_err_intr()
65 nitrox_write_csr(ndev, offset, value); in clear_nps_pkt_err_intr()
66 dev_err_ratelimited(DEV(ndev), in clear_nps_pkt_err_intr()
70 value = nitrox_read_csr(ndev, offset); in clear_nps_pkt_err_intr()
71 nitrox_write_csr(ndev, offset, value); in clear_nps_pkt_err_intr()
74 enable_pkt_solicit_port(ndev, i); in clear_nps_pkt_err_intr()
76 dev_err_ratelimited(DEV(ndev), in clear_nps_pkt_err_intr()
80 value = nitrox_read_csr(ndev, offset); in clear_nps_pkt_err_intr()
81 nitrox_write_csr(ndev, offset, value); in clear_nps_pkt_err_intr()
82 dev_err_ratelimited(DEV(ndev), in clear_nps_pkt_err_intr()
88 value = nitrox_read_csr(ndev, offset); in clear_nps_pkt_err_intr()
89 nitrox_write_csr(ndev, offset, value); in clear_nps_pkt_err_intr()
90 dev_err_ratelimited(DEV(ndev), in clear_nps_pkt_err_intr()
93 value = nitrox_read_csr(ndev, offset); in clear_nps_pkt_err_intr()
94 nitrox_write_csr(ndev, offset, value); in clear_nps_pkt_err_intr()
97 enable_pkt_input_ring(ndev, i); in clear_nps_pkt_err_intr()
99 dev_err_ratelimited(DEV(ndev), in clear_nps_pkt_err_intr()
103 value = nitrox_read_csr(ndev, offset); in clear_nps_pkt_err_intr()
104 nitrox_write_csr(ndev, offset, value); in clear_nps_pkt_err_intr()
105 dev_err_ratelimited(DEV(ndev), in clear_nps_pkt_err_intr()
110 static void clear_pom_err_intr(struct nitrox_device *ndev) in clear_pom_err_intr() argument
114 value = nitrox_read_csr(ndev, POM_INT); in clear_pom_err_intr()
115 nitrox_write_csr(ndev, POM_INT, value); in clear_pom_err_intr()
116 dev_err_ratelimited(DEV(ndev), "POM_INT 0x%016llx\n", value); in clear_pom_err_intr()
119 static void clear_pem_err_intr(struct nitrox_device *ndev) in clear_pem_err_intr() argument
123 value = nitrox_read_csr(ndev, PEM0_INT); in clear_pem_err_intr()
124 nitrox_write_csr(ndev, PEM0_INT, value); in clear_pem_err_intr()
125 dev_err_ratelimited(DEV(ndev), "PEM(0)_INT 0x%016llx\n", value); in clear_pem_err_intr()
128 static void clear_lbc_err_intr(struct nitrox_device *ndev) in clear_lbc_err_intr() argument
134 lbc_int.value = nitrox_read_csr(ndev, LBC_INT); in clear_lbc_err_intr()
135 dev_err_ratelimited(DEV(ndev), "LBC_INT 0x%016llx\n", lbc_int.value); in clear_lbc_err_intr()
140 value = nitrox_read_csr(ndev, offset); in clear_lbc_err_intr()
141 nitrox_write_csr(ndev, offset, value); in clear_lbc_err_intr()
143 value = nitrox_read_csr(ndev, offset); in clear_lbc_err_intr()
144 nitrox_write_csr(ndev, offset, value); in clear_lbc_err_intr()
149 dev_err_ratelimited(DEV(ndev), "CAM_SOFT_ERR, invalidating LBC\n"); in clear_lbc_err_intr()
150 invalidate_lbc(ndev); in clear_lbc_err_intr()
155 value = nitrox_read_csr(ndev, offset); in clear_lbc_err_intr()
156 nitrox_write_csr(ndev, offset, value); in clear_lbc_err_intr()
158 value = nitrox_read_csr(ndev, offset); in clear_lbc_err_intr()
159 nitrox_write_csr(ndev, offset, value); in clear_lbc_err_intr()
164 value = nitrox_read_csr(ndev, offset); in clear_lbc_err_intr()
165 nitrox_write_csr(ndev, offset, value); in clear_lbc_err_intr()
167 value = nitrox_read_csr(ndev, offset); in clear_lbc_err_intr()
168 nitrox_write_csr(ndev, offset, value); in clear_lbc_err_intr()
170 nitrox_write_csr(ndev, LBC_INT, lbc_int.value); in clear_lbc_err_intr()
173 static void clear_efl_err_intr(struct nitrox_device *ndev) in clear_efl_err_intr() argument
182 core_int.value = nitrox_read_csr(ndev, offset); in clear_efl_err_intr()
183 nitrox_write_csr(ndev, offset, core_int.value); in clear_efl_err_intr()
184 dev_err_ratelimited(DEV(ndev), "ELF_CORE(%d)_INT 0x%016llx\n", in clear_efl_err_intr()
188 value = nitrox_read_csr(ndev, offset); in clear_efl_err_intr()
189 nitrox_write_csr(ndev, offset, value); in clear_efl_err_intr()
194 static void clear_bmi_err_intr(struct nitrox_device *ndev) in clear_bmi_err_intr() argument
198 value = nitrox_read_csr(ndev, BMI_INT); in clear_bmi_err_intr()
199 nitrox_write_csr(ndev, BMI_INT, value); in clear_bmi_err_intr()
200 dev_err_ratelimited(DEV(ndev), "BMI_INT 0x%016llx\n", value); in clear_bmi_err_intr()
206 struct nitrox_device *ndev = qvec->ndev; in nps_core_int_tasklet() local
209 if (ndev->mode == __NDEV_MODE_PF) { in nps_core_int_tasklet()
225 struct nitrox_device *ndev = qvec->ndev; in nps_core_int_isr() local
228 core_int.value = nitrox_read_csr(ndev, NPS_CORE_INT_ACTIVE); in nps_core_int_isr()
231 clear_nps_core_err_intr(ndev); in nps_core_int_isr()
234 clear_nps_pkt_err_intr(ndev); in nps_core_int_isr()
237 clear_pom_err_intr(ndev); in nps_core_int_isr()
240 clear_pem_err_intr(ndev); in nps_core_int_isr()
243 clear_lbc_err_intr(ndev); in nps_core_int_isr()
246 clear_efl_err_intr(ndev); in nps_core_int_isr()
249 clear_bmi_err_intr(ndev); in nps_core_int_isr()
253 nitrox_pf2vf_mbox_handler(ndev); in nps_core_int_isr()
257 nitrox_write_csr(ndev, NPS_CORE_INT_ACTIVE, core_int.value); in nps_core_int_isr()
262 void nitrox_unregister_interrupts(struct nitrox_device *ndev) in nitrox_unregister_interrupts() argument
264 struct pci_dev *pdev = ndev->pdev; in nitrox_unregister_interrupts()
267 for (i = 0; i < ndev->num_vecs; i++) { in nitrox_unregister_interrupts()
271 qvec = ndev->qvec + i; in nitrox_unregister_interrupts()
284 kfree(ndev->qvec); in nitrox_unregister_interrupts()
285 ndev->qvec = NULL; in nitrox_unregister_interrupts()
289 int nitrox_register_interrupts(struct nitrox_device *ndev) in nitrox_register_interrupts() argument
291 struct pci_dev *pdev = ndev->pdev; in nitrox_register_interrupts()
313 dev_err(DEV(ndev), "msix vectors %d alloc failed\n", nr_vecs); in nitrox_register_interrupts()
316 ndev->num_vecs = nr_vecs; in nitrox_register_interrupts()
318 ndev->qvec = kcalloc(nr_vecs, sizeof(*qvec), GFP_KERNEL); in nitrox_register_interrupts()
319 if (!ndev->qvec) { in nitrox_register_interrupts()
326 qvec = &ndev->qvec[i]; in nitrox_register_interrupts()
329 if (qvec->ring >= ndev->nr_queues) in nitrox_register_interrupts()
332 qvec->cmdq = &ndev->pkt_inq[qvec->ring]; in nitrox_register_interrupts()
338 dev_err(DEV(ndev), "irq failed for pkt ring/port%d\n", in nitrox_register_interrupts()
352 qvec = &ndev->qvec[i]; in nitrox_register_interrupts()
353 qvec->ndev = ndev; in nitrox_register_interrupts()
360 dev_err(DEV(ndev), "irq failed for nitrox-core-int%d\n", i); in nitrox_register_interrupts()
373 nitrox_unregister_interrupts(ndev); in nitrox_register_interrupts()
377 void nitrox_sriov_unregister_interrupts(struct nitrox_device *ndev) in nitrox_sriov_unregister_interrupts() argument
379 struct pci_dev *pdev = ndev->pdev; in nitrox_sriov_unregister_interrupts()
382 for (i = 0; i < ndev->num_vecs; i++) { in nitrox_sriov_unregister_interrupts()
386 qvec = ndev->qvec + i; in nitrox_sriov_unregister_interrupts()
390 vec = ndev->iov.msix.vector; in nitrox_sriov_unregister_interrupts()
398 kfree(ndev->qvec); in nitrox_sriov_unregister_interrupts()
399 ndev->qvec = NULL; in nitrox_sriov_unregister_interrupts()
403 int nitrox_sriov_register_interupts(struct nitrox_device *ndev) in nitrox_sriov_register_interupts() argument
405 struct pci_dev *pdev = ndev->pdev; in nitrox_sriov_register_interupts()
414 ndev->iov.msix.entry = NON_RING_MSIX_BASE; in nitrox_sriov_register_interupts()
415 ret = pci_enable_msix_exact(pdev, &ndev->iov.msix, NR_NON_RING_VECTORS); in nitrox_sriov_register_interupts()
417 dev_err(DEV(ndev), "failed to allocate nps-core-int%d\n", in nitrox_sriov_register_interupts()
427 qvec->ndev = ndev; in nitrox_sriov_register_interupts()
429 ndev->qvec = qvec; in nitrox_sriov_register_interupts()
430 ndev->num_vecs = NR_NON_RING_VECTORS; in nitrox_sriov_register_interupts()
434 vec = ndev->iov.msix.vector; in nitrox_sriov_register_interupts()
437 dev_err(DEV(ndev), "irq failed for nitrox-core-int%d\n", in nitrox_sriov_register_interupts()
451 nitrox_sriov_unregister_interrupts(ndev); in nitrox_sriov_register_interupts()