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 ---