lpfc_els.c (45ed119035b27f240345b06e090d559874e3677a) | lpfc_els.c (c868595d5686e97183bc1ad85502835d81d7a457) |
---|---|
1/******************************************************************* 2 * This file is part of the Emulex Linux Device Driver for * 3 * Fibre Channel Host Bus Adapters. * 4 * Copyright (C) 2004-2009 Emulex. All rights reserved. * 5 * EMULEX and SLI are trademarks of Emulex. * 6 * www.emulex.com * 7 * Portions Copyright (C) 2004-2005 Christoph Hellwig * 8 * * --- 163 unchanged lines hidden (view full) --- 172 * If this command is for fabric controller and HBA running 173 * in FIP mode send FLOGI, FDISC and LOGO as FIP frames. 174 */ 175 if ((did == Fabric_DID) && 176 (phba->hba_flag & HBA_FIP_SUPPORT) && 177 ((elscmd == ELS_CMD_FLOGI) || 178 (elscmd == ELS_CMD_FDISC) || 179 (elscmd == ELS_CMD_LOGO))) | 1/******************************************************************* 2 * This file is part of the Emulex Linux Device Driver for * 3 * Fibre Channel Host Bus Adapters. * 4 * Copyright (C) 2004-2009 Emulex. All rights reserved. * 5 * EMULEX and SLI are trademarks of Emulex. * 6 * www.emulex.com * 7 * Portions Copyright (C) 2004-2005 Christoph Hellwig * 8 * * --- 163 unchanged lines hidden (view full) --- 172 * If this command is for fabric controller and HBA running 173 * in FIP mode send FLOGI, FDISC and LOGO as FIP frames. 174 */ 175 if ((did == Fabric_DID) && 176 (phba->hba_flag & HBA_FIP_SUPPORT) && 177 ((elscmd == ELS_CMD_FLOGI) || 178 (elscmd == ELS_CMD_FDISC) || 179 (elscmd == ELS_CMD_LOGO))) |
180 elsiocb->iocb_flag |= LPFC_FIP_ELS; | 180 switch (elscmd) { 181 case ELS_CMD_FLOGI: 182 elsiocb->iocb_flag |= ((ELS_ID_FLOGI << LPFC_FIP_ELS_ID_SHIFT) 183 & LPFC_FIP_ELS_ID_MASK); 184 break; 185 case ELS_CMD_FDISC: 186 elsiocb->iocb_flag |= ((ELS_ID_FDISC << LPFC_FIP_ELS_ID_SHIFT) 187 & LPFC_FIP_ELS_ID_MASK); 188 break; 189 case ELS_CMD_LOGO: 190 elsiocb->iocb_flag |= ((ELS_ID_LOGO << LPFC_FIP_ELS_ID_SHIFT) 191 & LPFC_FIP_ELS_ID_MASK); 192 break; 193 } |
181 else | 194 else |
182 elsiocb->iocb_flag &= ~LPFC_FIP_ELS; | 195 elsiocb->iocb_flag &= ~LPFC_FIP_ELS_ID_MASK; |
183 184 icmd = &elsiocb->iocb; 185 186 /* fill in BDEs for command */ 187 /* Allocate buffer for command payload */ 188 pcmd = kmalloc(sizeof(struct lpfc_dmabuf), GFP_KERNEL); 189 if (pcmd) 190 pcmd->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &pcmd->phys); --- 395 unchanged lines hidden (view full) --- 586 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED && 587 vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) 588 lpfc_register_new_vport(phba, vport, ndlp); 589 else 590 lpfc_issue_fabric_reglogin(vport); 591 } else { 592 ndlp->nlp_type |= NLP_FABRIC; 593 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); | 196 197 icmd = &elsiocb->iocb; 198 199 /* fill in BDEs for command */ 200 /* Allocate buffer for command payload */ 201 pcmd = kmalloc(sizeof(struct lpfc_dmabuf), GFP_KERNEL); 202 if (pcmd) 203 pcmd->virt = lpfc_mbuf_alloc(phba, MEM_PRI, &pcmd->phys); --- 395 unchanged lines hidden (view full) --- 599 if (phba->sli3_options & LPFC_SLI3_NPIV_ENABLED && 600 vport->fc_flag & FC_VPORT_NEEDS_REG_VPI) 601 lpfc_register_new_vport(phba, vport, ndlp); 602 else 603 lpfc_issue_fabric_reglogin(vport); 604 } else { 605 ndlp->nlp_type |= NLP_FABRIC; 606 lpfc_nlp_set_state(vport, ndlp, NLP_STE_UNMAPPED_NODE); |
594 if (vport->vfi_state & LPFC_VFI_REGISTERED) { | 607 if (vport->vpi_state & LPFC_VPI_REGISTERED) { |
595 lpfc_start_fdiscs(phba); 596 lpfc_do_scr_ns_plogi(phba, vport); 597 } else 598 lpfc_issue_reg_vfi(vport); 599 } 600 return 0; 601} 602/** --- 4793 unchanged lines hidden (view full) --- 5396 icmd->ulpStatus, icmd->un.ulpWord[4], did); 5397 goto dropit; 5398 } 5399 5400 /* Check to see if link went down during discovery */ 5401 if (lpfc_els_chk_latt(vport)) 5402 goto dropit; 5403 | 608 lpfc_start_fdiscs(phba); 609 lpfc_do_scr_ns_plogi(phba, vport); 610 } else 611 lpfc_issue_reg_vfi(vport); 612 } 613 return 0; 614} 615/** --- 4793 unchanged lines hidden (view full) --- 5409 icmd->ulpStatus, icmd->un.ulpWord[4], did); 5410 goto dropit; 5411 } 5412 5413 /* Check to see if link went down during discovery */ 5414 if (lpfc_els_chk_latt(vport)) 5415 goto dropit; 5416 |
5404 /* Ignore traffic recevied during vport shutdown. */ | 5417 /* Ignore traffic received during vport shutdown. */ |
5405 if (vport->load_flag & FC_UNLOADING) 5406 goto dropit; 5407 5408 ndlp = lpfc_findnode_did(vport, did); 5409 if (!ndlp) { 5410 /* Cannot find existing Fabric ndlp, so allocate a new one */ 5411 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); 5412 if (!ndlp) --- 1245 unchanged lines hidden --- | 5418 if (vport->load_flag & FC_UNLOADING) 5419 goto dropit; 5420 5421 ndlp = lpfc_findnode_did(vport, did); 5422 if (!ndlp) { 5423 /* Cannot find existing Fabric ndlp, so allocate a new one */ 5424 ndlp = mempool_alloc(phba->nlp_mem_pool, GFP_KERNEL); 5425 if (!ndlp) --- 1245 unchanged lines hidden --- |