Lines Matching defs:phba

48  * @phba: pointer to lpfc hba data structure.
63 lpfc_mbox_rsrc_prep(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbox)
71 mp->virt = lpfc_mbuf_alloc(phba, 0, &mp->phys);
87 * @phba: pointer to lpfc hba data structure.
94 * memory resources in it as well as releasing the @mbox back to the @phba pool.
100 lpfc_mbox_rsrc_cleanup(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbox,
111 __lpfc_mbuf_free(phba, mp->virt, mp->phys);
113 lpfc_mbuf_free(phba, mp->virt, mp->phys);
117 mempool_free(mbox, phba->mbox_mem_pool);
122 * @phba: pointer to lpfc hba data structure.
133 lpfc_dump_static_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb,
151 if (phba->sli_rev != LPFC_SLI_REV4) {
157 rc = lpfc_mbox_rsrc_prep(phba, pmb);
159 lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
175 * @phba: pointer to lpfc hba data structure.
181 lpfc_down_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
192 * @phba: pointer to lpfc hba data structure.
203 lpfc_dump_mem(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb, uint16_t offset,
226 * @phba: pointer to lpfc hba data structure.
233 lpfc_dump_wakeup_param(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
245 if (phba->sli_rev < LPFC_SLI_REV4)
256 * @phba: pointer to lpfc hba data structure.
266 lpfc_read_nv(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
279 * @phba: pointer to lpfc hba data structure.
291 lpfc_config_async(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb,
306 * @phba: pointer to lpfc hba data structure.
318 lpfc_heart_beat(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
331 * @phba: pointer to lpfc hba data structure.
351 lpfc_read_topology(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb,
375 * @phba: pointer to lpfc hba data structure.
389 lpfc_clear_la(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
396 mb->un.varClearLA.eventTag = phba->fc_eventTag;
404 * @phba: pointer to lpfc hba data structure.
417 lpfc_config_link(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
419 struct lpfc_vport *vport = phba->pport;
426 if (phba->cfg_cr_delay && (phba->sli_rev < LPFC_SLI_REV4)) {
429 mb->un.varCfgLnk.cr_delay = phba->cfg_cr_delay;
430 mb->un.varCfgLnk.cr_count = phba->cfg_cr_count;
434 mb->un.varCfgLnk.edtov = phba->fc_edtov;
435 mb->un.varCfgLnk.arbtov = phba->fc_arbtov;
436 mb->un.varCfgLnk.ratov = phba->fc_ratov;
437 mb->un.varCfgLnk.rttov = phba->fc_rttov;
438 mb->un.varCfgLnk.altov = phba->fc_altov;
439 mb->un.varCfgLnk.crtov = phba->fc_crtov;
441 if (phba->bbcredit_support && phba->cfg_enable_bbcr) {
444 &phba->sli4_hba.bbscn_params);
447 if (phba->cfg_ack0 && (phba->sli_rev < LPFC_SLI_REV4))
457 * @phba: pointer to lpfc hba data structure.
469 lpfc_config_msi(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
475 if (phba->cfg_use_msi != 2) {
476 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
478 "cfg_use_msi: 0x%x\n", phba->cfg_use_msi);
482 if (phba->sli_rev < 3) {
483 lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
485 "SLI Revision: 0x%x\n", phba->sli_rev);
535 * @phba: pointer to lpfc hba data structure.
548 lpfc_init_link(struct lpfc_hba * phba,
578 if ((phba->sli4_hba.pc_sli4_params.sli_family == LPFC_SLI_INTF_FAMILY_G6 ||
579 phba->sli4_hba.pc_sli4_params.if_type == LPFC_SLI_INTF_IF_TYPE_6) &&
580 !(phba->sli4_hba.pc_sli4_params.pls) &&
583 phba->cfg_topology = FLAGS_TOPOLOGY_MODE_PT_PT;
587 if (phba->sli_rev == LPFC_SLI_REV3 && !phba->cfg_fcp_wait_abts_rsp)
593 vpd = &phba->vpd;
640 mb->un.varInitLnk.fabric_AL_PA = phba->fc_pref_ALPA;
646 * @phba: pointer to lpfc hba data structure.
666 lpfc_read_sparam(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb, int vpi)
675 rc = lpfc_mbox_rsrc_prep(phba, pmb);
677 lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX,
689 if (phba->sli_rev >= LPFC_SLI_REV3)
690 mb->un.varRdSparm.vpi = phba->vpi_ids[vpi];
697 * @phba: pointer to lpfc hba data structure.
711 lpfc_unreg_did(struct lpfc_hba * phba, uint16_t vpi, uint32_t did,
722 (phba->sli_rev == LPFC_SLI_REV4))
723 mb->un.varUnregDID.vpi = phba->vpi_ids[vpi];
732 * @phba: pointer to lpfc hba data structure.
744 lpfc_read_config(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
758 * @phba: pointer to lpfc hba data structure.
769 lpfc_read_lnk_stat(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
783 * @phba: pointer to lpfc hba data structure.
806 lpfc_reg_rpi(struct lpfc_hba *phba, uint16_t vpi, uint32_t did,
817 if (phba->sli_rev == LPFC_SLI_REV4)
818 mb->un.varRegLogin.rpi = phba->sli4_hba.rpi_ids[rpi];
819 if (phba->sli_rev >= LPFC_SLI_REV3)
820 mb->un.varRegLogin.vpi = phba->vpi_ids[vpi];
825 rc = lpfc_mbox_rsrc_prep(phba, pmb);
829 lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX,
851 * @phba: pointer to lpfc hba data structure.
867 lpfc_unreg_login(struct lpfc_hba *phba, uint16_t vpi, uint32_t rpi,
877 if (phba->sli_rev >= LPFC_SLI_REV3)
878 mb->un.varUnregLogin.vpi = phba->vpi_ids[vpi];
896 struct lpfc_hba *phba = vport->phba;
900 mbox = mempool_alloc(phba->mbox_mem_pool, GFP_KERNEL);
909 lpfc_unreg_login(phba, vport->vpi, phba->vpi_ids[vport->vpi],
915 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT);
917 mempool_free(mbox, phba->mbox_mem_pool);
938 struct lpfc_hba *phba = vport->phba;
944 if ((phba->sli_rev == LPFC_SLI_REV4) &&
948 mb->un.varRegVpi.vpi = phba->vpi_ids[vport->vpi];
950 if (phba->sli_rev == LPFC_SLI_REV4)
951 mb->un.varRegVpi.vfi = phba->sli4_hba.vfi_ids[vport->vfi];
953 mb->un.varRegVpi.vfi = vport->vfi + vport->phba->vfi_base;
967 * @phba: pointer to lpfc hba data structure.
982 lpfc_unreg_vpi(struct lpfc_hba *phba, uint16_t vpi, LPFC_MBOXQ_t *pmb)
987 if (phba->sli_rev == LPFC_SLI_REV3)
988 mb->un.varUnregVpi.vpi = phba->vpi_ids[vpi];
989 else if (phba->sli_rev >= LPFC_SLI_REV4)
990 mb->un.varUnregVpi.sli4_vpi = phba->vpi_ids[vpi];
1000 * @phba: pointer to lpfc hba data structure.
1006 lpfc_config_pcb_setup(struct lpfc_hba * phba)
1008 struct lpfc_sli *psli = &phba->sli;
1010 PCB_t *pcbp = phba->pcb;
1022 phba->sli_rev == 3 ? SLI3_IOCB_CMD_SIZE :
1025 phba->sli_rev == 3 ? SLI3_IOCB_RSP_SIZE :
1042 pring->sli.sli3.cmdringaddr = (void *)&phba->IOCBs[iocbCnt];
1045 offset = (uint8_t *) &phba->IOCBs[iocbCnt] -
1046 (uint8_t *) phba->slim2p.virt;
1047 pdma_addr = phba->slim2p.phys + offset;
1053 pring->sli.sli3.rspringaddr = (void *) &phba->IOCBs[iocbCnt];
1056 offset = (uint8_t *)&phba->IOCBs[iocbCnt] -
1057 (uint8_t *)phba->slim2p.virt;
1058 pdma_addr = phba->slim2p.phys + offset;
1067 * @phba: pointer to lpfc hba data structure.
1080 lpfc_read_rev(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
1092 lpfc_sli4_swap_str(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
1177 * @phba: pointer to lpfc hba data structure.
1190 lpfc_config_hbq(struct lpfc_hba *phba, uint32_t id,
1217 hbqmb->hbqaddrLow = putPaddrLow(phba->hbqslimp.phys) +
1219 hbqmb->hbqaddrHigh = putPaddrHigh(phba->hbqslimp.phys);
1251 * @phba: pointer to lpfc hba data structure.
1267 lpfc_config_ring(struct lpfc_hba * phba, int ring, LPFC_MBOXQ_t * pmb)
1281 psli = &phba->sli;
1309 * @phba: pointer to lpfc hba data structure.
1322 lpfc_config_port(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
1324 MAILBOX_t __iomem *mb_slim = (MAILBOX_t __iomem *) phba->MBslimaddr;
1339 offset = (uint8_t *)phba->pcb - (uint8_t *)phba->slim2p.virt;
1340 pdma_addr = phba->slim2p.phys + offset;
1349 if (phba->sli_rev == LPFC_SLI_REV3 && phba->vpd.sli3Feat.cerbm) {
1350 if (phba->cfg_enable_bg)
1355 if (phba->max_vpi && phba->cfg_enable_npiv &&
1356 phba->vpd.sli3Feat.cmv) {
1360 mb->un.varCfgPort.max_vpi = phba->max_vpi = 0;
1362 phba->sli_rev = LPFC_SLI_REV2;
1363 mb->un.varCfgPort.sli_mode = phba->sli_rev;
1366 if (phba->sli_rev == LPFC_SLI_REV3)
1370 phba->pcb->type = TYPE_NATIVE_SLI2;
1371 phba->pcb->feature = FEATURE_INITIAL_SLI2;
1374 phba->pcb->mailBoxSize = sizeof(MAILBOX_t) + MAILBOX_EXT_SIZE;
1375 offset = (uint8_t *)phba->mbox - (uint8_t *)phba->slim2p.virt;
1376 pdma_addr = phba->slim2p.phys + offset;
1377 phba->pcb->mbAddrHigh = putPaddrHigh(pdma_addr);
1378 phba->pcb->mbAddrLow = putPaddrLow(pdma_addr);
1399 pci_read_config_dword(phba->pcidev, PCI_BASE_ADDRESS_0, &bar_low);
1400 pci_read_config_dword(phba->pcidev, PCI_BASE_ADDRESS_1, &bar_high);
1430 if (phba->cfg_hostmem_hgp && phba->sli_rev != 3) {
1431 phba->host_gp = (struct lpfc_hgp __iomem *)
1432 &phba->mbox->us.s2.host[0];
1433 phba->hbq_put = NULL;
1434 offset = (uint8_t *)&phba->mbox->us.s2.host -
1435 (uint8_t *)phba->slim2p.virt;
1436 pdma_addr = phba->slim2p.phys + offset;
1437 phba->pcb->hgpAddrHigh = putPaddrHigh(pdma_addr);
1438 phba->pcb->hgpAddrLow = putPaddrLow(pdma_addr);
1443 if (phba->sli_rev == 3) {
1444 phba->host_gp = &mb_slim->us.s3.host[0];
1445 phba->hbq_put = &mb_slim->us.s3.hbq_put[0];
1447 phba->host_gp = &mb_slim->us.s2.host[0];
1448 phba->hbq_put = NULL;
1452 phba->pcb->hgpAddrLow = (bar_low & PCI_BASE_ADDRESS_MEM_MASK) +
1453 (void __iomem *)phba->host_gp -
1454 (void __iomem *)phba->MBslimaddr;
1456 phba->pcb->hgpAddrHigh = bar_high;
1458 phba->pcb->hgpAddrHigh = 0;
1462 for (i = 0; i < phba->sli.num_rings; i++) {
1463 lpfc_memcpy_to_slim(phba->host_gp + i, &hgp,
1464 sizeof(*phba->host_gp));
1469 if (phba->sli_rev == 3)
1474 pdma_addr = phba->slim2p.phys + pgp_offset;
1475 phba->pcb->pgpAddrHigh = putPaddrHigh(pdma_addr);
1476 phba->pcb->pgpAddrLow = putPaddrLow(pdma_addr);
1479 lpfc_config_pcb_setup(phba);
1482 if (lpfc_is_LC_HBA(phba->pcidev->device)) {
1485 lpfc_hba_init(phba, hbainit);
1491 lpfc_sli_pcimem_bcopy(phba->pcb, phba->pcb, sizeof(PCB_t));
1496 * @phba: pointer to lpfc hba data structure.
1510 lpfc_kill_board(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
1522 * @phba: pointer to lpfc hba data structure.
1531 lpfc_mbox_put(struct lpfc_hba * phba, LPFC_MBOXQ_t * mbq)
1535 psli = &phba->sli;
1546 * @phba: pointer to lpfc hba data structure.
1559 lpfc_mbox_get(struct lpfc_hba * phba)
1562 struct lpfc_sli *psli = &phba->sli;
1573 * @phba: pointer to lpfc hba data structure.
1582 __lpfc_mbox_cmpl_put(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbq)
1584 list_add_tail(&mbq->list, &phba->sli.mboxq_cmpl);
1589 * @phba: pointer to lpfc hba data structure.
1598 lpfc_mbox_cmpl_put(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbq)
1603 spin_lock_irqsave(&phba->hbalock, iflag);
1604 __lpfc_mbox_cmpl_put(phba, mbq);
1605 spin_unlock_irqrestore(&phba->hbalock, iflag);
1611 * @phba: pointer to lpfc hba data structure.
1621 lpfc_mbox_cmd_check(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
1629 lpfc_printf_log(phba, KERN_ERR, LOG_MBOX | LOG_VPORT,
1641 * @phba: pointer to lpfc hba data structure.
1650 lpfc_mbox_dev_check(struct lpfc_hba *phba)
1653 if (unlikely(pci_channel_offline(phba->pcidev)))
1657 if (phba->link_state == LPFC_HBA_ERROR)
1665 * @phba: pointer to lpfc hba data structure.
1675 lpfc_mbox_tmo_val(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
1693 subsys = lpfc_sli_config_mbox_subsys_get(phba, mboxq);
1694 opcode = lpfc_sli_config_mbox_opcode_get(phba, mboxq);
1773 * @phba: pointer to lpfc hba data structure.
1781 lpfc_sli4_mbox_cmd_free(struct lpfc_hba *phba, struct lpfcMboxq *mbox)
1792 mempool_free(mbox, phba->mbox_mem_pool);
1800 mempool_free(mbox, phba->mbox_mem_pool);
1807 dma_free_coherent(&phba->pcidev->dev, SLI4_PAGE_SIZE,
1815 mempool_free(mbox, phba->mbox_mem_pool);
1820 * @phba: pointer to lpfc hba data structure.
1834 lpfc_sli4_config(struct lpfc_hba *phba, struct lpfcMboxq *mbox,
1875 lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
1886 viraddr = dma_alloc_coherent(&phba->pcidev->dev,
1928 * @phba: pointer to lpfc hba data structure.
1942 lpfc_sli4_mbox_rsrc_extent(struct lpfc_hba *phba, struct lpfcMboxq *mbox,
1976 opcode = lpfc_sli_config_mbox_opcode_get(phba, mbox);
1993 lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
2004 * @phba: pointer to lpfc hba data structure.
2013 lpfc_sli_config_mbox_subsys_get(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbox)
2037 * @phba: pointer to lpfc hba data structure.
2046 lpfc_sli_config_mbox_opcode_get(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbox)
2070 * @phba: pointer to lpfc hba data structure.
2081 lpfc_sli4_mbx_read_fcf_rec(struct lpfc_hba *phba,
2098 alloc_len = lpfc_sli4_config(phba, mboxq, LPFC_MBOX_SUBSYSTEM_FCOE,
2103 lpfc_printf_log(phba, KERN_ERR, LOG_MBOX,
2128 * @phba: pointer to lpfc hba data structure.
2135 lpfc_request_features(struct lpfc_hba *phba, struct lpfcMboxq *mboxq)
2146 if (phba->cfg_enable_bg)
2150 if (phba->max_vpi && phba->cfg_enable_npiv)
2153 if (phba->nvmet_support) {
2161 if (phba->cfg_vmid_app_header) {
2163 bf_set(lpfc_ftr_ashdr, &phba->sli4_hba.sli4_flags, 1);
2192 vport->phba->sli4_hba.vfi_ids[vport->vfi]);
2194 vport->phba->vpi_ids[vport->vpi]);
2196 vport->phba->fcf.fcfi);
2214 struct lpfc_hba *phba = vport->phba;
2222 phba->sli4_hba.vfi_ids[vport->vfi]);
2223 bf_set(lpfc_reg_vfi_fcfi, reg_vfi, phba->fcf.fcfi);
2224 bf_set(lpfc_reg_vfi_vpi, reg_vfi, phba->vpi_ids[vport->vpi]);
2228 reg_vfi->e_d_tov = phba->fc_edtov;
2229 reg_vfi->r_a_tov = phba->fc_ratov;
2239 if ((phba->sli4_hba.lnk_info.lnk_tp == LPFC_LNK_TYPE_FC) &&
2241 (!phba->fc_topology_changed))
2246 bbscn_fabric = (phba->fc_fabparam.cmn.bbRcvSizeMsb >> 4) & 0xF;
2248 if (phba->bbcredit_support && phba->cfg_enable_bbcr &&
2251 &phba->sli4_hba.bbscn_params);
2254 &phba->sli4_hba.bbscn_params);
2270 phba->fcf.fcfi,
2271 phba->sli4_hba.vfi_ids[vport->vfi],
2272 phba->vpi_ids[vport->vpi],
2274 vport->port_state, phba->fc_topology_changed,
2280 * @phba: pointer to the hba structure to init the VPI for.
2291 lpfc_init_vpi(struct lpfc_hba *phba, struct lpfcMboxq *mbox, uint16_t vpi)
2296 phba->vpi_ids[vpi]);
2298 phba->sli4_hba.vfi_ids[phba->pport->vfi]);
2318 vport->phba->sli4_hba.vfi_ids[vport->vfi]);
2323 * @phba: pointer to the hba structure containing.
2330 lpfc_sli4_dump_cfg_rg23(struct lpfc_hba *phba, struct lpfcMboxq *mbox)
2339 rc = lpfc_mbox_rsrc_prep(phba, mbox);
2341 lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX,
2358 lpfc_mbx_cmpl_rdp_link_stat(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
2373 lpfc_mbox_rsrc_cleanup(phba, mboxq, MBOX_THD_UNLOCKED);
2374 rdp_context->cmpl(phba, rdp_context, rc);
2378 lpfc_mbx_cmpl_rdp_page_a2(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbox)
2389 lpfc_read_lnk_stat(phba, mbox);
2396 if (lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT) == MBX_NOT_FINISHED)
2402 lpfc_mbox_rsrc_cleanup(phba, mbox, MBOX_THD_UNLOCKED);
2403 rdp_context->cmpl(phba, rdp_context, FAILURE);
2407 lpfc_mbx_cmpl_rdp_page_a0(struct lpfc_hba *phba, LPFC_MBOXQ_t *mbox)
2432 &mbox->u.mqe.un.mem_dump_type3, phba->sli4_hba.physical_port);
2442 rc = lpfc_sli_issue_mbox(phba, mbox, MBX_NOWAIT);
2449 lpfc_mbox_rsrc_cleanup(phba, mbox, MBOX_THD_UNLOCKED);
2450 rdp_context->cmpl(phba, rdp_context, FAILURE);
2456 * @phba: pointer to the hba structure containing.
2463 lpfc_sli4_dump_page_a0(struct lpfc_hba *phba, struct lpfcMboxq *mbox)
2470 rc = lpfc_mbox_rsrc_prep(phba, mbox);
2472 lpfc_printf_log(phba, KERN_WARNING, LOG_MBOX,
2481 &mbox->u.mqe.un.mem_dump_type3, phba->sli4_hba.physical_port);
2496 * @phba: pointer to the hba structure containing the FCF index and RQ ID.
2504 * to the RQ ID passed in the @phba. This can be overridden by the caller for
2508 lpfc_reg_fcfi(struct lpfc_hba *phba, struct lpfcMboxq *mbox)
2515 if (phba->nvmet_support == 0) {
2517 phba->sli4_hba.hdr_rq->queue_id);
2528 (~phba->fcf.addr_mode) & 0x3);
2531 if (phba->cfg_nvmet_mrq != 1)
2535 phba->sli4_hba.nvmet_mrq_hdr[0]->queue_id);
2543 phba->sli4_hba.hdr_rq->queue_id);
2553 phba->fcf.current_rec.fcf_indx);
2554 if (phba->fcf.current_rec.vlan_id != LPFC_FCOE_NULL_VID) {
2557 phba->fcf.current_rec.vlan_id);
2563 * @phba: pointer to the hba structure containing the FCF index and RQ ID.
2572 * to the RQ ID passed in the @phba. This can be overridden by the caller for
2576 lpfc_reg_fcfi_mrq(struct lpfc_hba *phba, struct lpfcMboxq *mbox, int mode)
2581 if (phba->cfg_nvmet_mrq <= 1)
2589 phba->fcf.current_rec.fcf_indx);
2590 if (phba->fcf.current_rec.vlan_id != LPFC_FCOE_NULL_VID) {
2593 phba->fcf.current_rec.vlan_id);
2599 phba->sli4_hba.nvmet_mrq_hdr[0]->queue_id);
2611 bf_set(lpfc_reg_fcfi_mrq_npairs, reg_fcfi, phba->cfg_nvmet_mrq);
2614 phba->sli4_hba.hdr_rq->queue_id);
2652 struct lpfc_hba *phba = ndlp->phba;
2659 phba->sli4_hba.rpi_ids[ndlp->nlp_rpi]);
2661 resume_rpi->event_tag = ndlp->phba->fc_eventTag;