diff options
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_mbox.c')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_mbox.c | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/drivers/scsi/lpfc/lpfc_mbox.c b/drivers/scsi/lpfc/lpfc_mbox.c index 20336f09fb3..efc9cd9def8 100644 --- a/drivers/scsi/lpfc/lpfc_mbox.c +++ b/drivers/scsi/lpfc/lpfc_mbox.c | |||
@@ -92,7 +92,7 @@ lpfc_dump_static_vport(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb, | |||
92 | memset(mp->virt, 0, LPFC_BPL_SIZE); | 92 | memset(mp->virt, 0, LPFC_BPL_SIZE); |
93 | INIT_LIST_HEAD(&mp->list); | 93 | INIT_LIST_HEAD(&mp->list); |
94 | /* save address for completion */ | 94 | /* save address for completion */ |
95 | pmb->context2 = (uint8_t *) mp; | 95 | pmb->context1 = (uint8_t *)mp; |
96 | mb->un.varWords[3] = putPaddrLow(mp->phys); | 96 | mb->un.varWords[3] = putPaddrLow(mp->phys); |
97 | mb->un.varWords[4] = putPaddrHigh(mp->phys); | 97 | mb->un.varWords[4] = putPaddrHigh(mp->phys); |
98 | mb->un.varDmp.sli4_length = sizeof(struct static_vport_info); | 98 | mb->un.varDmp.sli4_length = sizeof(struct static_vport_info); |
@@ -950,44 +950,47 @@ lpfc_config_pcb_setup(struct lpfc_hba * phba) | |||
950 | for (i = 0; i < psli->num_rings; i++) { | 950 | for (i = 0; i < psli->num_rings; i++) { |
951 | pring = &psli->ring[i]; | 951 | pring = &psli->ring[i]; |
952 | 952 | ||
953 | pring->sizeCiocb = phba->sli_rev == 3 ? SLI3_IOCB_CMD_SIZE: | 953 | pring->sli.sli3.sizeCiocb = |
954 | phba->sli_rev == 3 ? SLI3_IOCB_CMD_SIZE : | ||
954 | SLI2_IOCB_CMD_SIZE; | 955 | SLI2_IOCB_CMD_SIZE; |
955 | pring->sizeRiocb = phba->sli_rev == 3 ? SLI3_IOCB_RSP_SIZE: | 956 | pring->sli.sli3.sizeRiocb = |
957 | phba->sli_rev == 3 ? SLI3_IOCB_RSP_SIZE : | ||
956 | SLI2_IOCB_RSP_SIZE; | 958 | SLI2_IOCB_RSP_SIZE; |
957 | /* A ring MUST have both cmd and rsp entries defined to be | 959 | /* A ring MUST have both cmd and rsp entries defined to be |
958 | valid */ | 960 | valid */ |
959 | if ((pring->numCiocb == 0) || (pring->numRiocb == 0)) { | 961 | if ((pring->sli.sli3.numCiocb == 0) || |
962 | (pring->sli.sli3.numRiocb == 0)) { | ||
960 | pcbp->rdsc[i].cmdEntries = 0; | 963 | pcbp->rdsc[i].cmdEntries = 0; |
961 | pcbp->rdsc[i].rspEntries = 0; | 964 | pcbp->rdsc[i].rspEntries = 0; |
962 | pcbp->rdsc[i].cmdAddrHigh = 0; | 965 | pcbp->rdsc[i].cmdAddrHigh = 0; |
963 | pcbp->rdsc[i].rspAddrHigh = 0; | 966 | pcbp->rdsc[i].rspAddrHigh = 0; |
964 | pcbp->rdsc[i].cmdAddrLow = 0; | 967 | pcbp->rdsc[i].cmdAddrLow = 0; |
965 | pcbp->rdsc[i].rspAddrLow = 0; | 968 | pcbp->rdsc[i].rspAddrLow = 0; |
966 | pring->cmdringaddr = NULL; | 969 | pring->sli.sli3.cmdringaddr = NULL; |
967 | pring->rspringaddr = NULL; | 970 | pring->sli.sli3.rspringaddr = NULL; |
968 | continue; | 971 | continue; |
969 | } | 972 | } |
970 | /* Command ring setup for ring */ | 973 | /* Command ring setup for ring */ |
971 | pring->cmdringaddr = (void *)&phba->IOCBs[iocbCnt]; | 974 | pring->sli.sli3.cmdringaddr = (void *)&phba->IOCBs[iocbCnt]; |
972 | pcbp->rdsc[i].cmdEntries = pring->numCiocb; | 975 | pcbp->rdsc[i].cmdEntries = pring->sli.sli3.numCiocb; |
973 | 976 | ||
974 | offset = (uint8_t *) &phba->IOCBs[iocbCnt] - | 977 | offset = (uint8_t *) &phba->IOCBs[iocbCnt] - |
975 | (uint8_t *) phba->slim2p.virt; | 978 | (uint8_t *) phba->slim2p.virt; |
976 | pdma_addr = phba->slim2p.phys + offset; | 979 | pdma_addr = phba->slim2p.phys + offset; |
977 | pcbp->rdsc[i].cmdAddrHigh = putPaddrHigh(pdma_addr); | 980 | pcbp->rdsc[i].cmdAddrHigh = putPaddrHigh(pdma_addr); |
978 | pcbp->rdsc[i].cmdAddrLow = putPaddrLow(pdma_addr); | 981 | pcbp->rdsc[i].cmdAddrLow = putPaddrLow(pdma_addr); |
979 | iocbCnt += pring->numCiocb; | 982 | iocbCnt += pring->sli.sli3.numCiocb; |
980 | 983 | ||
981 | /* Response ring setup for ring */ | 984 | /* Response ring setup for ring */ |
982 | pring->rspringaddr = (void *) &phba->IOCBs[iocbCnt]; | 985 | pring->sli.sli3.rspringaddr = (void *) &phba->IOCBs[iocbCnt]; |
983 | 986 | ||
984 | pcbp->rdsc[i].rspEntries = pring->numRiocb; | 987 | pcbp->rdsc[i].rspEntries = pring->sli.sli3.numRiocb; |
985 | offset = (uint8_t *)&phba->IOCBs[iocbCnt] - | 988 | offset = (uint8_t *)&phba->IOCBs[iocbCnt] - |
986 | (uint8_t *)phba->slim2p.virt; | 989 | (uint8_t *)phba->slim2p.virt; |
987 | pdma_addr = phba->slim2p.phys + offset; | 990 | pdma_addr = phba->slim2p.phys + offset; |
988 | pcbp->rdsc[i].rspAddrHigh = putPaddrHigh(pdma_addr); | 991 | pcbp->rdsc[i].rspAddrHigh = putPaddrHigh(pdma_addr); |
989 | pcbp->rdsc[i].rspAddrLow = putPaddrLow(pdma_addr); | 992 | pcbp->rdsc[i].rspAddrLow = putPaddrLow(pdma_addr); |
990 | iocbCnt += pring->numRiocb; | 993 | iocbCnt += pring->sli.sli3.numRiocb; |
991 | } | 994 | } |
992 | } | 995 | } |
993 | 996 | ||
@@ -1609,12 +1612,15 @@ lpfc_mbox_tmo_val(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq) | |||
1609 | 1612 | ||
1610 | switch (mbox->mbxCommand) { | 1613 | switch (mbox->mbxCommand) { |
1611 | case MBX_WRITE_NV: /* 0x03 */ | 1614 | case MBX_WRITE_NV: /* 0x03 */ |
1615 | case MBX_DUMP_MEMORY: /* 0x17 */ | ||
1612 | case MBX_UPDATE_CFG: /* 0x1B */ | 1616 | case MBX_UPDATE_CFG: /* 0x1B */ |
1613 | case MBX_DOWN_LOAD: /* 0x1C */ | 1617 | case MBX_DOWN_LOAD: /* 0x1C */ |
1614 | case MBX_DEL_LD_ENTRY: /* 0x1D */ | 1618 | case MBX_DEL_LD_ENTRY: /* 0x1D */ |
1619 | case MBX_WRITE_VPARMS: /* 0x32 */ | ||
1615 | case MBX_LOAD_AREA: /* 0x81 */ | 1620 | case MBX_LOAD_AREA: /* 0x81 */ |
1616 | case MBX_WRITE_WWN: /* 0x98 */ | 1621 | case MBX_WRITE_WWN: /* 0x98 */ |
1617 | case MBX_LOAD_EXP_ROM: /* 0x9C */ | 1622 | case MBX_LOAD_EXP_ROM: /* 0x9C */ |
1623 | case MBX_ACCESS_VDATA: /* 0xA5 */ | ||
1618 | return LPFC_MBOX_TMO_FLASH_CMD; | 1624 | return LPFC_MBOX_TMO_FLASH_CMD; |
1619 | case MBX_SLI4_CONFIG: /* 0x9b */ | 1625 | case MBX_SLI4_CONFIG: /* 0x9b */ |
1620 | subsys = lpfc_sli_config_mbox_subsys_get(phba, mboxq); | 1626 | subsys = lpfc_sli_config_mbox_subsys_get(phba, mboxq); |
@@ -1625,11 +1631,17 @@ lpfc_mbox_tmo_val(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq) | |||
1625 | case LPFC_MBOX_OPCODE_WRITE_OBJECT: | 1631 | case LPFC_MBOX_OPCODE_WRITE_OBJECT: |
1626 | case LPFC_MBOX_OPCODE_READ_OBJECT_LIST: | 1632 | case LPFC_MBOX_OPCODE_READ_OBJECT_LIST: |
1627 | case LPFC_MBOX_OPCODE_DELETE_OBJECT: | 1633 | case LPFC_MBOX_OPCODE_DELETE_OBJECT: |
1628 | case LPFC_MBOX_OPCODE_GET_FUNCTION_CONFIG: | ||
1629 | case LPFC_MBOX_OPCODE_GET_PROFILE_LIST: | 1634 | case LPFC_MBOX_OPCODE_GET_PROFILE_LIST: |
1630 | case LPFC_MBOX_OPCODE_SET_ACT_PROFILE: | 1635 | case LPFC_MBOX_OPCODE_SET_ACT_PROFILE: |
1636 | case LPFC_MBOX_OPCODE_GET_PROFILE_CONFIG: | ||
1631 | case LPFC_MBOX_OPCODE_SET_PROFILE_CONFIG: | 1637 | case LPFC_MBOX_OPCODE_SET_PROFILE_CONFIG: |
1632 | case LPFC_MBOX_OPCODE_GET_FACTORY_PROFILE_CONFIG: | 1638 | case LPFC_MBOX_OPCODE_GET_FACTORY_PROFILE_CONFIG: |
1639 | case LPFC_MBOX_OPCODE_GET_PROFILE_CAPACITIES: | ||
1640 | case LPFC_MBOX_OPCODE_SEND_ACTIVATION: | ||
1641 | case LPFC_MBOX_OPCODE_RESET_LICENSES: | ||
1642 | case LPFC_MBOX_OPCODE_SET_BOOT_CONFIG: | ||
1643 | case LPFC_MBOX_OPCODE_GET_VPD_DATA: | ||
1644 | case LPFC_MBOX_OPCODE_SET_PHYSICAL_LINK_CONFIG: | ||
1633 | return LPFC_MBOX_SLI4_CONFIG_EXTENDED_TMO; | 1645 | return LPFC_MBOX_SLI4_CONFIG_EXTENDED_TMO; |
1634 | } | 1646 | } |
1635 | } | 1647 | } |