Lines Matching refs:ioc

83  * @ioc: per adapter object
86 * Context: Calling function should acquire ioc->sas_node_lock.
92 _transport_sas_node_find_by_sas_address(struct MPT3SAS_ADAPTER *ioc,
95 if (ioc->sas_hba.sas_address == sas_address)
96 return &ioc->sas_hba;
98 return mpt3sas_scsih_expander_find_by_sas_address(ioc,
104 * @ioc: per adapter object
110 _transport_get_port_id_by_rphy(struct MPT3SAS_ADAPTER *ioc,
123 spin_lock_irqsave(&ioc->sas_node_lock, flags);
125 &ioc->sas_expander_list, list) {
131 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
133 spin_lock_irqsave(&ioc->sas_device_lock, flags);
134 sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy);
139 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
193 * @ioc: per adapter object
202 _transport_set_identify(struct MPT3SAS_ADAPTER *ioc, u16 handle,
210 if (ioc->shost_recovery || ioc->pci_error_recovery) {
211 ioc_info(ioc, "%s: host reset in progress!\n", __func__);
215 if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0,
217 ioc_err(ioc, "failure at %s:%d/%s()!\n",
225 ioc_err(ioc, "handle(0x%04x), ioc_status(0x%04x) failure at %s:%d/%s()!\n",
280 * @ioc: per adapter object
286 * The callback index passed is `ioc->transport_cb_idx`
292 mpt3sas_transport_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
297 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply);
298 if (ioc->transport_cmds.status == MPT3_CMD_NOT_USED)
300 if (ioc->transport_cmds.smid != smid)
302 ioc->transport_cmds.status |= MPT3_CMD_COMPLETE;
304 memcpy(ioc->transport_cmds.reply, mpi_reply,
306 ioc->transport_cmds.status |= MPT3_CMD_REPLY_VALID;
308 ioc->transport_cmds.status &= ~MPT3_CMD_PENDING;
309 complete(&ioc->transport_cmds.done);
343 * @ioc: per adapter object
353 _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
370 if (ioc->shost_recovery || ioc->pci_error_recovery) {
371 ioc_info(ioc, "%s: host reset in progress!\n", __func__);
375 mutex_lock(&ioc->transport_cmds.mutex);
377 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
378 ioc_err(ioc, "%s: transport_cmds in use\n", __func__);
382 ioc->transport_cmds.status = MPT3_CMD_PENDING;
384 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT);
388 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
390 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
396 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid);
397 ioc->transport_cmds.smid = smid;
401 data_out = dma_alloc_coherent(&ioc->pdev->dev, data_out_sz + data_in_sz,
407 mpt3sas_base_free_smid(ioc, smid);
426 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma,
429 dtransportprintk(ioc,
430 ioc_info(ioc, "report_manufacture - send to sas_addr(0x%016llx)\n",
432 init_completion(&ioc->transport_cmds.done);
433 ioc->put_smid_default(ioc, smid);
434 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ);
436 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) {
437 ioc_err(ioc, "%s: timeout\n", __func__);
440 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET))
445 dtransportprintk(ioc, ioc_info(ioc, "report_manufacture - complete\n"));
447 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) {
450 mpi_reply = ioc->transport_cmds.reply;
452 dtransportprintk(ioc,
453 ioc_info(ioc, "report_manufacture - reply data transfer size(%d)\n",
478 dtransportprintk(ioc,
479 ioc_info(ioc, "report_manufacture - no reply\n"));
483 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER);
485 ioc->transport_cmds.status = MPT3_CMD_NOT_USED;
487 dma_free_coherent(&ioc->pdev->dev, data_out_sz + data_in_sz,
490 mutex_unlock(&ioc->transport_cmds.mutex);
497 * @ioc: per adapter object
501 _transport_delete_port(struct MPT3SAS_ADAPTER *ioc,
513 ioc->logging_level |= MPT_DEBUG_TRANSPORT;
515 mpt3sas_device_remove_by_sas_address(ioc,
519 mpt3sas_expander_remove(ioc, sas_address, port);
520 ioc->logging_level &= ~MPT_DEBUG_TRANSPORT;
525 * @ioc: per adapter object
530 _transport_delete_phy(struct MPT3SAS_ADAPTER *ioc,
547 * @ioc: per adapter object
552 _transport_add_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_port *mpt3sas_port,
569 * @ioc: per adapter object
576 mpt3sas_transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc,
601 _transport_add_phy(ioc, mpt3sas_port, mpt3sas_phy);
609 * @ioc: per adapter object
614 mpt3sas_transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc,
634 if (mpt3sas_port->num_phys == 1 && !ioc->shost_recovery)
635 _transport_delete_port(ioc, mpt3sas_port);
637 _transport_delete_phy(ioc, mpt3sas_port,
646 * @ioc: per adapter object
654 _transport_sanity_check(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node,
665 mpt3sas_transport_del_phy_from_an_existing_port(ioc,
672 * @ioc: per adapter object
676 * Context: This function will acquire ioc->sas_node_lock.
683 mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle,
697 ioc_err(ioc, "failure at %s:%d/%s()!\n",
705 ioc_err(ioc, "failure at %s:%d/%s()!\n",
712 spin_lock_irqsave(&ioc->sas_node_lock, flags);
713 sas_node = _transport_sas_node_find_by_sas_address(ioc,
715 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
718 ioc_err(ioc, "%s: Could not find parent sas_address(0x%016llx)!\n",
723 if ((_transport_set_identify(ioc, handle,
725 ioc_err(ioc, "failure at %s:%d/%s()!\n",
731 ioc_err(ioc, "failure at %s:%d/%s()!\n",
737 _transport_sanity_check(ioc, sas_node,
749 if (sas_node->handle <= ioc->sas_hba.num_phys) {
755 vphy = mpt3sas_get_vphy_by_phy(ioc, hba_port, i);
757 ioc_err(ioc, "failure at %s:%d/%s()!\n",
765 ioc_err(ioc, "failure at %s:%d/%s()!\n",
771 sas_device = mpt3sas_get_sdev_by_addr(ioc,
775 ioc_err(ioc, "failure at %s:%d/%s()!\n",
783 ioc_err(ioc, "failure at %s:%d/%s()!\n",
789 ioc_err(ioc, "failure at %s:%d/%s()!\n",
796 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
811 if (sas_node->handle <= ioc->sas_hba.num_phys) {
822 if (sas_node->handle <= ioc->sas_hba.num_phys)
828 ioc_err(ioc, "failure at %s:%d/%s()!\n",
836 ioc_err(ioc, "failure at %s:%d/%s()!\n",
853 spin_lock_irqsave(&ioc->sas_node_lock, flags);
855 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
862 _transport_expander_report_manufacture(ioc,
880 * @ioc: per adapter object
884 * Context: This function will acquire ioc->sas_node_lock.
887 * ioc->sas_port_list.
890 mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address,
905 spin_lock_irqsave(&ioc->sas_node_lock, flags);
906 sas_node = _transport_sas_node_find_by_sas_address(ioc,
909 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
924 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
928 if (sas_node->handle <= ioc->sas_hba.num_phys &&
929 (ioc->multipath_on_hba)) {
935 ioc_info(ioc,
945 &ioc->port_table_list, list) {
960 ioc_info(ioc,
974 ioc_info(ioc,
989 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
993 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
1000 if (!ioc->remove_host)
1005 if (!ioc->remove_host)
1007 ioc_info(ioc, "%s: removed: sas_addr(0x%016llx)\n",
1014 * @ioc: per adapter object
1022 mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
1032 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1036 if ((_transport_set_identify(ioc, mpt3sas_phy->handle,
1038 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1046 _transport_set_identify(ioc, mpt3sas_phy->attached_handle,
1062 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1067 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
1083 * @ioc: per adapter object
1091 mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
1101 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1105 if ((_transport_set_identify(ioc, mpt3sas_phy->handle,
1107 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1116 _transport_set_identify(ioc, mpt3sas_phy->attached_handle,
1133 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1138 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
1153 * @ioc: per adapter object
1163 mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc,
1172 if (ioc->shost_recovery || ioc->pci_error_recovery)
1175 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1176 sas_node = _transport_sas_node_find_by_sas_address(ioc,
1179 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1185 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1187 _transport_set_identify(ioc, handle,
1189 if ((sas_node->handle <= ioc->sas_hba.num_phys) &&
1190 (ioc->multipath_on_hba)) {
1192 &ioc->port_table_list, list) {
1199 mpt3sas_transport_add_phy_to_an_existing_port(ioc, sas_node,
1210 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
1263 * @ioc: per adapter object
1270 _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
1285 if (ioc->shost_recovery || ioc->pci_error_recovery) {
1286 ioc_info(ioc, "%s: host reset in progress!\n", __func__);
1290 mutex_lock(&ioc->transport_cmds.mutex);
1292 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
1293 ioc_err(ioc, "%s: transport_cmds in use\n", __func__);
1297 ioc->transport_cmds.status = MPT3_CMD_PENDING;
1299 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT);
1303 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
1305 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
1310 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid);
1311 ioc->transport_cmds.smid = smid;
1315 data_out = dma_alloc_coherent(&ioc->pdev->dev, sz, &data_out_dma,
1321 mpt3sas_base_free_smid(ioc, smid);
1344 ioc->build_sg(ioc, psge, data_out_dma,
1349 dtransportprintk(ioc,
1350 ioc_info(ioc, "phy_error_log - send to sas_addr(0x%016llx), phy(%d)\n",
1353 init_completion(&ioc->transport_cmds.done);
1354 ioc->put_smid_default(ioc, smid);
1355 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ);
1357 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) {
1358 ioc_err(ioc, "%s: timeout\n", __func__);
1361 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET))
1366 dtransportprintk(ioc, ioc_info(ioc, "phy_error_log - complete\n"));
1368 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) {
1370 mpi_reply = ioc->transport_cmds.reply;
1372 dtransportprintk(ioc,
1373 ioc_info(ioc, "phy_error_log - reply data transfer size(%d)\n",
1383 dtransportprintk(ioc,
1384 ioc_info(ioc, "phy_error_log - function_result(%d)\n",
1397 dtransportprintk(ioc,
1398 ioc_info(ioc, "phy_error_log - no reply\n"));
1402 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER);
1404 ioc->transport_cmds.status = MPT3_CMD_NOT_USED;
1406 dma_free_coherent(&ioc->pdev->dev, sz, data_out, data_out_dma);
1408 mutex_unlock(&ioc->transport_cmds.mutex);
1422 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy);
1429 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1430 if (_transport_sas_node_find_by_sas_address(ioc,
1432 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) {
1433 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1436 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1438 if (phy->identify.sas_address != ioc->sas_hba.sas_address)
1439 return _transport_get_expander_phy_error_log(ioc, phy);
1442 if ((mpt3sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1,
1444 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1450 ioc_info(ioc, "phy(%d), ioc_status (0x%04x), loginfo(0x%08x)\n",
1476 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy);
1481 spin_lock_irqsave(&ioc->sas_device_lock, flags);
1482 sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy);
1492 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
1505 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy);
1510 spin_lock_irqsave(&ioc->sas_device_lock, flags);
1511 sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy);
1518 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
1553 * @ioc: per adapter object
1561 _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
1576 if (ioc->shost_recovery || ioc->pci_error_recovery) {
1577 ioc_info(ioc, "%s: host reset in progress!\n", __func__);
1581 mutex_lock(&ioc->transport_cmds.mutex);
1583 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
1584 ioc_err(ioc, "%s: transport_cmds in use\n", __func__);
1588 ioc->transport_cmds.status = MPT3_CMD_PENDING;
1590 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT);
1594 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
1596 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
1601 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid);
1602 ioc->transport_cmds.smid = smid;
1606 data_out = dma_alloc_coherent(&ioc->pdev->dev, sz, &data_out_dma,
1612 mpt3sas_base_free_smid(ioc, smid);
1640 ioc->build_sg(ioc, psge, data_out_dma,
1645 dtransportprintk(ioc,
1646 ioc_info(ioc, "phy_control - send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n",
1649 init_completion(&ioc->transport_cmds.done);
1650 ioc->put_smid_default(ioc, smid);
1651 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ);
1653 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) {
1654 ioc_err(ioc, "%s: timeout\n", __func__);
1657 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET))
1662 dtransportprintk(ioc, ioc_info(ioc, "phy_control - complete\n"));
1664 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) {
1666 mpi_reply = ioc->transport_cmds.reply;
1668 dtransportprintk(ioc,
1669 ioc_info(ioc, "phy_control - reply data transfer size(%d)\n",
1679 dtransportprintk(ioc,
1680 ioc_info(ioc, "phy_control - function_result(%d)\n",
1685 dtransportprintk(ioc,
1686 ioc_info(ioc, "phy_control - no reply\n"));
1690 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER);
1692 ioc->transport_cmds.status = MPT3_CMD_NOT_USED;
1694 dma_free_coherent(&ioc->pdev->dev, sz, data_out,
1697 mutex_unlock(&ioc->transport_cmds.mutex);
1711 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy);
1718 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1719 if (_transport_sas_node_find_by_sas_address(ioc,
1721 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) {
1722 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1725 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1728 if (phy->identify.sas_address != ioc->sas_hba.sas_address)
1729 return _transport_expander_phy_control(ioc, phy,
1740 if ((mpt3sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) {
1741 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1747 ioc_info(ioc, "phy(%d), ioc_status(0x%04x), loginfo(0x%08x)\n",
1765 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy);
1777 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1778 if (_transport_sas_node_find_by_sas_address(ioc,
1780 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) {
1781 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1784 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1787 if (phy->identify.sas_address != ioc->sas_hba.sas_address)
1788 return _transport_expander_phy_control(ioc, phy,
1795 sz = struct_size(sas_iounit_pg0, PhyData, ioc->sas_hba.num_phys);
1798 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1803 if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply,
1805 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1813 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1820 for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) {
1823 ioc_err(ioc, "discovery is active on port = %d, phy = %d: unable to enable/disable phys, try again later!\n",
1835 sz = struct_size(sas_iounit_pg1, PhyData, ioc->sas_hba.num_phys);
1838 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1843 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply,
1845 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1853 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1860 for (i = 0; i < ioc->sas_hba.num_phys ; i++) {
1879 mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, sz);
1903 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy);
1915 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1916 if (_transport_sas_node_find_by_sas_address(ioc,
1918 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) {
1919 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1922 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1935 if (phy->identify.sas_address != ioc->sas_hba.sas_address) {
1938 return _transport_expander_phy_control(ioc, phy,
1945 sz = struct_size(sas_iounit_pg1, PhyData, ioc->sas_hba.num_phys);
1948 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1953 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply,
1955 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1963 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1969 for (i = 0; i < ioc->sas_hba.num_phys; i++) {
1972 (ioc->sas_hba.phy[i].phy->minimum_linkrate +
1973 (ioc->sas_hba.phy[i].phy->maximum_linkrate << 4));
1981 if (mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1,
1983 ioc_err(ioc, "failure at %s:%d/%s()!\n",
1993 if (!mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0,
2055 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost);
2069 if (ioc->shost_recovery || ioc->pci_error_recovery) {
2070 ioc_info(ioc, "%s: host reset in progress!\n", __func__);
2075 rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex);
2079 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
2080 ioc_err(ioc, "%s: transport_cmds in use\n",
2085 ioc->transport_cmds.status = MPT3_CMD_PENDING;
2087 rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->request_payload,
2097 rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->reply_payload,
2102 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT);
2106 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
2108 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
2114 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid);
2115 ioc->transport_cmds.smid = smid;
2119 mpi_request->PhysicalPort = _transport_get_port_id_by_rphy(ioc, rphy);
2122 cpu_to_le64(ioc->sas_hba.sas_address);
2126 ioc->build_sg(ioc, psge, dma_addr_out, dma_len_out - 4, dma_addr_in,
2129 dtransportprintk(ioc,
2130 ioc_info(ioc, "%s: sending smp request\n", __func__));
2132 init_completion(&ioc->transport_cmds.done);
2133 ioc->put_smid_default(ioc, smid);
2134 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ);
2136 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) {
2137 ioc_err(ioc, "%s: timeout\n", __func__);
2140 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) {
2141 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER);
2147 dtransportprintk(ioc, ioc_info(ioc, "%s - complete\n", __func__));
2149 if (!(ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID)) {
2150 dtransportprintk(ioc,
2151 ioc_info(ioc, "%s: no reply\n", __func__));
2156 mpi_reply = ioc->transport_cmds.reply;
2158 dtransportprintk(ioc,
2159 ioc_info(ioc, "%s: reply data transfer size(%d)\n",
2175 _transport_unmap_smp_buffer(&ioc->pdev->dev, &job->reply_payload,
2178 _transport_unmap_smp_buffer(&ioc->pdev->dev, &job->request_payload,
2181 ioc->transport_cmds.status = MPT3_CMD_NOT_USED;
2182 mutex_unlock(&ioc->transport_cmds.mutex);