return ndlp->nlp_state;
 }
 
+static uint32_t
+lpfc_device_rm_unmap_node(struct lpfc_vport *vport,
+                         struct lpfc_nodelist *ndlp,
+                         void *arg,
+                         uint32_t evt)
+{
+       lpfc_drop_node(vport, ndlp);
+       return NLP_STE_FREED_NODE;
+}
+
 static uint32_t
 lpfc_device_recov_unmap_node(struct lpfc_vport *vport,
                             struct lpfc_nodelist *ndlp,
        lpfc_disc_illegal,              /* CMPL_LOGO       */
        lpfc_disc_illegal,              /* CMPL_ADISC      */
        lpfc_disc_illegal,              /* CMPL_REG_LOGIN  */
-       lpfc_disc_illegal,              /* DEVICE_RM       */
+       lpfc_device_rm_unmap_node,      /* DEVICE_RM       */
        lpfc_device_recov_unmap_node,   /* DEVICE_RECOVERY */
 
        lpfc_rcv_plogi_mapped_node,     /* RCV_PLOGI   MAPPED_NODE    */