eSE removal observed during NFC ON and fix for delay in NFC off
diff --git a/src/nfa/ee/nfa_ee_act.c b/src/nfa/ee/nfa_ee_act.c
index c926286..8caae7a 100644
--- a/src/nfa/ee/nfa_ee_act.c
+++ b/src/nfa/ee/nfa_ee_act.c
@@ -1590,6 +1590,10 @@
   tNFA_EE_ECB* p_cb = p_data->disconnect.p_cb;
   tNFA_EE_CBACK_DATA evt_data = {0};
 
+#if(NXP_EXTNS == TRUE)
+  nfa_ee_cb.ee_flags |= NFA_EE_HCI_CONN_CLOSE;
+#endif
+
   if (p_cb->conn_st == NFA_EE_CONN_ST_CONN) {
     p_cb->conn_st = NFA_EE_CONN_ST_DISC;
     NFC_ConnClose(p_cb->conn_id);
@@ -2340,6 +2344,10 @@
         p_cb->conn_st = NFA_EE_CONN_ST_NONE;
         p_cb->p_ee_cback = NULL;
         p_cb->conn_id = 0;
+
+#if(NXP_EXTNS == TRUE)
+        nfa_ee_cb.ee_flags &= ~NFA_EE_HCI_CONN_CLOSE;
+#endif
         if (nfa_ee_cb.em_state == NFA_EE_EM_STATE_DISABLING) {
           if (nfa_ee_cb.ee_flags & NFA_EE_FLAG_WAIT_DISCONN) {
             if (nfa_ee_cb.num_ee_expecting) {
diff --git a/src/nfa/ee/nfa_ee_main.c b/src/nfa/ee/nfa_ee_main.c
index 21eefef..719c3a5 100644
--- a/src/nfa/ee/nfa_ee_main.c
+++ b/src/nfa/ee/nfa_ee_main.c
@@ -490,8 +490,20 @@
       if (nfa_sys_is_graceful_disable()) {
         /* Disconnect NCI connection on graceful shutdown */
         msg.disconnect.p_cb = p_cb;
+#if(NXP_EXTNS == TRUE)
+        if(p_cb->conn_id == 0x03){
+            msg.conn.conn_id = p_cb->conn_id;
+            msg.conn.event = NFC_CONN_CLOSE_CEVT;
+            nfa_ee_nci_conn(&msg);
+        }
+        else{
+            nfa_ee_api_disconnect (&msg);
+            nfa_ee_cb.num_ee_expecting++;
+        }
+#else
         nfa_ee_api_disconnect(&msg);
         nfa_ee_cb.num_ee_expecting++;
+#endif
       } else {
         /* fake NFA_EE_DISCONNECT_EVT on ungraceful shutdown */
         msg.conn.conn_id = p_cb->conn_id;
@@ -516,6 +528,22 @@
   if (nfa_ee_cb.em_state == NFA_EE_EM_STATE_DISABLED)
     nfa_sys_deregister(NFA_ID_EE);
 }
+#if(NXP_EXTNS == TRUE)
+/*******************************************************************************
+**
+** Function         nfa_ee_connectionClosed
+**
+** Description      Check if EE's HCI connection is closed or not
+**
+** Returns          EE connection closed status
+**
+*******************************************************************************/
+uint8_t nfa_ee_connectionClosed(void)
+{
+
+  return (!(nfa_ee_cb.ee_flags & NFA_EE_HCI_CONN_CLOSE));
+}
+#endif
 
 /*******************************************************************************
 **
diff --git a/src/nfa/hci/nfa_hci_main.c b/src/nfa/hci/nfa_hci_main.c
index 45d219b..11925fd 100644
--- a/src/nfa/hci/nfa_hci_main.c
+++ b/src/nfa/hci/nfa_hci_main.c
@@ -946,6 +946,13 @@
   }
 #endif
   if (event == NFC_CONN_CREATE_CEVT) {
+#if(NXP_EXTNS == TRUE)
+    tNFA_EE_MSG p_msgdata;
+    p_msgdata.conn.conn_id = conn_id;
+    p_msgdata.conn.event = event;
+    p_msgdata.conn.p_data = p_data;
+    nfa_ee_nci_conn(&p_msgdata);
+#endif
     nfa_hci_cb.conn_id = conn_id;
     nfa_hci_cb.buff_size = p_data->conn_create.buff_size;
 
@@ -953,6 +960,12 @@
       nfa_hci_cb.w4_hci_netwk_init = true;
       nfa_hciu_alloc_gate(NFA_HCI_CONNECTIVITY_GATE, 0);
     }
+#if(NXP_EXTNS == TRUE)
+    if (nfa_hci_cb.hci_state == NFA_HCI_STATE_DISABLED){
+      nfa_hci_cb.hci_state = NFA_HCI_STATE_IDLE;
+      return;
+    }
+#endif
 
     if (nfa_hci_cb.cfg.admin_gate.pipe01_state == NFA_HCI_PIPE_CLOSED) {
       /* First step in initialization/restore is to open the admin pipe */
@@ -969,13 +982,21 @@
 #endif
     }
   } else if (event == NFC_CONN_CLOSE_CEVT) {
-    nfa_hci_cb.conn_id = 0;
-    nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
-    /* deregister message handler on NFA SYS */
-    nfa_sys_deregister(NFA_ID_HCI);
-#if ((NXP_EXTNS == TRUE) && (NFC_NXP_STAT_DUAL_UICC_EXT_SWITCH == true))
-    if (nfa_dm_cb.p_dm_cback)
-      (*nfa_dm_cb.p_dm_cback)(NFA_DM_EE_HCI_DISABLE, NULL);
+      nfa_hci_cb.conn_id = 0;
+      nfa_hci_cb.hci_state = NFA_HCI_STATE_DISABLED;
+#if(NXP_EXTNS == TRUE)
+      if(nfa_ee_connectionClosed())
+#endif
+      /* deregister message handler on NFA SYS */
+        nfa_sys_deregister (NFA_ID_HCI);
+      NFA_TRACE_DEBUG0("NFC_CONN_CLOSE_CEVT handled");
+
+#if(NXP_EXTNS == TRUE)
+      tNFA_EE_MSG p_msgdata;
+      p_msgdata.conn.conn_id = conn_id;
+      p_msgdata.conn.event = event;
+      p_msgdata.conn.p_data = p_data;
+      nfa_ee_nci_conn(&p_msgdata);
 #endif
   }
 
diff --git a/src/nfa/int/nfa_ee_int.h b/src/nfa/int/nfa_ee_int.h
index 48f6523..5479faa 100644
--- a/src/nfa/int/nfa_ee_int.h
+++ b/src/nfa/int/nfa_ee_int.h
@@ -596,6 +596,9 @@
 /* set this bit when NFC-DEP is configured in the routing table */
 #define NFA_EE_FLAG_CFG_NFC_DEP 0x05
 #endif
+#if(NXP_EXTNS == TRUE)
+#define NFA_EE_HCI_CONN_CLOSE  0x8
+#endif
 typedef uint8_t tNFA_EE_FLAGS;
 
 /* NFCEE DISCOVER in progress       */
@@ -686,6 +689,7 @@
 uint8_t NFA_check_p61_CL_Activated();
 uint16_t nfa_ee_find_max_aid_config_length();
 uint16_t nfa_ee_api_get_max_aid_config_length();
+extern uint8_t nfa_ee_connectionClosed();
 #endif
 uint8_t nfa_ee_ecb_to_mask(tNFA_EE_ECB* p_cb);
 void nfa_ee_restore_one_ecb(tNFA_EE_ECB* p_cb);