#define wqe_cmd_type_MASK     0x0000000f
 #define wqe_cmd_type_WORD     word11
 #define wqe_els_id_SHIFT      4
-#define wqe_els_id_MASK       0x00000003
+#define wqe_els_id_MASK       0x00000007
 #define wqe_els_id_WORD       word11
-#define LPFC_ELS_ID_FLOGI      3
-#define LPFC_ELS_ID_FDISC      2
-#define LPFC_ELS_ID_LOGO       1
-#define LPFC_ELS_ID_DEFAULT    0
 #define wqe_irsp_SHIFT        4
 #define wqe_irsp_MASK         0x00000001
 #define wqe_irsp_WORD         word11
        uint32_t payload[4];
 };
 
+enum els_request64_wqe_word11 {
+       LPFC_ELS_ID_DEFAULT,
+       LPFC_ELS_ID_LOGO,
+       LPFC_ELS_ID_FDISC,
+       LPFC_ELS_ID_FLOGI,
+       LPFC_ELS_ID_PLOGI,
+};
+
 struct els_request64_wqe {
        struct ulp_bde64 bde;
        uint32_t payload_len;
 
        struct lpfc_hba  *phba = vport->phba;
        union lpfc_wqe128 *wqe;
        struct ulp_bde64_le *bde;
+       u8 els_id;
 
        wqe = &cmdiocbq->wqe;
        memset(wqe, 0, sizeof(*wqe));
        bde->type_size |= cpu_to_le32(ULP_BDE64_TYPE_BDE_64);
 
        if (expect_rsp) {
-               bf_set(wqe_cmnd, &wqe->els_req.wqe_com, CMD_ELS_REQUEST64_CR);
+               bf_set(wqe_cmnd, &wqe->els_req.wqe_com, CMD_ELS_REQUEST64_WQE);
 
                /* Transfer length */
                wqe->els_req.payload_len = cmd_size;
 
                /* DID */
                bf_set(wqe_els_did, &wqe->els_req.wqe_dest, did);
+
+               /* Word 11 - ELS_ID */
+               switch (elscmd) {
+               case ELS_CMD_PLOGI:
+                       els_id = LPFC_ELS_ID_PLOGI;
+                       break;
+               case ELS_CMD_FLOGI:
+                       els_id = LPFC_ELS_ID_FLOGI;
+                       break;
+               case ELS_CMD_LOGO:
+                       els_id = LPFC_ELS_ID_LOGO;
+                       break;
+               case ELS_CMD_FDISC:
+                       if (!vport->fc_myDID) {
+                               els_id = LPFC_ELS_ID_FDISC;
+                               break;
+                       }
+                       fallthrough;
+               default:
+                       els_id = LPFC_ELS_ID_DEFAULT;
+                       break;
+               }
+
+               bf_set(wqe_els_id, &wqe->els_req.wqe_com, els_id);
        } else {
                /* DID */
                bf_set(wqe_els_did, &wqe->xmit_els_rsp.wqe_dest, did);
                wqe->xmit_els_rsp.response_payload_len = cmd_size;
 
                bf_set(wqe_cmnd, &wqe->xmit_els_rsp.wqe_com,
-                      CMD_XMIT_ELS_RSP64_CX);
+                      CMD_XMIT_ELS_RSP64_WQE);
        }
 
        bf_set(wqe_tmo, &wqe->generic.wqe_com, tmo);
                if (expect_rsp) {
                        bf_set(els_req64_sid, &wqe->els_req, vport->fc_myDID);
 
-                       /* For ELS_REQUEST64_CR, use the VPI by default */
+                       /* For ELS_REQUEST64_WQE, use the VPI by default */
                        bf_set(wqe_ctxt_tag, &wqe->els_req.wqe_com,
                               phba->vpi_ids[vport->vpi]);
                }
        u32 fip, abort_tag;
        struct lpfc_nodelist *ndlp = NULL;
        union lpfc_wqe128 *wqe = &job->wqe;
-       u32 els_id = LPFC_ELS_ID_DEFAULT;
        u8 command_type = ELS_COMMAND_NON_FIP;
 
        fip = phba->hba_flag & HBA_FIP_SUPPORT;
        case CMD_ELS_REQUEST64_WQE:
                ndlp = job->ndlp;
 
-               /* CCP CCPE PV PRI in word10 were set in the memcpy */
-               if (command_type == ELS_COMMAND_FIP)
-                       els_id = ((job->cmd_flag & LPFC_FIP_ELS_ID_MASK)
-                                 >> LPFC_FIP_ELS_ID_SHIFT);
-
                if_type = bf_get(lpfc_sli_intf_if_type,
                                 &phba->sli4_hba.sli_intf);
                if (if_type >= LPFC_SLI_INTF_IF_TYPE_2) {
                bf_set(wqe_temp_rpi, &wqe->els_req.wqe_com,
                       phba->sli4_hba.rpi_ids[ndlp->nlp_rpi]);
 
-               bf_set(wqe_els_id, &wqe->els_req.wqe_com, els_id);
                bf_set(wqe_dbde, &wqe->els_req.wqe_com, 1);
                bf_set(wqe_iod, &wqe->els_req.wqe_com, LPFC_WQE_IOD_READ);
                bf_set(wqe_qosd, &wqe->els_req.wqe_com, 1);