Lines Matching refs:mcp

92  *	mcp = driver internal mbx struct pointer.
106 qla2x00_mailbox_command(scsi_qla_host_t *vha, mbx_cmd_t *mcp)
161 mcp->mb[0] = MBS_LINK_DOWN_ERROR;
171 !is_rom_cmd(mcp->mb[0])) || ha->flags.eeh_busy) {
174 mcp->mb[0]);
184 if (!wait_for_completion_timeout(&ha->mbx_cmd_comp, mcp->tov * HZ)) {
188 mcp->mb[0]);
198 ha->flags.purge_mbox, ha->flags.eeh_busy, mcp->mb[0]);
205 ha->mcp = mcp;
208 "Prepare to issue mbox cmd=0x%x.\n", mcp->mb[0]);
228 iptr = mcp->mb;
229 command = mcp->mb[0];
230 mboxes = mcp->out_mb;
277 mcp->tov * HZ)) {
334 wait_time = jiffies + mcp->tov * HZ; /* wait at most tov secs */
362 (uint)((jiffies - (wait_time - (mcp->tov * HZ)))/HZ));
383 mcp->mb[0] = MBS_LINK_DOWN_ERROR;
384 ha->mcp = NULL;
399 iptr2 = mcp->mb;
401 mboxes = mcp->in_mb;
473 if (mcp->mb[0] != MBC_GEN_SYSTEM_ERROR)
483 ha->mcp = NULL;
494 mcp->mb[0] != MBC_GEN_SYSTEM_ERROR) {
495 if (!io_lock_on || (mcp->flags & IOCTL_CMD) ||
516 "abort.\n", command, mcp->mb[0],
542 command, mcp->mb[0]);
570 mcp->mb[0]);
576 mboxes = mcp->in_mb;
580 printk(" mb[%u]=%x", i, mcp->mb[i]);
623 mbx_cmd_t *mcp = &mc;
629 mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED;
630 mcp->mb[8] = MSW(risc_addr);
631 mcp->out_mb = MBX_8|MBX_0;
633 mcp->mb[0] = MBC_LOAD_RISC_RAM;
634 mcp->out_mb = MBX_0;
636 mcp->mb[1] = LSW(risc_addr);
637 mcp->mb[2] = MSW(req_dma);
638 mcp->mb[3] = LSW(req_dma);
639 mcp->mb[6] = MSW(MSD(req_dma));
640 mcp->mb[7] = LSW(MSD(req_dma));
641 mcp->out_mb |= MBX_7|MBX_6|MBX_3|MBX_2|MBX_1;
643 mcp->mb[4] = MSW(risc_code_size);
644 mcp->mb[5] = LSW(risc_code_size);
645 mcp->out_mb |= MBX_5|MBX_4;
647 mcp->mb[4] = LSW(risc_code_size);
648 mcp->out_mb |= MBX_4;
651 mcp->in_mb = MBX_1|MBX_0;
652 mcp->tov = MBX_TOV_SECONDS;
653 mcp->flags = 0;
654 rval = qla2x00_mailbox_command(vha, mcp);
659 rval, mcp->mb[0], mcp->mb[1]);
693 mbx_cmd_t *mcp = &mc;
702 mcp->mb[0] = MBC_EXECUTE_FIRMWARE;
703 mcp->out_mb = MBX_0;
704 mcp->in_mb = MBX_0;
706 mcp->mb[1] = MSW(risc_addr);
707 mcp->mb[2] = LSW(risc_addr);
708 mcp->mb[3] = 0;
709 mcp->mb[4] = 0;
710 mcp->mb[11] = 0;
714 mcp->mb[4] = BIT_0;
716 mcp->mb[4] |=
721 mcp->mb[4] |= NVME_ENABLE_FLAG;
728 mcp->mb[4] |= BIT_4;
729 mcp->mb[11] |= nv->min_supported_speed & 0xF;
730 mcp->out_mb |= MBX_11;
731 mcp->in_mb |= BIT_5;
737 mcp->mb[11] |= BIT_4;
741 mcp->mb[4] |= ENABLE_EXTENDED_LOGIN;
744 mcp->mb[4] |= ENABLE_EXCHANGE_OFFLD;
747 mcp->mb[11] |= EXE_FW_FORCE_SEMAPHORE;
749 mcp->out_mb |= MBX_4 | MBX_3 | MBX_2 | MBX_1 | MBX_11;
750 mcp->in_mb |= MBX_5 | MBX_3 | MBX_2 | MBX_1;
752 mcp->mb[1] = LSW(risc_addr);
753 mcp->out_mb |= MBX_1;
755 mcp->mb[2] = 0;
756 mcp->out_mb |= MBX_2;
760 mcp->tov = MBX_TOV_SECONDS;
761 mcp->flags = 0;
762 rval = qla2x00_mailbox_command(vha, mcp);
766 mcp->mb[1] == 0x27 && retry) {
777 "Exe FW retry: mb[0]=%x retry[%d]\n", mcp->mb[0], retry);
781 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
789 ha->fw_ability_mask = mcp->mb[3] << 16 | mcp->mb[2];
792 ql_dbg(ql_dbg_mbx, vha, 0x1027, "exchanges=%x.\n", mcp->mb[1]);
794 ha->max_supported_speed = mcp->mb[2] & (BIT_0|BIT_1);
800 ha->min_supported_speed = mcp->mb[5] &
812 if (IS_QLA28XX(ha) && (mcp->mb[5] & EDIF_HW_SUPPORT)) {
847 mbx_cmd_t *mcp = &mc;
852 memset(mcp->mb, 0 , sizeof(mcp->mb));
853 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
854 mcp->mb[1] = FETCH_XLOGINS_STAT;
855 mcp->out_mb = MBX_1|MBX_0;
856 mcp->in_mb = MBX_10|MBX_4|MBX_0;
857 mcp->tov = MBX_TOV_SECONDS;
858 mcp->flags = 0;
860 rval = qla2x00_mailbox_command(vha, mcp);
864 *buf_sz = mcp->mb[4];
865 *ex_logins_cnt = mcp->mb[10];
869 mcp->mb[4], mcp->mb[10]);
903 mbx_cmd_t *mcp = &mc;
909 memset(mcp->mb, 0 , sizeof(mcp->mb));
910 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
911 mcp->mb[1] = CONFIG_XLOGINS_MEM;
912 mcp->mb[2] = MSW(phys_addr);
913 mcp->mb[3] = LSW(phys_addr);
914 mcp->mb[6] = MSW(MSD(phys_addr));
915 mcp->mb[7] = LSW(MSD(phys_addr));
916 mcp->mb[8] = MSW(ha->exlogin_size);
917 mcp->mb[9] = LSW(ha->exlogin_size);
918 mcp->out_mb = MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
919 mcp->in_mb = MBX_11|MBX_0;
920 mcp->tov = MBX_TOV_SECONDS;
921 mcp->flags = 0;
922 rval = qla2x00_mailbox_command(vha, mcp);
926 rval, mcp->mb[0], mcp->mb[11]);
957 mbx_cmd_t *mcp = &mc;
962 memset(mcp->mb, 0 , sizeof(mcp->mb));
963 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
964 mcp->mb[1] = FETCH_XCHOFFLD_STAT;
965 mcp->out_mb = MBX_1|MBX_0;
966 mcp->in_mb = MBX_10|MBX_4|MBX_0;
967 mcp->tov = MBX_TOV_SECONDS;
968 mcp->flags = 0;
970 rval = qla2x00_mailbox_command(vha, mcp);
974 *buf_sz = mcp->mb[4];
975 *ex_logins_cnt = mcp->mb[10];
979 mcp->mb[4], mcp->mb[10]);
1013 mbx_cmd_t *mcp = &mc;
1019 memset(mcp->mb, 0 , sizeof(mcp->mb));
1020 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
1021 mcp->mb[1] = CONFIG_XCHOFFLD_MEM;
1022 mcp->mb[2] = MSW(ha->exchoffld_buf_dma);
1023 mcp->mb[3] = LSW(ha->exchoffld_buf_dma);
1024 mcp->mb[6] = MSW(MSD(ha->exchoffld_buf_dma));
1025 mcp->mb[7] = LSW(MSD(ha->exchoffld_buf_dma));
1026 mcp->mb[8] = MSW(ha->exchoffld_size);
1027 mcp->mb[9] = LSW(ha->exchoffld_size);
1028 mcp->out_mb = MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1029 mcp->in_mb = MBX_11|MBX_0;
1030 mcp->tov = MBX_TOV_SECONDS;
1031 mcp->flags = 0;
1032 rval = qla2x00_mailbox_command(vha, mcp);
1065 mbx_cmd_t *mcp = &mc;
1071 mcp->mb[0] = MBC_GET_FIRMWARE_VERSION;
1072 mcp->out_mb = MBX_0;
1073 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
1075 mcp->in_mb |= MBX_13|MBX_12|MBX_11|MBX_10|MBX_9|MBX_8;
1077 mcp->in_mb |= MBX_17|MBX_16|MBX_15;
1079 mcp->in_mb |=
1083 mcp->flags = 0;
1084 mcp->tov = MBX_TOV_SECONDS;
1085 rval = qla2x00_mailbox_command(vha, mcp);
1090 ha->fw_major_version = mcp->mb[1];
1091 ha->fw_minor_version = mcp->mb[2];
1092 ha->fw_subminor_version = mcp->mb[3];
1093 ha->fw_attributes = mcp->mb[6];
1097 ha->fw_memory_size = (mcp->mb[5] << 16) | mcp->mb[4];
1100 ha->mpi_version[0] = mcp->mb[10] & 0xff;
1101 ha->mpi_version[1] = mcp->mb[11] >> 8;
1102 ha->mpi_version[2] = mcp->mb[11] & 0xff;
1103 ha->mpi_capabilities = (mcp->mb[12] << 16) | mcp->mb[13];
1104 ha->phy_version[0] = mcp->mb[8] & 0xff;
1105 ha->phy_version[1] = mcp->mb[9] >> 8;
1106 ha->phy_version[2] = mcp->mb[9] & 0xff;
1110 ha->fw_attributes_h = mcp->mb[15];
1111 ha->fw_attributes_ext[0] = mcp->mb[16];
1112 ha->fw_attributes_ext[1] = mcp->mb[17];
1115 __func__, mcp->mb[15], mcp->mb[6]);
1118 __func__, mcp->mb[17], mcp->mb[16]);
1163 ha->serdes_version[0] = mcp->mb[7] & 0xff;
1164 ha->serdes_version[1] = mcp->mb[8] >> 8;
1165 ha->serdes_version[2] = mcp->mb[8] & 0xff;
1166 ha->mpi_version[0] = mcp->mb[10] & 0xff;
1167 ha->mpi_version[1] = mcp->mb[11] >> 8;
1168 ha->mpi_version[2] = mcp->mb[11] & 0xff;
1169 ha->pep_version[0] = mcp->mb[13] & 0xff;
1170 ha->pep_version[1] = mcp->mb[14] >> 8;
1171 ha->pep_version[2] = mcp->mb[14] & 0xff;
1172 ha->fw_shared_ram_start = (mcp->mb[19] << 16) | mcp->mb[18];
1173 ha->fw_shared_ram_end = (mcp->mb[21] << 16) | mcp->mb[20];
1174 ha->fw_ddr_ram_start = (mcp->mb[23] << 16) | mcp->mb[22];
1175 ha->fw_ddr_ram_end = (mcp->mb[25] << 16) | mcp->mb[24];
1177 if (mcp->mb[16] & BIT_10)
1234 mbx_cmd_t *mcp = &mc;
1239 mcp->mb[0] = MBC_GET_FIRMWARE_OPTION;
1240 mcp->out_mb = MBX_0;
1241 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1242 mcp->tov = MBX_TOV_SECONDS;
1243 mcp->flags = 0;
1244 rval = qla2x00_mailbox_command(vha, mcp);
1250 fwopts[0] = mcp->mb[0];
1251 fwopts[1] = mcp->mb[1];
1252 fwopts[2] = mcp->mb[2];
1253 fwopts[3] = mcp->mb[3];
1282 mbx_cmd_t *mcp = &mc;
1287 mcp->mb[0] = MBC_SET_FIRMWARE_OPTION;
1288 mcp->mb[1] = fwopts[1];
1289 mcp->mb[2] = fwopts[2];
1290 mcp->mb[3] = fwopts[3];
1291 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1292 mcp->in_mb = MBX_0;
1294 mcp->in_mb |= MBX_1;
1295 mcp->mb[10] = fwopts[10];
1296 mcp->out_mb |= MBX_10;
1298 mcp->mb[10] = fwopts[10];
1299 mcp->mb[11] = fwopts[11];
1300 mcp->mb[12] = 0; /* Undocumented, but used */
1301 mcp->out_mb |= MBX_12|MBX_11|MBX_10;
1303 mcp->tov = MBX_TOV_SECONDS;
1304 mcp->flags = 0;
1305 rval = qla2x00_mailbox_command(vha, mcp);
1307 fwopts[0] = mcp->mb[0];
1312 "Failed=%x (%x/%x).\n", rval, mcp->mb[0], mcp->mb[1]);
1342 mbx_cmd_t *mcp = &mc;
1347 mcp->mb[0] = MBC_MAILBOX_REGISTER_TEST;
1348 mcp->mb[1] = 0xAAAA;
1349 mcp->mb[2] = 0x5555;
1350 mcp->mb[3] = 0xAA55;
1351 mcp->mb[4] = 0x55AA;
1352 mcp->mb[5] = 0xA5A5;
1353 mcp->mb[6] = 0x5A5A;
1354 mcp->mb[7] = 0x2525;
1355 mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
1356 mcp->in_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
1357 mcp->tov = MBX_TOV_SECONDS;
1358 mcp->flags = 0;
1359 rval = qla2x00_mailbox_command(vha, mcp);
1362 if (mcp->mb[1] != 0xAAAA || mcp->mb[2] != 0x5555 ||
1363 mcp->mb[3] != 0xAA55 || mcp->mb[4] != 0x55AA)
1365 if (mcp->mb[5] != 0xA5A5 || mcp->mb[6] != 0x5A5A ||
1366 mcp->mb[7] != 0x2525)
1403 mbx_cmd_t *mcp = &mc;
1408 mcp->mb[0] = MBC_VERIFY_CHECKSUM;
1409 mcp->out_mb = MBX_0;
1410 mcp->in_mb = MBX_0;
1412 mcp->mb[1] = MSW(risc_addr);
1413 mcp->mb[2] = LSW(risc_addr);
1414 mcp->out_mb |= MBX_2|MBX_1;
1415 mcp->in_mb |= MBX_2|MBX_1;
1417 mcp->mb[1] = LSW(risc_addr);
1418 mcp->out_mb |= MBX_1;
1419 mcp->in_mb |= MBX_1;
1422 mcp->tov = MBX_TOV_SECONDS;
1423 mcp->flags = 0;
1424 rval = qla2x00_mailbox_command(vha, mcp);
1429 (mcp->mb[2] << 16) | mcp->mb[1] : mcp->mb[1]);
1462 mbx_cmd_t *mcp = &mc;
1470 mcp->mb[0] = MBC_IOCB_COMMAND_A64;
1471 mcp->mb[1] = 0;
1472 mcp->mb[2] = MSW(LSD(phys_addr));
1473 mcp->mb[3] = LSW(LSD(phys_addr));
1474 mcp->mb[6] = MSW(MSD(phys_addr));
1475 mcp->mb[7] = LSW(MSD(phys_addr));
1476 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1477 mcp->in_mb = MBX_1|MBX_0;
1478 mcp->tov = tov;
1479 mcp->flags = 0;
1480 rval = qla2x00_mailbox_command(vha, mcp);
1528 mbx_cmd_t *mcp = &mc;
1555 mcp->mb[0] = MBC_ABORT_COMMAND;
1557 mcp->mb[1] = fcport->loop_id;
1559 mcp->mb[1] = fcport->loop_id << 8;
1560 mcp->mb[2] = (uint16_t)handle;
1561 mcp->mb[3] = (uint16_t)(handle >> 16);
1562 mcp->mb[6] = (uint16_t)cmd->device->lun;
1563 mcp->out_mb = MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1564 mcp->in_mb = MBX_0;
1565 mcp->tov = MBX_TOV_SECONDS;
1566 mcp->flags = 0;
1567 rval = qla2x00_mailbox_command(vha, mcp);
1584 mbx_cmd_t *mcp = &mc;
1592 mcp->mb[0] = MBC_ABORT_TARGET;
1593 mcp->out_mb = MBX_9|MBX_2|MBX_1|MBX_0;
1595 mcp->mb[1] = fcport->loop_id;
1596 mcp->mb[10] = 0;
1597 mcp->out_mb |= MBX_10;
1599 mcp->mb[1] = fcport->loop_id << 8;
1601 mcp->mb[2] = vha->hw->loop_reset_delay;
1602 mcp->mb[9] = vha->vp_idx;
1604 mcp->in_mb = MBX_0;
1605 mcp->tov = MBX_TOV_SECONDS;
1606 mcp->flags = 0;
1607 rval = qla2x00_mailbox_command(vha, mcp);
1632 mbx_cmd_t *mcp = &mc;
1640 mcp->mb[0] = MBC_LUN_RESET;
1641 mcp->out_mb = MBX_9|MBX_3|MBX_2|MBX_1|MBX_0;
1643 mcp->mb[1] = fcport->loop_id;
1645 mcp->mb[1] = fcport->loop_id << 8;
1646 mcp->mb[2] = (u32)l;
1647 mcp->mb[3] = 0;
1648 mcp->mb[9] = vha->vp_idx;
1650 mcp->in_mb = MBX_0;
1651 mcp->tov = MBX_TOV_SECONDS;
1652 mcp->flags = 0;
1653 rval = qla2x00_mailbox_command(vha, mcp);
1698 mbx_cmd_t *mcp = &mc;
1703 mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID;
1704 mcp->mb[9] = vha->vp_idx;
1705 mcp->out_mb = MBX_9|MBX_0;
1706 mcp->in_mb = MBX_9|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1708 mcp->in_mb |= MBX_13|MBX_12|MBX_11|MBX_10;
1710 mcp->in_mb |= MBX_19|MBX_18|MBX_17|MBX_16;
1712 mcp->in_mb |= MBX_15|MBX_21|MBX_22|MBX_23;
1714 mcp->tov = MBX_TOV_SECONDS;
1715 mcp->flags = 0;
1716 rval = qla2x00_mailbox_command(vha, mcp);
1717 if (mcp->mb[0] == MBS_COMMAND_ERROR)
1719 else if (mcp->mb[0] == MBS_INVALID_COMMAND)
1723 *id = mcp->mb[1];
1724 *al_pa = LSB(mcp->mb[2]);
1725 *area = MSB(mcp->mb[2]);
1726 *domain = LSB(mcp->mb[3]);
1727 *top = mcp->mb[6];
1728 *sw_cap = mcp->mb[7];
1738 vha->fcoe_vlan_id = mcp->mb[9] & 0xfff;
1739 vha->fcoe_fcf_idx = mcp->mb[10];
1740 vha->fcoe_vn_port_mac[5] = mcp->mb[11] >> 8;
1741 vha->fcoe_vn_port_mac[4] = mcp->mb[11] & 0xff;
1742 vha->fcoe_vn_port_mac[3] = mcp->mb[12] >> 8;
1743 vha->fcoe_vn_port_mac[2] = mcp->mb[12] & 0xff;
1744 vha->fcoe_vn_port_mac[1] = mcp->mb[13] >> 8;
1745 vha->fcoe_vn_port_mac[0] = mcp->mb[13] & 0xff;
1749 if (mcp->mb[7] & BIT_14) {
1750 vha->port_name[0] = MSB(mcp->mb[16]);
1751 vha->port_name[1] = LSB(mcp->mb[16]);
1752 vha->port_name[2] = MSB(mcp->mb[17]);
1753 vha->port_name[3] = LSB(mcp->mb[17]);
1754 vha->port_name[4] = MSB(mcp->mb[18]);
1755 vha->port_name[5] = LSB(mcp->mb[18]);
1756 vha->port_name[6] = MSB(mcp->mb[19]);
1757 vha->port_name[7] = LSB(mcp->mb[19]);
1767 vha->bbcr = mcp->mb[15];
1768 if (mcp->mb[7] & SCM_EDC_ACC_RECEIVED) {
1771 mcp->mb[21]);
1773 if (mcp->mb[7] & SCM_RDF_ACC_RECEIVED) {
1779 mcp->mb[23]);
1809 mbx_cmd_t *mcp = &mc;
1814 mcp->mb[0] = MBC_GET_RETRY_COUNT;
1815 mcp->out_mb = MBX_0;
1816 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
1817 mcp->tov = MBX_TOV_SECONDS;
1818 mcp->flags = 0;
1819 rval = qla2x00_mailbox_command(vha, mcp);
1824 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
1827 *r_a_tov = mcp->mb[3] / 2;
1828 ratov = (mcp->mb[3]/2) / 10; /* mb[3] value is in 100ms */
1829 if (mcp->mb[1] * ratov > (*retry_cnt) * (*tov)) {
1831 *retry_cnt = (uint8_t)mcp->mb[1];
1836 "Done %s mb3=%d ratov=%d.\n", __func__, mcp->mb[3], ratov);
1864 mbx_cmd_t *mcp = &mc;
1875 mcp->mb[0] = MBC_MID_INITIALIZE_FIRMWARE;
1877 mcp->mb[0] = MBC_INITIALIZE_FIRMWARE;
1879 mcp->mb[1] = 0;
1880 mcp->mb[2] = MSW(ha->init_cb_dma);
1881 mcp->mb[3] = LSW(ha->init_cb_dma);
1882 mcp->mb[6] = MSW(MSD(ha->init_cb_dma));
1883 mcp->mb[7] = LSW(MSD(ha->init_cb_dma));
1884 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
1886 mcp->mb[1] = BIT_0;
1887 mcp->mb[10] = MSW(ha->ex_init_cb_dma);
1888 mcp->mb[11] = LSW(ha->ex_init_cb_dma);
1889 mcp->mb[12] = MSW(MSD(ha->ex_init_cb_dma));
1890 mcp->mb[13] = LSW(MSD(ha->ex_init_cb_dma));
1891 mcp->mb[14] = sizeof(*ha->ex_init_cb);
1892 mcp->out_mb |= MBX_14|MBX_13|MBX_12|MBX_11|MBX_10;
1896 mcp->mb[1] |= BIT_1;
1897 mcp->mb[16] = MSW(ha->sf_init_cb_dma);
1898 mcp->mb[17] = LSW(ha->sf_init_cb_dma);
1899 mcp->mb[18] = MSW(MSD(ha->sf_init_cb_dma));
1900 mcp->mb[19] = LSW(MSD(ha->sf_init_cb_dma));
1901 mcp->mb[15] = sizeof(*ha->sf_init_cb);
1902 mcp->out_mb |= MBX_19|MBX_18|MBX_17|MBX_16|MBX_15;
1906 mcp->in_mb = MBX_2|MBX_1|MBX_0;
1909 mcp->in_mb |= MBX_3;
1910 mcp->buf_size = size;
1911 mcp->flags = MBX_DMA_OUT;
1912 mcp->tov = MBX_TOV_SECONDS;
1913 rval = qla2x00_mailbox_command(vha, mcp);
1919 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2], mcp->mb[3]);
1932 if (mcp->mb[2] == 6 || mcp->mb[3] == 2)
1965 mbx_cmd_t *mcp = &mc;
1983 mcp->mb[0] = MBC_GET_PORT_DATABASE;
1985 mcp->mb[0] = MBC_ENHANCED_GET_PORT_DATABASE;
1986 mcp->mb[2] = MSW(pd_dma);
1987 mcp->mb[3] = LSW(pd_dma);
1988 mcp->mb[6] = MSW(MSD(pd_dma));
1989 mcp->mb[7] = LSW(MSD(pd_dma));
1990 mcp->mb[9] = vha->vp_idx;
1991 mcp->out_mb = MBX_9|MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
1992 mcp->in_mb = MBX_0;
1994 mcp->mb[1] = fcport->loop_id;
1995 mcp->mb[10] = opt;
1996 mcp->out_mb |= MBX_10|MBX_1;
1997 mcp->in_mb |= MBX_1;
1999 mcp->mb[1] = fcport->loop_id;
2000 mcp->mb[10] = opt;
2001 mcp->out_mb |= MBX_10|MBX_1;
2003 mcp->mb[1] = fcport->loop_id << 8 | opt;
2004 mcp->out_mb |= MBX_1;
2006 mcp->buf_size = IS_FWI2_CAPABLE(ha) ?
2008 mcp->flags = MBX_DMA_IN;
2009 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
2010 rval = qla2x00_mailbox_command(vha, mcp);
2125 mcp->mb[0], mcp->mb[1]);
2139 mbx_cmd_t *mcp = &mc;
2155 mcp->mb[0] = MBC_GET_PORT_DATABASE;
2156 mcp->mb[1] = nport_handle;
2157 mcp->mb[2] = MSW(LSD(pdb_dma));
2158 mcp->mb[3] = LSW(LSD(pdb_dma));
2159 mcp->mb[6] = MSW(MSD(pdb_dma));
2160 mcp->mb[7] = LSW(MSD(pdb_dma));
2161 mcp->mb[9] = 0;
2162 mcp->mb[10] = 0;
2163 mcp->out_mb = MBX_10|MBX_9|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
2164 mcp->in_mb = MBX_1|MBX_0;
2165 mcp->buf_size = sizeof(*pdb);
2166 mcp->flags = MBX_DMA_IN;
2167 mcp->tov = vha->hw->login_timeout * 2;
2168 rval = qla2x00_mailbox_command(vha, mcp);
2173 rval, mcp->mb[0], mcp->mb[1]);
2206 mbx_cmd_t *mcp = &mc;
2215 mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
2216 mcp->out_mb = MBX_0;
2218 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
2220 mcp->in_mb = MBX_1|MBX_0;
2221 mcp->tov = MBX_TOV_SECONDS;
2222 mcp->flags = 0;
2223 rval = qla2x00_mailbox_command(vha, mcp);
2226 states[0] = mcp->mb[1];
2228 states[1] = mcp->mb[2];
2229 states[2] = mcp->mb[3]; /* SFP info */
2230 states[3] = mcp->mb[4];
2231 states[4] = mcp->mb[5];
2232 states[5] = mcp->mb[6]; /* DPORT status */
2240 if (mcp->mb[2] == 6 || mcp->mb[3] == 2)
2275 mbx_cmd_t *mcp = &mc;
2280 mcp->mb[0] = MBC_GET_PORT_NAME;
2281 mcp->mb[9] = vha->vp_idx;
2282 mcp->out_mb = MBX_9|MBX_1|MBX_0;
2284 mcp->mb[1] = loop_id;
2285 mcp->mb[10] = opt;
2286 mcp->out_mb |= MBX_10;
2288 mcp->mb[1] = loop_id << 8 | opt;
2291 mcp->in_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
2292 mcp->tov = MBX_TOV_SECONDS;
2293 mcp->flags = 0;
2294 rval = qla2x00_mailbox_command(vha, mcp);
2302 name[0] = MSB(mcp->mb[2]);
2303 name[1] = LSB(mcp->mb[2]);
2304 name[2] = MSB(mcp->mb[3]);
2305 name[3] = LSB(mcp->mb[3]);
2306 name[4] = MSB(mcp->mb[6]);
2307 name[5] = LSB(mcp->mb[6]);
2308 name[6] = MSB(mcp->mb[7]);
2309 name[7] = LSB(mcp->mb[7]);
2339 mbx_cmd_t *mcp = &mc;
2347 mcp->mb[0] = MBC_LINK_INITIALIZATION;
2348 mcp->mb[1] = BIT_4;
2350 mcp->mb[1] |= BIT_6;
2352 mcp->mb[1] |= BIT_5;
2353 mcp->mb[2] = 0;
2354 mcp->mb[3] = 0;
2355 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
2356 mcp->in_mb = MBX_0;
2357 mcp->tov = MBX_TOV_SECONDS;
2358 mcp->flags = 0;
2359 rval = qla2x00_mailbox_command(vha, mcp);
2391 mbx_cmd_t *mcp = &mc;
2398 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2399 mcp->mb[1] = BIT_1;
2400 mcp->mb[2] = 0;
2401 mcp->out_mb = MBX_2|MBX_1|MBX_0;
2403 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2404 mcp->mb[1] = BIT_4;
2405 mcp->mb[2] = 0;
2406 mcp->mb[3] = vha->hw->loop_reset_delay;
2407 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
2409 mcp->mb[0] = MBC_LIP_RESET;
2410 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
2412 mcp->mb[1] = 0x00ff;
2413 mcp->mb[10] = 0;
2414 mcp->out_mb |= MBX_10;
2416 mcp->mb[1] = 0xff00;
2418 mcp->mb[2] = vha->hw->loop_reset_delay;
2419 mcp->mb[3] = 0;
2421 mcp->in_mb = MBX_0;
2422 mcp->tov = MBX_TOV_SECONDS;
2423 mcp->flags = 0;
2424 rval = qla2x00_mailbox_command(vha, mcp);
2462 mbx_cmd_t *mcp = &mc;
2469 vha->hw->retry_count, vha->hw->login_timeout, mcp->tov);
2471 mcp->mb[0] = MBC_SEND_SNS_COMMAND;
2472 mcp->mb[1] = cmd_size;
2473 mcp->mb[2] = MSW(sns_phys_address);
2474 mcp->mb[3] = LSW(sns_phys_address);
2475 mcp->mb[6] = MSW(MSD(sns_phys_address));
2476 mcp->mb[7] = LSW(MSD(sns_phys_address));
2477 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
2478 mcp->in_mb = MBX_0|MBX_1;
2479 mcp->buf_size = buf_size;
2480 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN;
2481 mcp->tov = (vha->hw->login_timeout * 2) + (vha->hw->login_timeout / 2);
2482 rval = qla2x00_mailbox_command(vha, mcp);
2488 rval, mcp->mb[0], mcp->mb[1]);
2640 mbx_cmd_t *mcp = &mc;
2646 mcp->mb[0] = MBC_LOGIN_FABRIC_PORT;
2647 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
2649 mcp->mb[1] = loop_id;
2650 mcp->mb[10] = opt;
2651 mcp->out_mb |= MBX_10;
2653 mcp->mb[1] = (loop_id << 8) | opt;
2655 mcp->mb[2] = domain;
2656 mcp->mb[3] = area << 8 | al_pa;
2658 mcp->in_mb = MBX_7|MBX_6|MBX_2|MBX_1|MBX_0;
2659 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
2660 mcp->flags = 0;
2661 rval = qla2x00_mailbox_command(vha, mcp);
2665 mb[0] = mcp->mb[0];
2666 mb[1] = mcp->mb[1];
2667 mb[2] = mcp->mb[2];
2668 mb[6] = mcp->mb[6];
2669 mb[7] = mcp->mb[7];
2681 if (mcp->mb[0] == 0x4001 || mcp->mb[0] == 0x4002 ||
2682 mcp->mb[0] == 0x4003 || mcp->mb[0] == 0x4005 ||
2683 mcp->mb[0] == 0x4006)
2689 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
2721 mbx_cmd_t *mcp = &mc;
2732 mcp->mb[0] = MBC_LOGIN_LOOP_PORT;
2734 mcp->mb[1] = fcport->loop_id;
2736 mcp->mb[1] = fcport->loop_id << 8;
2737 mcp->mb[2] = opt;
2738 mcp->out_mb = MBX_2|MBX_1|MBX_0;
2739 mcp->in_mb = MBX_7|MBX_6|MBX_1|MBX_0;
2740 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
2741 mcp->flags = 0;
2742 rval = qla2x00_mailbox_command(vha, mcp);
2746 mb_ret[0] = mcp->mb[0];
2747 mb_ret[1] = mcp->mb[1];
2748 mb_ret[6] = mcp->mb[6];
2749 mb_ret[7] = mcp->mb[7];
2759 if (mcp->mb[0] == 0x4005 || mcp->mb[0] == 0x4006)
2764 rval, mcp->mb[0], mcp->mb[1], mcp->mb[6], mcp->mb[7]);
2855 mbx_cmd_t *mcp = &mc;
2860 mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT;
2861 mcp->out_mb = MBX_1|MBX_0;
2863 mcp->mb[1] = loop_id;
2864 mcp->mb[10] = 0;
2865 mcp->out_mb |= MBX_10;
2867 mcp->mb[1] = loop_id << 8;
2870 mcp->in_mb = MBX_1|MBX_0;
2871 mcp->tov = MBX_TOV_SECONDS;
2872 mcp->flags = 0;
2873 rval = qla2x00_mailbox_command(vha, mcp);
2878 "Failed=%x mb[1]=%x.\n", rval, mcp->mb[1]);
2908 mbx_cmd_t *mcp = &mc;
2913 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2914 mcp->mb[1] = IS_FWI2_CAPABLE(vha->hw) ? BIT_4 : 0;
2915 mcp->mb[2] = 0;
2916 mcp->mb[3] = 0;
2917 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
2918 mcp->in_mb = MBX_0;
2919 mcp->tov = MBX_TOV_SECONDS;
2920 mcp->flags = 0;
2921 rval = qla2x00_mailbox_command(vha, mcp);
2953 mbx_cmd_t *mcp = &mc;
2961 mcp->mb[0] = MBC_GET_ID_LIST;
2962 mcp->out_mb = MBX_0;
2964 mcp->mb[2] = MSW(id_list_dma);
2965 mcp->mb[3] = LSW(id_list_dma);
2966 mcp->mb[6] = MSW(MSD(id_list_dma));
2967 mcp->mb[7] = LSW(MSD(id_list_dma));
2968 mcp->mb[8] = 0;
2969 mcp->mb[9] = vha->vp_idx;
2970 mcp->out_mb |= MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2;
2972 mcp->mb[1] = MSW(id_list_dma);
2973 mcp->mb[2] = LSW(id_list_dma);
2974 mcp->mb[3] = MSW(MSD(id_list_dma));
2975 mcp->mb[6] = LSW(MSD(id_list_dma));
2976 mcp->out_mb |= MBX_6|MBX_3|MBX_2|MBX_1;
2978 mcp->in_mb = MBX_1|MBX_0;
2979 mcp->tov = MBX_TOV_SECONDS;
2980 mcp->flags = 0;
2981 rval = qla2x00_mailbox_command(vha, mcp);
2987 *entries = mcp->mb[1];
3014 mbx_cmd_t *mcp = &mc;
3019 mcp->mb[0] = MBC_GET_RESOURCE_COUNTS;
3020 mcp->out_mb = MBX_0;
3021 mcp->in_mb = MBX_11|MBX_10|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
3024 mcp->in_mb |= MBX_12;
3025 mcp->tov = MBX_TOV_SECONDS;
3026 mcp->flags = 0;
3027 rval = qla2x00_mailbox_command(vha, mcp);
3032 "Failed mb[0]=%x.\n", mcp->mb[0]);
3036 "mb11=%x mb12=%x.\n", __func__, mcp->mb[1], mcp->mb[2],
3037 mcp->mb[3], mcp->mb[6], mcp->mb[7], mcp->mb[10],
3038 mcp->mb[11], mcp->mb[12]);
3040 ha->orig_fw_tgt_xcb_count = mcp->mb[1];
3041 ha->cur_fw_tgt_xcb_count = mcp->mb[2];
3042 ha->cur_fw_xcb_count = mcp->mb[3];
3043 ha->orig_fw_xcb_count = mcp->mb[6];
3044 ha->cur_fw_iocb_count = mcp->mb[7];
3045 ha->orig_fw_iocb_count = mcp->mb[10];
3047 ha->max_npiv_vports = mcp->mb[11];
3049 ha->fw_max_fcf_count = mcp->mb[12];
3075 mbx_cmd_t *mcp = &mc;
3090 mcp->mb[0] = MBC_GET_FC_AL_POSITION_MAP;
3091 mcp->mb[2] = MSW(pmap_dma);
3092 mcp->mb[3] = LSW(pmap_dma);
3093 mcp->mb[6] = MSW(MSD(pmap_dma));
3094 mcp->mb[7] = LSW(MSD(pmap_dma));
3095 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
3096 mcp->in_mb = MBX_1|MBX_0;
3097 mcp->buf_size = FCAL_MAP_SIZE;
3098 mcp->flags = MBX_DMA_IN;
3099 mcp->tov = (ha->login_timeout * 2) + (ha->login_timeout / 2);
3100 rval = qla2x00_mailbox_command(vha, mcp);
3105 mcp->mb[0], mcp->mb[1], (unsigned)pmap[0]);
3145 mbx_cmd_t *mcp = &mc;
3153 mcp->mb[0] = MBC_GET_LINK_STATUS;
3154 mcp->mb[2] = MSW(LSD(stats_dma));
3155 mcp->mb[3] = LSW(LSD(stats_dma));
3156 mcp->mb[6] = MSW(MSD(stats_dma));
3157 mcp->mb[7] = LSW(MSD(stats_dma));
3158 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
3159 mcp->in_mb = MBX_0;
3161 mcp->mb[1] = loop_id;
3162 mcp->mb[4] = 0;
3163 mcp->mb[10] = 0;
3164 mcp->out_mb |= MBX_10|MBX_4|MBX_1;
3165 mcp->in_mb |= MBX_1;
3167 mcp->mb[1] = loop_id;
3168 mcp->mb[10] = 0;
3169 mcp->out_mb |= MBX_10|MBX_1;
3171 mcp->mb[1] = loop_id << 8;
3172 mcp->out_mb |= MBX_1;
3174 mcp->tov = MBX_TOV_SECONDS;
3175 mcp->flags = IOCTL_CMD;
3176 rval = qla2x00_mailbox_command(vha, mcp);
3179 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
3181 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3204 mbx_cmd_t *mcp = &mc;
3224 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
3226 "Failed mb[0]=%x.\n", mcp->mb[0]);
3461 mbx_cmd_t *mcp = &mc;
3470 mcp->mb[0] = MBC_GEN_SYSTEM_ERROR;
3471 mcp->out_mb = MBX_0;
3472 mcp->in_mb = MBX_0;
3473 mcp->tov = 5;
3474 mcp->flags = 0;
3475 rval = qla2x00_mailbox_command(vha, mcp);
3492 mbx_cmd_t *mcp = &mc;
3501 mcp->mb[0] = MBC_WRITE_SERDES;
3502 mcp->mb[1] = addr;
3504 mcp->mb[2] = data & 0xff;
3506 mcp->mb[2] = data;
3508 mcp->mb[3] = 0;
3509 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
3510 mcp->in_mb = MBX_0;
3511 mcp->tov = MBX_TOV_SECONDS;
3512 mcp->flags = 0;
3513 rval = qla2x00_mailbox_command(vha, mcp);
3517 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3531 mbx_cmd_t *mcp = &mc;
3540 mcp->mb[0] = MBC_READ_SERDES;
3541 mcp->mb[1] = addr;
3542 mcp->mb[3] = 0;
3543 mcp->out_mb = MBX_3|MBX_1|MBX_0;
3544 mcp->in_mb = MBX_1|MBX_0;
3545 mcp->tov = MBX_TOV_SECONDS;
3546 mcp->flags = 0;
3547 rval = qla2x00_mailbox_command(vha, mcp);
3550 *data = mcp->mb[1] & 0xff;
3552 *data = mcp->mb[1];
3556 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3570 mbx_cmd_t *mcp = &mc;
3578 mcp->mb[0] = MBC_SET_GET_ETH_SERDES_REG;
3579 mcp->mb[1] = HCS_WRITE_SERDES;
3580 mcp->mb[3] = LSW(addr);
3581 mcp->mb[4] = MSW(addr);
3582 mcp->mb[5] = LSW(data);
3583 mcp->mb[6] = MSW(data);
3584 mcp->out_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_1|MBX_0;
3585 mcp->in_mb = MBX_0;
3586 mcp->tov = MBX_TOV_SECONDS;
3587 mcp->flags = 0;
3588 rval = qla2x00_mailbox_command(vha, mcp);
3592 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3606 mbx_cmd_t *mcp = &mc;
3614 mcp->mb[0] = MBC_SET_GET_ETH_SERDES_REG;
3615 mcp->mb[1] = HCS_READ_SERDES;
3616 mcp->mb[3] = LSW(addr);
3617 mcp->mb[4] = MSW(addr);
3618 mcp->out_mb = MBX_4|MBX_3|MBX_1|MBX_0;
3619 mcp->in_mb = MBX_2|MBX_1|MBX_0;
3620 mcp->tov = MBX_TOV_SECONDS;
3621 mcp->flags = 0;
3622 rval = qla2x00_mailbox_command(vha, mcp);
3624 *data = mcp->mb[2] << 16 | mcp->mb[1];
3628 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3652 mbx_cmd_t *mcp = &mc;
3657 mcp->mb[0] = MBC_SERDES_PARAMS;
3658 mcp->mb[1] = BIT_0;
3659 mcp->mb[2] = sw_em_1g | BIT_15;
3660 mcp->mb[3] = sw_em_2g | BIT_15;
3661 mcp->mb[4] = sw_em_4g | BIT_15;
3662 mcp->out_mb = MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
3663 mcp->in_mb = MBX_0;
3664 mcp->tov = MBX_TOV_SECONDS;
3665 mcp->flags = 0;
3666 rval = qla2x00_mailbox_command(vha, mcp);
3671 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3686 mbx_cmd_t *mcp = &mc;
3694 mcp->mb[0] = MBC_STOP_FIRMWARE;
3695 mcp->mb[1] = 0;
3696 mcp->out_mb = MBX_1|MBX_0;
3697 mcp->in_mb = MBX_0;
3698 mcp->tov = 5;
3699 mcp->flags = 0;
3700 rval = qla2x00_mailbox_command(vha, mcp);
3704 if (mcp->mb[0] == MBS_INVALID_COMMAND)
3720 mbx_cmd_t *mcp = &mc;
3731 mcp->mb[0] = MBC_TRACE_CONTROL;
3732 mcp->mb[1] = TC_EFT_ENABLE;
3733 mcp->mb[2] = LSW(eft_dma);
3734 mcp->mb[3] = MSW(eft_dma);
3735 mcp->mb[4] = LSW(MSD(eft_dma));
3736 mcp->mb[5] = MSW(MSD(eft_dma));
3737 mcp->mb[6] = buffers;
3738 mcp->mb[7] = TC_AEN_DISABLE;
3739 mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
3740 mcp->in_mb = MBX_1|MBX_0;
3741 mcp->tov = MBX_TOV_SECONDS;
3742 mcp->flags = 0;
3743 rval = qla2x00_mailbox_command(vha, mcp);
3747 rval, mcp->mb[0], mcp->mb[1]);
3761 mbx_cmd_t *mcp = &mc;
3772 mcp->mb[0] = MBC_TRACE_CONTROL;
3773 mcp->mb[1] = TC_EFT_DISABLE;
3774 mcp->out_mb = MBX_1|MBX_0;
3775 mcp->in_mb = MBX_1|MBX_0;
3776 mcp->tov = MBX_TOV_SECONDS;
3777 mcp->flags = 0;
3778 rval = qla2x00_mailbox_command(vha, mcp);
3782 rval, mcp->mb[0], mcp->mb[1]);
3797 mbx_cmd_t *mcp = &mc;
3810 mcp->mb[0] = MBC_TRACE_CONTROL;
3811 mcp->mb[1] = TC_FCE_ENABLE;
3812 mcp->mb[2] = LSW(fce_dma);
3813 mcp->mb[3] = MSW(fce_dma);
3814 mcp->mb[4] = LSW(MSD(fce_dma));
3815 mcp->mb[5] = MSW(MSD(fce_dma));
3816 mcp->mb[6] = buffers;
3817 mcp->mb[7] = TC_AEN_DISABLE;
3818 mcp->mb[8] = 0;
3819 mcp->mb[9] = TC_FCE_DEFAULT_RX_SIZE;
3820 mcp->mb[10] = TC_FCE_DEFAULT_TX_SIZE;
3821 mcp->out_mb = MBX_10|MBX_9|MBX_8|MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|
3823 mcp->in_mb = MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
3824 mcp->tov = MBX_TOV_SECONDS;
3825 mcp->flags = 0;
3826 rval = qla2x00_mailbox_command(vha, mcp);
3830 rval, mcp->mb[0], mcp->mb[1]);
3836 memcpy(mb, mcp->mb, 8 * sizeof(*mb));
3849 mbx_cmd_t *mcp = &mc;
3860 mcp->mb[0] = MBC_TRACE_CONTROL;
3861 mcp->mb[1] = TC_FCE_DISABLE;
3862 mcp->mb[2] = TC_FCE_DISABLE_TRACE;
3863 mcp->out_mb = MBX_2|MBX_1|MBX_0;
3864 mcp->in_mb = MBX_9|MBX_8|MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|
3866 mcp->tov = MBX_TOV_SECONDS;
3867 mcp->flags = 0;
3868 rval = qla2x00_mailbox_command(vha, mcp);
3872 rval, mcp->mb[0], mcp->mb[1]);
3878 *wr = (uint64_t) mcp->mb[5] << 48 |
3879 (uint64_t) mcp->mb[4] << 32 |
3880 (uint64_t) mcp->mb[3] << 16 |
3881 (uint64_t) mcp->mb[2];
3883 *rd = (uint64_t) mcp->mb[9] << 48 |
3884 (uint64_t) mcp->mb[8] << 32 |
3885 (uint64_t) mcp->mb[7] << 16 |
3886 (uint64_t) mcp->mb[6];
3898 mbx_cmd_t *mcp = &mc;
3906 mcp->mb[0] = MBC_PORT_PARAMS;
3907 mcp->mb[1] = loop_id;
3908 mcp->mb[2] = mcp->mb[3] = 0;
3909 mcp->mb[9] = vha->vp_idx;
3910 mcp->out_mb = MBX_9|MBX_3|MBX_2|MBX_1|MBX_0;
3911 mcp->in_mb = MBX_3|MBX_1|MBX_0;
3912 mcp->tov = MBX_TOV_SECONDS;
3913 mcp->flags = 0;
3914 rval = qla2x00_mailbox_command(vha, mcp);
3918 mb[0] = mcp->mb[0];
3919 mb[1] = mcp->mb[1];
3920 mb[3] = mcp->mb[3];
3929 *port_speed = mcp->mb[3];
3941 mbx_cmd_t *mcp = &mc;
3949 mcp->mb[0] = MBC_PORT_PARAMS;
3950 mcp->mb[1] = loop_id;
3951 mcp->mb[2] = BIT_0;
3952 mcp->mb[3] = port_speed & 0x3F;
3953 mcp->mb[9] = vha->vp_idx;
3954 mcp->out_mb = MBX_9|MBX_3|MBX_2|MBX_1|MBX_0;
3955 mcp->in_mb = MBX_3|MBX_1|MBX_0;
3956 mcp->tov = MBX_TOV_SECONDS;
3957 mcp->flags = 0;
3958 rval = qla2x00_mailbox_command(vha, mcp);
3962 mb[0] = mcp->mb[0];
3963 mb[1] = mcp->mb[1];
3964 mb[3] = mcp->mb[3];
4322 mbx_cmd_t *mcp = &mc;
4327 mcp->mb[0] = MBC_SEND_CHANGE_REQUEST;
4328 mcp->mb[1] = format;
4329 mcp->mb[9] = vp_idx;
4330 mcp->out_mb = MBX_9|MBX_1|MBX_0;
4331 mcp->in_mb = MBX_0|MBX_1;
4332 mcp->tov = MBX_TOV_SECONDS;
4333 mcp->flags = 0;
4334 rval = qla2x00_mailbox_command(vha, mcp);
4337 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
4352 mbx_cmd_t *mcp = &mc;
4358 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
4359 mcp->mb[8] = MSW(addr);
4360 mcp->mb[10] = 0;
4361 mcp->out_mb = MBX_10|MBX_8|MBX_0;
4363 mcp->mb[0] = MBC_DUMP_RISC_RAM;
4364 mcp->out_mb = MBX_0;
4366 mcp->mb[1] = LSW(addr);
4367 mcp->mb[2] = MSW(req_dma);
4368 mcp->mb[3] = LSW(req_dma);
4369 mcp->mb[6] = MSW(MSD(req_dma));
4370 mcp->mb[7] = LSW(MSD(req_dma));
4371 mcp->out_mb |= MBX_7|MBX_6|MBX_3|MBX_2|MBX_1;
4373 mcp->mb[4] = MSW(size);
4374 mcp->mb[5] = LSW(size);
4375 mcp->out_mb |= MBX_5|MBX_4;
4377 mcp->mb[4] = LSW(size);
4378 mcp->out_mb |= MBX_4;
4381 mcp->in_mb = MBX_0;
4382 mcp->tov = MBX_TOV_SECONDS;
4383 mcp->flags = 0;
4384 rval = qla2x00_mailbox_command(vha, mcp);
4388 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4504 mbx_cmd_t *mcp = &mc;
4516 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
4517 mcp->mb[1] = req->options;
4518 mcp->mb[2] = MSW(LSD(req->dma));
4519 mcp->mb[3] = LSW(LSD(req->dma));
4520 mcp->mb[6] = MSW(MSD(req->dma));
4521 mcp->mb[7] = LSW(MSD(req->dma));
4522 mcp->mb[5] = req->length;
4524 mcp->mb[10] = req->rsp->id;
4525 mcp->mb[12] = req->qos;
4526 mcp->mb[11] = req->vp_idx;
4527 mcp->mb[13] = req->rid;
4529 mcp->mb[15] = 0;
4531 mcp->mb[4] = req->id;
4533 mcp->mb[8] = 0;
4535 mcp->mb[9] = *req->out_ptr = 0;
4536 mcp->out_mb = MBX_14|MBX_13|MBX_12|MBX_11|MBX_10|MBX_9|MBX_8|MBX_7|
4538 mcp->in_mb = MBX_0;
4539 mcp->flags = MBX_DMA_OUT;
4540 mcp->tov = MBX_TOV_SECONDS * 2;
4544 mcp->in_mb |= MBX_1;
4546 mcp->out_mb |= MBX_15;
4548 mcp->in_mb |= MBX_9 | MBX_8 | MBX_7;
4559 rval = qla2x00_mailbox_command(vha, mcp);
4562 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4577 mbx_cmd_t *mcp = &mc;
4589 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
4590 mcp->mb[1] = rsp->options;
4591 mcp->mb[2] = MSW(LSD(rsp->dma));
4592 mcp->mb[3] = LSW(LSD(rsp->dma));
4593 mcp->mb[6] = MSW(MSD(rsp->dma));
4594 mcp->mb[7] = LSW(MSD(rsp->dma));
4595 mcp->mb[5] = rsp->length;
4596 mcp->mb[14] = rsp->msix->entry;
4597 mcp->mb[13] = rsp->rid;
4599 mcp->mb[15] = 0;
4601 mcp->mb[4] = rsp->id;
4603 mcp->mb[8] = *rsp->in_ptr = 0;
4605 mcp->mb[9] = 0;
4606 mcp->out_mb = MBX_14|MBX_13|MBX_9|MBX_8|MBX_7
4608 mcp->in_mb = MBX_0;
4609 mcp->flags = MBX_DMA_OUT;
4610 mcp->tov = MBX_TOV_SECONDS * 2;
4613 mcp->out_mb |= MBX_12|MBX_11|MBX_10;
4614 mcp->in_mb |= MBX_1;
4616 mcp->out_mb |= MBX_15|MBX_12|MBX_11|MBX_10;
4617 mcp->in_mb |= MBX_1;
4619 mcp->in_mb |= MBX_9 | MBX_8 | MBX_7;
4631 rval = qla2x00_mailbox_command(vha, mcp);
4634 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4648 mbx_cmd_t *mcp = &mc;
4653 mcp->mb[0] = MBC_IDC_ACK;
4654 memcpy(&mcp->mb[1], mb, QLA_IDC_ACK_REGS * sizeof(uint16_t));
4655 mcp->out_mb = MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
4656 mcp->in_mb = MBX_0;
4657 mcp->tov = MBX_TOV_SECONDS;
4658 mcp->flags = 0;
4659 rval = qla2x00_mailbox_command(vha, mcp);
4663 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4677 mbx_cmd_t *mcp = &mc;
4686 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4687 mcp->mb[1] = FAC_OPT_CMD_GET_SECTOR_SIZE;
4688 mcp->out_mb = MBX_1|MBX_0;
4689 mcp->in_mb = MBX_1|MBX_0;
4690 mcp->tov = MBX_TOV_SECONDS;
4691 mcp->flags = 0;
4692 rval = qla2x00_mailbox_command(vha, mcp);
4697 rval, mcp->mb[0], mcp->mb[1]);
4701 *sector_size = mcp->mb[1];
4712 mbx_cmd_t *mcp = &mc;
4721 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4722 mcp->mb[1] = enable ? FAC_OPT_CMD_WRITE_ENABLE :
4724 mcp->out_mb = MBX_1|MBX_0;
4725 mcp->in_mb = MBX_1|MBX_0;
4726 mcp->tov = MBX_TOV_SECONDS;
4727 mcp->flags = 0;
4728 rval = qla2x00_mailbox_command(vha, mcp);
4733 rval, mcp->mb[0], mcp->mb[1]);
4747 mbx_cmd_t *mcp = &mc;
4756 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4757 mcp->mb[1] = FAC_OPT_CMD_ERASE_SECTOR;
4758 mcp->mb[2] = LSW(start);
4759 mcp->mb[3] = MSW(start);
4760 mcp->mb[4] = LSW(finish);
4761 mcp->mb[5] = MSW(finish);
4762 mcp->out_mb = MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
4763 mcp->in_mb = MBX_2|MBX_1|MBX_0;
4764 mcp->tov = MBX_TOV_SECONDS;
4765 mcp->flags = 0;
4766 rval = qla2x00_mailbox_command(vha, mcp);
4771 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
4785 mbx_cmd_t *mcp = &mc;
4795 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4796 mcp->mb[1] = (lock ? FAC_OPT_CMD_LOCK_SEMAPHORE :
4798 mcp->out_mb = MBX_1|MBX_0;
4799 mcp->in_mb = MBX_1|MBX_0;
4800 mcp->tov = MBX_TOV_SECONDS;
4801 mcp->flags = 0;
4802 rval = qla2x00_mailbox_command(vha, mcp);
4807 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
4821 mbx_cmd_t *mcp = &mc;
4826 mcp->mb[0] = MBC_RESTART_MPI_FW;
4827 mcp->out_mb = MBX_0;
4828 mcp->in_mb = MBX_0|MBX_1;
4829 mcp->tov = MBX_TOV_SECONDS;
4830 mcp->flags = 0;
4831 rval = qla2x00_mailbox_command(vha, mcp);
4836 rval, mcp->mb[0], mcp->mb[1]);
4850 mbx_cmd_t *mcp = &mc;
4865 mcp->mb[0] = MBC_SET_RNID_PARAMS;
4866 mcp->mb[1] = RNID_TYPE_SET_VERSION << 8;
4867 mcp->out_mb = MBX_1|MBX_0;
4869 mcp->mb[i] = le16_to_cpup(str);
4870 mcp->out_mb |= 1<<i;
4873 mcp->mb[i] = 0;
4874 mcp->out_mb |= 1<<i;
4876 mcp->in_mb = MBX_1|MBX_0;
4877 mcp->tov = MBX_TOV_SECONDS;
4878 mcp->flags = 0;
4879 rval = qla2x00_mailbox_command(vha, mcp);
4883 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4897 mbx_cmd_t *mcp = &mc;
4926 mcp->mb[0] = MBC_SET_RNID_PARAMS;
4927 mcp->mb[1] = RNID_TYPE_SET_VERSION << 8 | dwlen;
4928 mcp->mb[2] = MSW(LSD(str_dma));
4929 mcp->mb[3] = LSW(LSD(str_dma));
4930 mcp->mb[6] = MSW(MSD(str_dma));
4931 mcp->mb[7] = LSW(MSD(str_dma));
4932 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
4933 mcp->in_mb = MBX_1|MBX_0;
4934 mcp->tov = MBX_TOV_SECONDS;
4935 mcp->flags = 0;
4936 rval = qla2x00_mailbox_command(vha, mcp);
4940 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4957 mbx_cmd_t *mcp = &mc;
4966 mcp->mb[0] = MBC_GET_RNID_PARAMS;
4967 mcp->mb[1] = RNID_TYPE_PORT_LOGIN << 8;
4968 mcp->mb[2] = MSW(buf_dma);
4969 mcp->mb[3] = LSW(buf_dma);
4970 mcp->mb[6] = MSW(MSD(buf_dma));
4971 mcp->mb[7] = LSW(MSD(buf_dma));
4972 mcp->mb[8] = bufsiz/4;
4973 mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
4974 mcp->in_mb = MBX_1|MBX_0;
4975 mcp->tov = MBX_TOV_SECONDS;
4976 mcp->flags = 0;
4977 rval = qla2x00_mailbox_command(vha, mcp);
4981 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4999 mbx_cmd_t *mcp = &mc;
5042 mcp->mb[0] = MBC_SET_RNID_PARAMS;
5043 mcp->mb[1] = RNID_TYPE_ELS_CMD << 8;
5044 mcp->mb[2] = MSW(LSD(els_cmd_map_dma));
5045 mcp->mb[3] = LSW(LSD(els_cmd_map_dma));
5046 mcp->mb[6] = MSW(MSD(els_cmd_map_dma));
5047 mcp->mb[7] = LSW(MSD(els_cmd_map_dma));
5048 mcp->out_mb = MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
5049 mcp->in_mb = MBX_1|MBX_0;
5050 mcp->tov = MBX_TOV_SECONDS;
5051 mcp->flags = MBX_DMA_OUT;
5052 mcp->buf_size = ELS_CMD_MAP_SIZE;
5053 rval = qla2x00_mailbox_command(vha, mcp);
5057 "Failed=%x (%x,%x).\n", rval, mcp->mb[0], mcp->mb[1]);
5074 mbx_cmd_t *mcp = &mc;
5082 mcp->mb[0] = MBC_GET_RNID_PARAMS;
5083 mcp->mb[1] = RNID_TYPE_ASIC_TEMP << 8;
5084 mcp->out_mb = MBX_1|MBX_0;
5085 mcp->in_mb = MBX_1|MBX_0;
5086 mcp->tov = MBX_TOV_SECONDS;
5087 mcp->flags = 0;
5088 rval = qla2x00_mailbox_command(vha, mcp);
5089 *temp = mcp->mb[1];
5093 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
5108 mbx_cmd_t *mcp = &mc;
5120 mcp->mb[0] = MBC_READ_SFP;
5121 mcp->mb[1] = dev;
5122 mcp->mb[2] = MSW(LSD(sfp_dma));
5123 mcp->mb[3] = LSW(LSD(sfp_dma));
5124 mcp->mb[6] = MSW(MSD(sfp_dma));
5125 mcp->mb[7] = LSW(MSD(sfp_dma));
5126 mcp->mb[8] = len;
5127 mcp->mb[9] = off;
5128 mcp->mb[10] = opt;
5129 mcp->out_mb = MBX_10|MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
5130 mcp->in_mb = MBX_1|MBX_0;
5131 mcp->tov = MBX_TOV_SECONDS;
5132 mcp->flags = 0;
5133 rval = qla2x00_mailbox_command(vha, mcp);
5136 *sfp = mcp->mb[1];
5140 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5141 if (mcp->mb[0] == MBS_COMMAND_ERROR && mcp->mb[1] == 0x22) {
5159 mbx_cmd_t *mcp = &mc;
5174 mcp->mb[0] = MBC_WRITE_SFP;
5175 mcp->mb[1] = dev;
5176 mcp->mb[2] = MSW(LSD(sfp_dma));
5177 mcp->mb[3] = LSW(LSD(sfp_dma));
5178 mcp->mb[6] = MSW(MSD(sfp_dma));
5179 mcp->mb[7] = LSW(MSD(sfp_dma));
5180 mcp->mb[8] = len;
5181 mcp->mb[9] = off;
5182 mcp->mb[10] = opt;
5183 mcp->out_mb = MBX_10|MBX_9|MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
5184 mcp->in_mb = MBX_1|MBX_0;
5185 mcp->tov = MBX_TOV_SECONDS;
5186 mcp->flags = 0;
5187 rval = qla2x00_mailbox_command(vha, mcp);
5191 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5206 mbx_cmd_t *mcp = &mc;
5214 mcp->mb[0] = MBC_GET_XGMAC_STATS;
5215 mcp->mb[2] = MSW(stats_dma);
5216 mcp->mb[3] = LSW(stats_dma);
5217 mcp->mb[6] = MSW(MSD(stats_dma));
5218 mcp->mb[7] = LSW(MSD(stats_dma));
5219 mcp->mb[8] = size_in_bytes >> 2;
5220 mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_0;
5221 mcp->in_mb = MBX_2|MBX_1|MBX_0;
5222 mcp->tov = MBX_TOV_SECONDS;
5223 mcp->flags = 0;
5224 rval = qla2x00_mailbox_command(vha, mcp);
5229 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
5235 *actual_size = mcp->mb[2] << 2;
5247 mbx_cmd_t *mcp = &mc;
5255 mcp->mb[0] = MBC_GET_DCBX_PARAMS;
5256 mcp->mb[1] = 0;
5257 mcp->mb[2] = MSW(tlv_dma);
5258 mcp->mb[3] = LSW(tlv_dma);
5259 mcp->mb[6] = MSW(MSD(tlv_dma));
5260 mcp->mb[7] = LSW(MSD(tlv_dma));
5261 mcp->mb[8] = size;
5262 mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
5263 mcp->in_mb = MBX_2|MBX_1|MBX_0;
5264 mcp->tov = MBX_TOV_SECONDS;
5265 mcp->flags = 0;
5266 rval = qla2x00_mailbox_command(vha, mcp);
5271 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
5285 mbx_cmd_t *mcp = &mc;
5293 mcp->mb[0] = MBC_READ_RAM_EXTENDED;
5294 mcp->mb[1] = LSW(risc_addr);
5295 mcp->mb[8] = MSW(risc_addr);
5296 mcp->out_mb = MBX_8|MBX_1|MBX_0;
5297 mcp->in_mb = MBX_3|MBX_2|MBX_0;
5298 mcp->tov = MBX_TOV_SECONDS;
5299 mcp->flags = 0;
5300 rval = qla2x00_mailbox_command(vha, mcp);
5303 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5307 *data = mcp->mb[3] << 16 | mcp->mb[2];
5319 mbx_cmd_t *mcp = &mc;
5324 memset(mcp->mb, 0 , sizeof(mcp->mb));
5325 mcp->mb[0] = MBC_DIAGNOSTIC_LOOP_BACK;
5326 mcp->mb[1] = mreq->options | BIT_6; // BIT_6 specifies 64 bit addressing
5329 mcp->mb[10] = LSW(mreq->transfer_size);
5330 mcp->mb[11] = MSW(mreq->transfer_size);
5333 mcp->mb[14] = LSW(mreq->send_dma);
5334 mcp->mb[15] = MSW(mreq->send_dma);
5335 mcp->mb[20] = LSW(MSD(mreq->send_dma));
5336 mcp->mb[21] = MSW(MSD(mreq->send_dma));
5339 mcp->mb[16] = LSW(mreq->rcv_dma);
5340 mcp->mb[17] = MSW(mreq->rcv_dma);
5341 mcp->mb[6] = LSW(MSD(mreq->rcv_dma));
5342 mcp->mb[7] = MSW(MSD(mreq->rcv_dma));
5345 mcp->mb[18] = LSW(mreq->iteration_count);
5346 mcp->mb[19] = MSW(mreq->iteration_count);
5348 mcp->out_mb = MBX_21|MBX_20|MBX_19|MBX_18|MBX_17|MBX_16|MBX_15|
5351 mcp->out_mb |= MBX_2;
5352 mcp->in_mb = MBX_19|MBX_18|MBX_3|MBX_2|MBX_1|MBX_0;
5354 mcp->buf_size = mreq->transfer_size;
5355 mcp->tov = MBX_TOV_SECONDS;
5356 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
5358 rval = qla2x00_mailbox_command(vha, mcp);
5363 "mb[19]=%x.\n", rval, mcp->mb[0], mcp->mb[1], mcp->mb[2],
5364 mcp->mb[3], mcp->mb[18], mcp->mb[19]);
5371 memcpy( mresp, mcp->mb, 64);
5381 mbx_cmd_t *mcp = &mc;
5387 memset(mcp->mb, 0 , sizeof(mcp->mb));
5388 mcp->mb[0] = MBC_DIAGNOSTIC_ECHO;
5390 mcp->mb[1] = mreq->options | BIT_15 | BIT_6;
5392 mcp->mb[2] = vha->fcoe_fcf_idx;
5394 mcp->mb[16] = LSW(mreq->rcv_dma);
5395 mcp->mb[17] = MSW(mreq->rcv_dma);
5396 mcp->mb[6] = LSW(MSD(mreq->rcv_dma));
5397 mcp->mb[7] = MSW(MSD(mreq->rcv_dma));
5399 mcp->mb[10] = LSW(mreq->transfer_size);
5401 mcp->mb[14] = LSW(mreq->send_dma);
5402 mcp->mb[15] = MSW(mreq->send_dma);
5403 mcp->mb[20] = LSW(MSD(mreq->send_dma));
5404 mcp->mb[21] = MSW(MSD(mreq->send_dma));
5406 mcp->out_mb = MBX_21|MBX_20|MBX_17|MBX_16|MBX_15|
5409 mcp->out_mb |= MBX_2;
5411 mcp->in_mb = MBX_0;
5414 mcp->in_mb |= MBX_1;
5417 mcp->in_mb |= MBX_3;
5419 mcp->tov = MBX_TOV_SECONDS;
5420 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
5421 mcp->buf_size = mreq->transfer_size;
5423 rval = qla2x00_mailbox_command(vha, mcp);
5428 rval, mcp->mb[0], mcp->mb[1]);
5435 memcpy(mresp, mcp->mb, 64);
5444 mbx_cmd_t *mcp = &mc;
5449 mcp->mb[0] = MBC_ISP84XX_RESET;
5450 mcp->mb[1] = enable_diagnostic;
5451 mcp->out_mb = MBX_1|MBX_0;
5452 mcp->in_mb = MBX_1|MBX_0;
5453 mcp->tov = MBX_TOV_SECONDS;
5454 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
5455 rval = qla2x00_mailbox_command(vha, mcp);
5471 mbx_cmd_t *mcp = &mc;
5479 mcp->mb[0] = MBC_WRITE_RAM_WORD_EXTENDED;
5480 mcp->mb[1] = LSW(risc_addr);
5481 mcp->mb[2] = LSW(data);
5482 mcp->mb[3] = MSW(data);
5483 mcp->mb[8] = MSW(risc_addr);
5484 mcp->out_mb = MBX_8|MBX_3|MBX_2|MBX_1|MBX_0;
5485 mcp->in_mb = MBX_1|MBX_0;
5486 mcp->tov = MBX_TOV_SECONDS;
5487 mcp->flags = 0;
5488 rval = qla2x00_mailbox_command(vha, mcp);
5492 rval, mcp->mb[0], mcp->mb[1]);
5569 mbx_cmd_t *mcp = &mc;
5580 memset(mcp, 0, sizeof(*mcp));
5597 mcp->mb[0] = MBC_DATA_RATE;
5598 mcp->mb[1] = mode;
5599 mcp->mb[2] = val;
5601 mcp->out_mb = MBX_2|MBX_1|MBX_0;
5602 mcp->in_mb = MBX_2|MBX_1|MBX_0;
5604 mcp->in_mb |= MBX_4|MBX_3;
5605 mcp->tov = MBX_TOV_SECONDS;
5606 mcp->flags = 0;
5607 rval = qla2x00_mailbox_command(vha, mcp);
5610 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5612 if (mcp->mb[1] != 0x7)
5614 "Speed set:0x%x\n", mcp->mb[1]);
5628 mbx_cmd_t *mcp = &mc;
5637 mcp->mb[0] = MBC_DATA_RATE;
5638 mcp->mb[1] = QLA_GET_DATA_RATE;
5639 mcp->out_mb = MBX_1|MBX_0;
5640 mcp->in_mb = MBX_2|MBX_1|MBX_0;
5642 mcp->in_mb |= MBX_4|MBX_3;
5643 mcp->tov = MBX_TOV_SECONDS;
5644 mcp->flags = 0;
5645 rval = qla2x00_mailbox_command(vha, mcp);
5648 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5650 if (mcp->mb[1] != 0x7)
5651 ha->link_data_rate = mcp->mb[1];
5654 if (mcp->mb[4] & BIT_0)
5661 if (mcp->mb[1] != 0x7)
5662 ha->link_data_rate = mcp->mb[1];
5673 mbx_cmd_t *mcp = &mc;
5682 mcp->mb[0] = MBC_GET_PORT_CONFIG;
5683 mcp->out_mb = MBX_0;
5684 mcp->in_mb = MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
5685 mcp->tov = MBX_TOV_SECONDS;
5686 mcp->flags = 0;
5688 rval = qla2x00_mailbox_command(vha, mcp);
5692 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5695 memcpy(mb, &mcp->mb[1], sizeof(uint16_t) * 4);
5708 mbx_cmd_t *mcp = &mc;
5713 mcp->mb[0] = MBC_SET_PORT_CONFIG;
5715 memcpy(&mcp->mb[1], mb, sizeof(uint16_t) * 4);
5716 mcp->out_mb = MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
5717 mcp->in_mb = MBX_0;
5718 mcp->tov = MBX_TOV_SECONDS;
5719 mcp->flags = 0;
5720 rval = qla2x00_mailbox_command(vha, mcp);
5724 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5739 mbx_cmd_t *mcp = &mc;
5748 mcp->mb[0] = MBC_PORT_PARAMS;
5749 mcp->mb[1] = loop_id;
5751 mcp->mb[2] = BIT_1;
5753 mcp->mb[2] = BIT_2;
5754 mcp->mb[4] = priority & 0xf;
5755 mcp->mb[9] = vha->vp_idx;
5756 mcp->out_mb = MBX_9|MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
5757 mcp->in_mb = MBX_4|MBX_3|MBX_1|MBX_0;
5758 mcp->tov = MBX_TOV_SECONDS;
5759 mcp->flags = 0;
5760 rval = qla2x00_mailbox_command(vha, mcp);
5762 mb[0] = mcp->mb[0];
5763 mb[1] = mcp->mb[1];
5764 mb[3] = mcp->mb[3];
5765 mb[4] = mcp->mb[4];
5831 mbx_cmd_t *mcp = &mc;
5839 memset(mcp, 0, sizeof(mbx_cmd_t));
5840 mcp->mb[0] = MBC_TOGGLE_INTERRUPT;
5841 mcp->mb[1] = 1;
5843 mcp->out_mb = MBX_1|MBX_0;
5844 mcp->in_mb = MBX_0;
5845 mcp->tov = MBX_TOV_SECONDS;
5846 mcp->flags = 0;
5848 rval = qla2x00_mailbox_command(vha, mcp);
5851 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5866 mbx_cmd_t *mcp = &mc;
5874 memset(mcp, 0, sizeof(mbx_cmd_t));
5875 mcp->mb[0] = MBC_TOGGLE_INTERRUPT;
5876 mcp->mb[1] = 0;
5878 mcp->out_mb = MBX_1|MBX_0;
5879 mcp->in_mb = MBX_0;
5880 mcp->tov = MBX_TOV_SECONDS;
5881 mcp->flags = 0;
5883 rval = qla2x00_mailbox_command(vha, mcp);
5886 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5900 mbx_cmd_t *mcp = &mc;
5906 memset(mcp->mb, 0 , sizeof(mcp->mb));
5907 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5908 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5909 mcp->mb[2] = LSW(RQST_TMPLT_SIZE);
5910 mcp->mb[3] = MSW(RQST_TMPLT_SIZE);
5912 mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
5913 mcp->in_mb = MBX_14|MBX_13|MBX_12|MBX_11|MBX_10|MBX_9|MBX_8|
5916 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
5917 mcp->tov = MBX_TOV_SECONDS;
5918 rval = qla2x00_mailbox_command(vha, mcp);
5924 (mcp->mb[1] << 16) | mcp->mb[0],
5925 (mcp->mb[3] << 16) | mcp->mb[2]);
5929 ha->md_template_size = ((mcp->mb[3] << 16) | mcp->mb[2]);
5944 mbx_cmd_t *mcp = &mc;
5958 memset(mcp->mb, 0 , sizeof(mcp->mb));
5959 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5960 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5961 mcp->mb[2] = LSW(RQST_TMPLT);
5962 mcp->mb[3] = MSW(RQST_TMPLT);
5963 mcp->mb[4] = LSW(LSD(ha->md_tmplt_hdr_dma));
5964 mcp->mb[5] = MSW(LSD(ha->md_tmplt_hdr_dma));
5965 mcp->mb[6] = LSW(MSD(ha->md_tmplt_hdr_dma));
5966 mcp->mb[7] = MSW(MSD(ha->md_tmplt_hdr_dma));
5967 mcp->mb[8] = LSW(ha->md_template_size);
5968 mcp->mb[9] = MSW(ha->md_template_size);
5970 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
5971 mcp->tov = MBX_TOV_SECONDS;
5972 mcp->out_mb = MBX_11|MBX_10|MBX_9|MBX_8|
5974 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
5975 rval = qla2x00_mailbox_command(vha, mcp);
5980 ((mcp->mb[1] << 16) | mcp->mb[0]),
5981 ((mcp->mb[3] << 16) | mcp->mb[2]));
5993 mbx_cmd_t *mcp = &mc;
6008 memset(mcp->mb, 0 , sizeof(mcp->mb));
6010 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
6011 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
6012 mcp->mb[2] = LSW(RQST_TMPLT);
6013 mcp->mb[3] = MSW(RQST_TMPLT);
6014 mcp->mb[4] = LSW(LSD(ha->md_tmplt_hdr_dma + offset));
6015 mcp->mb[5] = MSW(LSD(ha->md_tmplt_hdr_dma + offset));
6016 mcp->mb[6] = LSW(MSD(ha->md_tmplt_hdr_dma + offset));
6017 mcp->mb[7] = MSW(MSD(ha->md_tmplt_hdr_dma + offset));
6018 mcp->mb[8] = LSW(size);
6019 mcp->mb[9] = MSW(size);
6020 mcp->mb[10] = offset & 0x0000FFFF;
6021 mcp->mb[11] = offset & 0xFFFF0000;
6022 mcp->flags = MBX_DMA_OUT|MBX_DMA_IN|IOCTL_CMD;
6023 mcp->tov = MBX_TOV_SECONDS;
6024 mcp->out_mb = MBX_11|MBX_10|MBX_9|MBX_8|
6026 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
6027 rval = qla2x00_mailbox_command(vha, mcp);
6032 ((mcp->mb[1] << 16) | mcp->mb[0]),
6033 ((mcp->mb[3] << 16) | mcp->mb[2]));
6049 mbx_cmd_t *mcp = &mc;
6057 memset(mcp, 0, sizeof(mbx_cmd_t));
6058 mcp->mb[0] = MBC_SET_LED_CONFIG;
6059 mcp->mb[1] = led_cfg[0];
6060 mcp->mb[2] = led_cfg[1];
6062 mcp->mb[3] = led_cfg[2];
6063 mcp->mb[4] = led_cfg[3];
6064 mcp->mb[5] = led_cfg[4];
6065 mcp->mb[6] = led_cfg[5];
6068 mcp->out_mb = MBX_2|MBX_1|MBX_0;
6070 mcp->out_mb |= MBX_6|MBX_5|MBX_4|MBX_3;
6071 mcp->in_mb = MBX_0;
6072 mcp->tov = MBX_TOV_SECONDS;
6073 mcp->flags = 0;
6075 rval = qla2x00_mailbox_command(vha, mcp);
6078 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6093 mbx_cmd_t *mcp = &mc;
6101 memset(mcp, 0, sizeof(mbx_cmd_t));
6102 mcp->mb[0] = MBC_GET_LED_CONFIG;
6104 mcp->out_mb = MBX_0;
6105 mcp->in_mb = MBX_2|MBX_1|MBX_0;
6107 mcp->in_mb |= MBX_6|MBX_5|MBX_4|MBX_3;
6108 mcp->tov = MBX_TOV_SECONDS;
6109 mcp->flags = 0;
6111 rval = qla2x00_mailbox_command(vha, mcp);
6114 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6116 led_cfg[0] = mcp->mb[1];
6117 led_cfg[1] = mcp->mb[2];
6119 led_cfg[2] = mcp->mb[3];
6120 led_cfg[3] = mcp->mb[4];
6121 led_cfg[4] = mcp->mb[5];
6122 led_cfg[5] = mcp->mb[6];
6137 mbx_cmd_t *mcp = &mc;
6145 memset(mcp, 0, sizeof(mbx_cmd_t));
6146 mcp->mb[0] = MBC_SET_LED_CONFIG;
6148 mcp->mb[7] = 0xE;
6150 mcp->mb[7] = 0xD;
6152 mcp->out_mb = MBX_7|MBX_0;
6153 mcp->in_mb = MBX_0;
6154 mcp->tov = MBX_TOV_SECONDS;
6155 mcp->flags = 0;
6157 rval = qla2x00_mailbox_command(vha, mcp);
6160 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6175 mbx_cmd_t *mcp = &mc;
6183 mcp->mb[0] = MBC_WRITE_REMOTE_REG;
6184 mcp->mb[1] = LSW(reg);
6185 mcp->mb[2] = MSW(reg);
6186 mcp->mb[3] = LSW(data);
6187 mcp->mb[4] = MSW(data);
6188 mcp->out_mb = MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
6190 mcp->in_mb = MBX_1|MBX_0;
6191 mcp->tov = MBX_TOV_SECONDS;
6192 mcp->flags = 0;
6193 rval = qla2x00_mailbox_command(vha, mcp);
6197 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6212 mbx_cmd_t *mcp = &mc;
6225 mcp->mb[0] = MBC_PORT_LOGOUT;
6226 mcp->mb[1] = fcport->loop_id;
6227 mcp->mb[10] = BIT_15;
6228 mcp->out_mb = MBX_10|MBX_1|MBX_0;
6229 mcp->in_mb = MBX_0;
6230 mcp->tov = MBX_TOV_SECONDS;
6231 mcp->flags = 0;
6232 rval = qla2x00_mailbox_command(vha, mcp);
6235 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6248 mbx_cmd_t *mcp = &mc;
6258 mcp->mb[0] = MBC_READ_REMOTE_REG;
6259 mcp->mb[1] = LSW(reg);
6260 mcp->mb[2] = MSW(reg);
6261 mcp->out_mb = MBX_2|MBX_1|MBX_0;
6262 mcp->in_mb = MBX_4|MBX_3|MBX_1|MBX_0;
6263 mcp->tov = MBX_TOV_SECONDS;
6264 mcp->flags = 0;
6265 rval = qla2x00_mailbox_command(vha, mcp);
6270 rval, mcp->mb[0], mcp->mb[1]);
6272 *data = (mcp->mb[3] | (mcp->mb[4] << 16));
6299 mbx_cmd_t *mcp = &mc;
6307 mcp->mb[0] = MBC_RESTART_NIC_FIRMWARE;
6308 mcp->out_mb = MBX_0;
6309 mcp->in_mb = MBX_1|MBX_0;
6310 mcp->tov = MBX_TOV_SECONDS;
6311 mcp->flags = 0;
6312 rval = qla2x00_mailbox_command(vha, mcp);
6317 rval, mcp->mb[0], mcp->mb[1]);
6332 mbx_cmd_t *mcp = &mc;
6341 mcp->mb[0] = MBC_SET_ACCESS_CONTROL;
6342 mcp->mb[1] = options;
6343 mcp->out_mb = MBX_1|MBX_0;
6345 mcp->mb[2] = LSW(start_addr);
6346 mcp->mb[3] = MSW(start_addr);
6347 mcp->mb[4] = LSW(end_addr);
6348 mcp->mb[5] = MSW(end_addr);
6349 mcp->out_mb |= MBX_5|MBX_4|MBX_3|MBX_2;
6351 mcp->in_mb = MBX_2|MBX_1|MBX_0;
6353 mcp->in_mb |= MBX_4|MBX_3;
6354 mcp->tov = MBX_TOV_SECONDS;
6355 mcp->flags = 0;
6356 rval = qla2x00_mailbox_command(vha, mcp);
6361 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2], mcp->mb[3],
6362 mcp->mb[4]);
6366 *sector_size = mcp->mb[1];
6369 "Driver-lock id=%x%x", mcp->mb[4], mcp->mb[3]);
6372 "Flash-lock id=%x%x", mcp->mb[4], mcp->mb[3]);
6386 mbx_cmd_t *mcp = &mc;
6394 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
6395 mcp->mb[1] = LSW(addr);
6396 mcp->mb[2] = MSW(req_dma);
6397 mcp->mb[3] = LSW(req_dma);
6398 mcp->mb[4] = MSW(size);
6399 mcp->mb[5] = LSW(size);
6400 mcp->mb[6] = MSW(MSD(req_dma));
6401 mcp->mb[7] = LSW(MSD(req_dma));
6402 mcp->mb[8] = MSW(addr);
6405 mcp->mb[10] = BIT_7 | 0x40;
6407 mcp->out_mb |= MBX_10|MBX_8|MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|
6410 mcp->in_mb = MBX_0;
6411 mcp->tov = MBX_TOV_SECONDS;
6412 mcp->flags = 0;
6413 rval = qla2x00_mailbox_command(vha, mcp);
6417 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6432 mbx_cmd_t *mcp = &mc;
6451 mcp->mb[0] = MBC_DPORT_DIAGNOSTICS;
6452 mcp->mb[1] = options;
6453 mcp->mb[2] = MSW(LSD(dd_dma));
6454 mcp->mb[3] = LSW(LSD(dd_dma));
6455 mcp->mb[6] = MSW(MSD(dd_dma));
6456 mcp->mb[7] = LSW(MSD(dd_dma));
6457 mcp->mb[8] = size;
6458 mcp->out_mb = MBX_8|MBX_7|MBX_6|MBX_3|MBX_2|MBX_1|MBX_0;
6459 mcp->in_mb = MBX_3|MBX_2|MBX_1|MBX_0;
6460 mcp->buf_size = size;
6461 mcp->flags = MBX_DMA_IN;
6462 mcp->tov = MBX_TOV_SECONDS * 4;
6463 rval = qla2x00_mailbox_command(vha, mcp);
6480 struct qla_dport_diag_v2 *dd, mbx_cmd_t *mcp)
6500 mcp->mb[0] = MBC_DPORT_DIAGNOSTICS;
6501 mcp->mb[1] = options;
6502 mcp->mb[2] = MSW(LSD(dd_dma));
6503 mcp->mb[3] = LSW(LSD(dd_dma));
6504 mcp->mb[6] = MSW(MSD(dd_dma));
6505 mcp->mb[7] = LSW(MSD(dd_dma));
6506 mcp->mb[8] = size;
6507 mcp->out_mb = MBX_8 | MBX_7 | MBX_6 | MBX_3 | MBX_2 | MBX_1 | MBX_0;
6508 mcp->in_mb = MBX_3 | MBX_2 | MBX_1 | MBX_0;
6509 mcp->buf_size = size;
6510 mcp->flags = MBX_DMA_IN;
6511 mcp->tov = MBX_TOV_SECONDS * 4;
6512 rval = qla2x00_mailbox_command(vha, mcp);
6539 int qla24xx_send_mb_cmd(struct scsi_qla_host *vha, mbx_cmd_t *mcp)
6557 sp->name = mb_to_str(mcp->mb[0]);
6561 memcpy(sp->u.iocb_cmd.u.mbx.out_mb, mcp->mb, SIZEOF_IOCB_MB_REG);
6575 memcpy(mcp->mb, sp->u.iocb_cmd.u.mbx.in_mb, SIZEOF_IOCB_MB_REG);
6766 mbx_cmd_t *mcp = &mc;
6771 memset(mcp->mb, 0 , sizeof(mcp->mb));
6772 mcp->mb[0] = MBC_GET_SET_ZIO_THRESHOLD;
6773 mcp->mb[1] = 1;
6774 mcp->mb[2] = value;
6775 mcp->out_mb = MBX_2 | MBX_1 | MBX_0;
6776 mcp->in_mb = MBX_2 | MBX_0;
6777 mcp->tov = MBX_TOV_SECONDS;
6778 mcp->flags = 0;
6780 rval = qla2x00_mailbox_command(vha, mcp);
6792 mbx_cmd_t *mcp = &mc;
6797 memset(mcp->mb, 0, sizeof(mcp->mb));
6798 mcp->mb[0] = MBC_GET_SET_ZIO_THRESHOLD;
6799 mcp->mb[1] = 0;
6800 mcp->out_mb = MBX_1 | MBX_0;
6801 mcp->in_mb = MBX_2 | MBX_0;
6802 mcp->tov = MBX_TOV_SECONDS;
6803 mcp->flags = 0;
6805 rval = qla2x00_mailbox_command(vha, mcp);
6902 mbx_cmd_t *mcp = &mc;
6904 mcp->mb[0] = MBC_SECURE_FLASH_UPDATE;
6905 mcp->mb[1] = opts;
6906 mcp->mb[2] = region;
6907 mcp->mb[3] = MSW(len);
6908 mcp->mb[4] = LSW(len);
6909 mcp->mb[5] = MSW(sfub_dma_addr);
6910 mcp->mb[6] = LSW(sfub_dma_addr);
6911 mcp->mb[7] = MSW(MSD(sfub_dma_addr));
6912 mcp->mb[8] = LSW(MSD(sfub_dma_addr));
6913 mcp->mb[9] = sfub_len;
6914 mcp->out_mb =
6916 mcp->in_mb = MBX_2|MBX_1|MBX_0;
6917 mcp->tov = MBX_TOV_SECONDS;
6918 mcp->flags = 0;
6919 rval = qla2x00_mailbox_command(vha, mcp);
6923 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1],
6924 mcp->mb[2]);
6935 mbx_cmd_t *mcp = &mc;
6940 mcp->mb[0] = MBC_WRITE_REMOTE_REG;
6941 mcp->mb[1] = LSW(addr);
6942 mcp->mb[2] = MSW(addr);
6943 mcp->mb[3] = LSW(data);
6944 mcp->mb[4] = MSW(data);
6945 mcp->out_mb = MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
6946 mcp->in_mb = MBX_1|MBX_0;
6947 mcp->tov = MBX_TOV_SECONDS;
6948 mcp->flags = 0;
6949 rval = qla2x00_mailbox_command(vha, mcp);
6953 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6967 mbx_cmd_t *mcp = &mc;
6972 mcp->mb[0] = MBC_READ_REMOTE_REG;
6973 mcp->mb[1] = LSW(addr);
6974 mcp->mb[2] = MSW(addr);
6975 mcp->out_mb = MBX_2|MBX_1|MBX_0;
6976 mcp->in_mb = MBX_4|MBX_3|MBX_2|MBX_1|MBX_0;
6977 mcp->tov = MBX_TOV_SECONDS;
6978 mcp->flags = 0;
6979 rval = qla2x00_mailbox_command(vha, mcp);
6981 *data = (uint32_t)((((uint32_t)mcp->mb[4]) << 16) | mcp->mb[3]);
6985 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6999 mbx_cmd_t *mcp = &mc;
7008 mcp->mb[0] = MBC_SET_GET_FC_LED_CONFIG;
7009 mcp->mb[1] = options;
7010 mcp->out_mb = MBX_1|MBX_0;
7011 mcp->in_mb = MBX_1|MBX_0;
7014 mcp->mb[2] = led[2];
7015 mcp->out_mb |= MBX_2;
7018 mcp->mb[3] = led[0];
7019 mcp->out_mb |= MBX_3;
7022 mcp->mb[4] = led[1];
7023 mcp->out_mb |= MBX_4;
7026 mcp->in_mb |= MBX_4|MBX_3|MBX_2;
7028 mcp->tov = MBX_TOV_SECONDS;
7029 mcp->flags = 0;
7030 rval = qla2x00_mailbox_command(vha, mcp);
7033 __func__, rval, mcp->mb[0], mcp->mb[1]);
7041 led[2] = mcp->mb[2];
7042 led[0] = mcp->mb[3];
7043 led[1] = mcp->mb[4];
7061 mbx_cmd_t *mcp = &mc;
7065 mcp->mb[0] = 0; // noop cmd= 0
7066 mcp->out_mb = MBX_0;
7067 mcp->in_mb = MBX_0;
7068 mcp->tov = 5;
7069 mcp->flags = 0;
7070 rval = qla2x00_mailbox_command(vha, mcp);
7082 mbx_cmd_t *mcp = &mc;
7087 memcpy(&mcp->mb, (char *)mbx_in, (32 * sizeof(uint16_t)));
7089 mcp->out_mb = 0xFFFFFFFF;
7090 mcp->in_mb = 0xFFFFFFFF;
7092 mcp->tov = MBX_TOV_SECONDS;
7093 mcp->flags = 0;
7094 mcp->bufp = NULL;
7096 rval = qla2x00_mailbox_command(vha, mcp);
7100 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
7105 memcpy(mbx_out, &mcp->mb, 32 * sizeof(uint16_t));