]> git.droids-corp.org - dpdk.git/blobdiff - drivers/mempool/octeontx2/otx2_mempool.c
mempool/octeontx2: add NPA IRQ handler
[dpdk.git] / drivers / mempool / octeontx2 / otx2_mempool.c
index fa74b753237c1c4c02ca10fef1f98f470b84f6b0..1bcb86cf47dc1a84891a4e6cea33eba5968ee402 100644 (file)
@@ -195,6 +195,7 @@ otx2_npa_lf_fini(void)
                return -ENOMEM;
 
        if (rte_atomic16_add_return(&idev->npa_refcnt, -1) == 0) {
+               otx2_npa_unregister_irqs(idev->npa_lf);
                rc |= npa_lf_fini(idev->npa_lf);
                rc |= npa_lf_detach(idev->npa_lf->mbox);
                otx2_npa_set_defaults(idev);
@@ -251,6 +252,9 @@ otx2_npa_lf_init(struct rte_pci_device *pci_dev, void *otx2_dev)
                idev->npa_pf_func = dev->pf_func;
                idev->npa_lf = lf;
                rte_smp_wmb();
+               rc = otx2_npa_register_irqs(lf);
+               if (rc)
+                       goto npa_fini;
 
                rte_mbuf_set_platform_mempool_ops("octeontx2_npa");
                otx2_npa_dbg("npa_lf=%p pools=%d sz=%d pf_func=0x%x msix=0x%x",
@@ -259,6 +263,8 @@ otx2_npa_lf_init(struct rte_pci_device *pci_dev, void *otx2_dev)
 
        return 0;
 
+npa_fini:
+       npa_lf_fini(idev->npa_lf);
 npa_detach:
        npa_lf_detach(dev->mbox);
 fail: