CORE: HIF: enable pcie MSI feature

Add PCIe MSI interrupt support.
Currently, it only support 1 MSI interrupt.

Hangtian Zhu <hangtian@qti.qualcomm.com>
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
diff --git a/CORE/SERVICES/HIF/PCIe/cepci.h b/CORE/SERVICES/HIF/PCIe/cepci.h
index f5ba19b..95db903 100644
--- a/CORE/SERVICES/HIF/PCIe/cepci.h
+++ b/CORE/SERVICES/HIF/PCIe/cepci.h
@@ -41,7 +41,7 @@
  * so for now we abide by this limit and avoid requesting more
  * than that.
  */
-#define MSI_NUM_REQUEST_LOG2  3
+#define MSI_NUM_REQUEST_LOG2  0
 #define MSI_NUM_REQUEST       (1<<MSI_NUM_REQUEST_LOG2)
 
 /*
diff --git a/CORE/SERVICES/HIF/PCIe/if_pci.c b/CORE/SERVICES/HIF/PCIe/if_pci.c
index 374a9b0..840724d 100644
--- a/CORE/SERVICES/HIF/PCIe/if_pci.c
+++ b/CORE/SERVICES/HIF/PCIe/if_pci.c
@@ -81,7 +81,7 @@
 #define RAMDUMP_EVENT_TIMEOUT 2500
 #define MAX_REG_READ_RETRIES 10
 
-unsigned int msienable = 0;
+unsigned int msienable = 1;
 module_param(msienable, int, S_IRUSR | S_IRGRP | S_IROTH);
 
 int hif_pci_configure(struct hif_pci_softc *sc, hif_handle_t *hif_hdl);
@@ -788,6 +788,7 @@
     struct HIF_CE_state *hif_state = (struct HIF_CE_state *)sc->hif_device;
     volatile int tmp;
     bool hif_init_done = sc->hif_init_done;
+    A_target_id_t targid = hif_state->targid;
 
     if (hif_init_done == FALSE) {
          goto irq_handled;
@@ -809,7 +810,7 @@
          goto irq_handled;
 
     CE_per_engine_service_any(sc->irq_event, sc);
-    adf_os_atomic_set(&sc->tasklet_from_intr, 0);
+    adf_os_atomic_set(&sc->tasklet_from_intr, 1);
     if (CE_get_rx_pending(sc)) {
         if (vos_is_load_unload_in_progress(VOS_MODULE_ID_HIF, NULL)) {
             pr_err("%s: Load/Unload in Progress\n", __func__);
@@ -835,6 +836,20 @@
         adf_os_atomic_set(&sc->ce_suspend, 1);
         return;
     }
+
+    if(!LEGACY_INTERRUPTS(sc) && CE_INTERRUPT_SUMMARY(targid)) {
+	if (vos_is_load_unload_in_progress(VOS_MODULE_ID_HIF, NULL))
+		goto msiend;
+
+	if (vos_is_logp_in_progress(VOS_MODULE_ID_HIF, NULL))
+		goto msiend;
+
+	tasklet_schedule(&sc->intr_tq);
+msiend:
+	adf_os_atomic_set(&sc->ce_suspend, 1);
+	return;
+    }
+
 irq_handled:
     /* use cached value for hif_init_done to prevent
      * unlocking an unlocked spinlock if hif init finishes
diff --git a/Kbuild b/Kbuild
index e26a7c9..77feef4 100644
--- a/Kbuild
+++ b/Kbuild
@@ -1690,7 +1690,7 @@
 endif
 
 ifeq ($(CONFIG_HIF_PCI), 1)
-CDEFINES += -DFORCE_LEGACY_PCI_INTERRUPTS
+#CDEFINES += -DFORCE_LEGACY_PCI_INTERRUPTS
 endif
 
 ifeq ($(CONFIG_WLAN_THERMAL_SHUTDOWN), 1)