Lines Matching refs:ioc
73 _transport_sas_node_find_by_sas_address(struct MPT3SAS_ADAPTER *ioc, in _transport_sas_node_find_by_sas_address() argument
76 if (ioc->sas_hba.sas_address == sas_address) in _transport_sas_node_find_by_sas_address()
77 return &ioc->sas_hba; in _transport_sas_node_find_by_sas_address()
79 return mpt3sas_scsih_expander_find_by_sas_address(ioc, in _transport_sas_node_find_by_sas_address()
140 _transport_set_identify(struct MPT3SAS_ADAPTER *ioc, u16 handle, in _transport_set_identify() argument
148 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_set_identify()
149 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_set_identify()
153 if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0, in _transport_set_identify()
155 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_set_identify()
163 ioc_err(ioc, "handle(0x%04x), ioc_status(0x%04x) failure at %s:%d/%s()!\n", in _transport_set_identify()
230 mpt3sas_transport_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, in mpt3sas_transport_done() argument
235 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply); in mpt3sas_transport_done()
236 if (ioc->transport_cmds.status == MPT3_CMD_NOT_USED) in mpt3sas_transport_done()
238 if (ioc->transport_cmds.smid != smid) in mpt3sas_transport_done()
240 ioc->transport_cmds.status |= MPT3_CMD_COMPLETE; in mpt3sas_transport_done()
242 memcpy(ioc->transport_cmds.reply, mpi_reply, in mpt3sas_transport_done()
244 ioc->transport_cmds.status |= MPT3_CMD_REPLY_VALID; in mpt3sas_transport_done()
246 ioc->transport_cmds.status &= ~MPT3_CMD_PENDING; in mpt3sas_transport_done()
247 complete(&ioc->transport_cmds.done); in mpt3sas_transport_done()
290 _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc, in _transport_expander_report_manufacture() argument
307 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_report_manufacture()
308 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_expander_report_manufacture()
312 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
314 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_expander_report_manufacture()
315 ioc_err(ioc, "%s: transport_cmds in use\n", __func__); in _transport_expander_report_manufacture()
319 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_expander_report_manufacture()
321 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_expander_report_manufacture()
325 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_report_manufacture()
327 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_expander_report_manufacture()
333 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_expander_report_manufacture()
334 ioc->transport_cmds.smid = smid; in _transport_expander_report_manufacture()
338 data_out = dma_alloc_coherent(&ioc->pdev->dev, data_out_sz + data_in_sz, in _transport_expander_report_manufacture()
344 mpt3sas_base_free_smid(ioc, smid); in _transport_expander_report_manufacture()
363 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, in _transport_expander_report_manufacture()
366 dtransportprintk(ioc, in _transport_expander_report_manufacture()
367 ioc_info(ioc, "report_manufacture - send to sas_addr(0x%016llx)\n", in _transport_expander_report_manufacture()
369 init_completion(&ioc->transport_cmds.done); in _transport_expander_report_manufacture()
370 ioc->put_smid_default(ioc, smid); in _transport_expander_report_manufacture()
371 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_expander_report_manufacture()
373 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_expander_report_manufacture()
374 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_expander_report_manufacture()
377 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_expander_report_manufacture()
382 dtransportprintk(ioc, ioc_info(ioc, "report_manufacture - complete\n")); in _transport_expander_report_manufacture()
384 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_expander_report_manufacture()
387 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_report_manufacture()
389 dtransportprintk(ioc, in _transport_expander_report_manufacture()
390 ioc_info(ioc, "report_manufacture - reply data transfer size(%d)\n", in _transport_expander_report_manufacture()
415 dtransportprintk(ioc, in _transport_expander_report_manufacture()
416 ioc_info(ioc, "report_manufacture - no reply\n")); in _transport_expander_report_manufacture()
420 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_expander_report_manufacture()
422 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_expander_report_manufacture()
424 dma_free_coherent(&ioc->pdev->dev, data_out_sz + data_in_sz, in _transport_expander_report_manufacture()
427 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
438 _transport_delete_port(struct MPT3SAS_ADAPTER *ioc, in _transport_delete_port() argument
449 ioc->logging_level |= MPT_DEBUG_TRANSPORT; in _transport_delete_port()
451 mpt3sas_device_remove_by_sas_address(ioc, sas_address); in _transport_delete_port()
454 mpt3sas_expander_remove(ioc, sas_address); in _transport_delete_port()
455 ioc->logging_level &= ~MPT_DEBUG_TRANSPORT; in _transport_delete_port()
465 _transport_delete_phy(struct MPT3SAS_ADAPTER *ioc, in _transport_delete_phy() argument
487 _transport_add_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_port *mpt3sas_port, in _transport_add_phy() argument
510 _transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc, in _transport_add_phy_to_an_existing_port() argument
530 _transport_add_phy(ioc, mpt3sas_port, mpt3sas_phy); in _transport_add_phy_to_an_existing_port()
543 _transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc, in _transport_del_phy_from_an_existing_port() argument
560 _transport_delete_port(ioc, mpt3sas_port); in _transport_del_phy_from_an_existing_port()
562 _transport_delete_phy(ioc, mpt3sas_port, in _transport_del_phy_from_an_existing_port()
578 _transport_sanity_check(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node, in _transport_sanity_check() argument
587 _transport_del_phy_from_an_existing_port(ioc, sas_node, in _transport_sanity_check()
604 mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle, in mpt3sas_transport_port_add() argument
619 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
626 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
627 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt3sas_transport_port_add()
628 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
631 ioc_err(ioc, "%s: Could not find parent sas_address(0x%016llx)!\n", in mpt3sas_transport_port_add()
636 if ((_transport_set_identify(ioc, handle, in mpt3sas_transport_port_add()
638 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
644 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
649 _transport_sanity_check(ioc, sas_node, in mpt3sas_transport_port_add()
662 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
668 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
674 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
681 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_add()
701 sas_device = mpt3sas_get_sdev_by_addr(ioc, in mpt3sas_transport_port_add()
704 dfailprintk(ioc, in mpt3sas_transport_port_add()
705 ioc_info(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
713 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
727 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
729 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
736 _transport_expander_report_manufacture(ioc, in mpt3sas_transport_port_add()
760 mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, in mpt3sas_transport_port_remove() argument
770 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
771 sas_node = _transport_sas_node_find_by_sas_address(ioc, in mpt3sas_transport_port_remove()
774 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
787 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
797 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
801 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_remove()
808 if (!ioc->remove_host) in mpt3sas_transport_port_remove()
813 if (!ioc->remove_host) in mpt3sas_transport_port_remove()
815 ioc_info(ioc, "%s: removed: sas_addr(0x%016llx)\n", in mpt3sas_transport_port_remove()
830 mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_host_phy() argument
840 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_host_phy()
844 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_host_phy()
846 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_host_phy()
854 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_host_phy()
869 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_host_phy()
874 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_host_phy()
898 mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_expander_phy() argument
908 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_expander_phy()
912 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_expander_phy()
914 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_expander_phy()
923 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_expander_phy()
939 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_expander_phy()
944 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_expander_phy()
966 mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_transport_update_links() argument
973 if (ioc->shost_recovery || ioc->pci_error_recovery) in mpt3sas_transport_update_links()
976 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
977 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt3sas_transport_update_links()
979 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
985 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
987 _transport_set_identify(ioc, handle, in mpt3sas_transport_update_links()
989 _transport_add_phy_to_an_existing_port(ioc, sas_node, in mpt3sas_transport_update_links()
999 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_update_links()
1059 _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc, in _transport_get_expander_phy_error_log() argument
1074 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_get_expander_phy_error_log()
1075 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_get_expander_phy_error_log()
1079 mutex_lock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1081 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_get_expander_phy_error_log()
1082 ioc_err(ioc, "%s: transport_cmds in use\n", __func__); in _transport_get_expander_phy_error_log()
1086 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_get_expander_phy_error_log()
1088 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_get_expander_phy_error_log()
1092 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_get_expander_phy_error_log()
1094 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_get_expander_phy_error_log()
1099 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_get_expander_phy_error_log()
1100 ioc->transport_cmds.smid = smid; in _transport_get_expander_phy_error_log()
1104 data_out = dma_alloc_coherent(&ioc->pdev->dev, sz, &data_out_dma, in _transport_get_expander_phy_error_log()
1110 mpt3sas_base_free_smid(ioc, smid); in _transport_get_expander_phy_error_log()
1133 ioc->build_sg(ioc, psge, data_out_dma, in _transport_get_expander_phy_error_log()
1138 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1139 ioc_info(ioc, "phy_error_log - send to sas_addr(0x%016llx), phy(%d)\n", in _transport_get_expander_phy_error_log()
1142 init_completion(&ioc->transport_cmds.done); in _transport_get_expander_phy_error_log()
1143 ioc->put_smid_default(ioc, smid); in _transport_get_expander_phy_error_log()
1144 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_get_expander_phy_error_log()
1146 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_get_expander_phy_error_log()
1147 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_get_expander_phy_error_log()
1150 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_get_expander_phy_error_log()
1155 dtransportprintk(ioc, ioc_info(ioc, "phy_error_log - complete\n")); in _transport_get_expander_phy_error_log()
1157 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_get_expander_phy_error_log()
1159 mpi_reply = ioc->transport_cmds.reply; in _transport_get_expander_phy_error_log()
1161 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1162 ioc_info(ioc, "phy_error_log - reply data transfer size(%d)\n", in _transport_get_expander_phy_error_log()
1172 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1173 ioc_info(ioc, "phy_error_log - function_result(%d)\n", in _transport_get_expander_phy_error_log()
1186 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1187 ioc_info(ioc, "phy_error_log - no reply\n")); in _transport_get_expander_phy_error_log()
1191 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_get_expander_phy_error_log()
1193 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_get_expander_phy_error_log()
1195 dma_free_coherent(&ioc->pdev->dev, sz, data_out, data_out_dma); in _transport_get_expander_phy_error_log()
1197 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1211 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_get_linkerrors() local
1216 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1217 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_get_linkerrors()
1219 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1222 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1224 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_get_linkerrors()
1225 return _transport_get_expander_phy_error_log(ioc, phy); in _transport_get_linkerrors()
1228 if ((mpt3sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1, in _transport_get_linkerrors()
1230 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_get_linkerrors()
1236 ioc_info(ioc, "phy(%d), ioc_status (0x%04x), loginfo(0x%08x)\n", in _transport_get_linkerrors()
1262 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_enclosure_identifier() local
1267 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1268 sas_device = __mpt3sas_get_sdev_by_addr(ioc, in _transport_get_enclosure_identifier()
1279 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1292 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_bay_identifier() local
1297 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1298 sas_device = __mpt3sas_get_sdev_by_addr(ioc, in _transport_get_bay_identifier()
1306 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1349 _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc, in _transport_expander_phy_control() argument
1364 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_phy_control()
1365 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_expander_phy_control()
1369 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1371 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_expander_phy_control()
1372 ioc_err(ioc, "%s: transport_cmds in use\n", __func__); in _transport_expander_phy_control()
1376 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_expander_phy_control()
1378 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_expander_phy_control()
1382 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_phy_control()
1384 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_expander_phy_control()
1389 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_expander_phy_control()
1390 ioc->transport_cmds.smid = smid; in _transport_expander_phy_control()
1394 data_out = dma_alloc_coherent(&ioc->pdev->dev, sz, &data_out_dma, in _transport_expander_phy_control()
1400 mpt3sas_base_free_smid(ioc, smid); in _transport_expander_phy_control()
1428 ioc->build_sg(ioc, psge, data_out_dma, in _transport_expander_phy_control()
1433 dtransportprintk(ioc, in _transport_expander_phy_control()
1434 ioc_info(ioc, "phy_control - send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n", in _transport_expander_phy_control()
1437 init_completion(&ioc->transport_cmds.done); in _transport_expander_phy_control()
1438 ioc->put_smid_default(ioc, smid); in _transport_expander_phy_control()
1439 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_expander_phy_control()
1441 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_expander_phy_control()
1442 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_expander_phy_control()
1445 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_expander_phy_control()
1450 dtransportprintk(ioc, ioc_info(ioc, "phy_control - complete\n")); in _transport_expander_phy_control()
1452 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_expander_phy_control()
1454 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_phy_control()
1456 dtransportprintk(ioc, in _transport_expander_phy_control()
1457 ioc_info(ioc, "phy_control - reply data transfer size(%d)\n", in _transport_expander_phy_control()
1467 dtransportprintk(ioc, in _transport_expander_phy_control()
1468 ioc_info(ioc, "phy_control - function_result(%d)\n", in _transport_expander_phy_control()
1473 dtransportprintk(ioc, in _transport_expander_phy_control()
1474 ioc_info(ioc, "phy_control - no reply\n")); in _transport_expander_phy_control()
1478 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_expander_phy_control()
1480 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_expander_phy_control()
1482 dma_free_coherent(&ioc->pdev->dev, sz, data_out, in _transport_expander_phy_control()
1485 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1499 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_reset() local
1504 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1505 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_reset()
1507 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1510 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1513 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_reset()
1514 return _transport_expander_phy_control(ioc, phy, in _transport_phy_reset()
1525 if ((mpt3sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) { in _transport_phy_reset()
1526 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_reset()
1532 ioc_info(ioc, "phy(%d), ioc_status(0x%04x), loginfo(0x%08x)\n", in _transport_phy_reset()
1550 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_enable() local
1560 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1561 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_enable()
1563 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1566 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1569 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_enable()
1570 return _transport_expander_phy_control(ioc, phy, in _transport_phy_enable()
1577 sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1581 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1586 if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, in _transport_phy_enable()
1588 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1596 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1603 for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1606 …ioc_err(ioc, "discovery is active on port = %d, phy = %d: unable to enable/disable phys, try again… in _transport_phy_enable()
1618 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1622 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1627 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_enable()
1629 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1637 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1644 for (i = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1663 mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, sz); in _transport_phy_enable()
1687 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_speed() local
1697 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1698 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_speed()
1700 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1703 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1716 if (phy->identify.sas_address != ioc->sas_hba.sas_address) { in _transport_phy_speed()
1719 return _transport_expander_phy_control(ioc, phy, in _transport_phy_speed()
1726 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_speed()
1730 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1735 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_speed()
1737 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1745 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1751 for (i = 0; i < ioc->sas_hba.num_phys; i++) { in _transport_phy_speed()
1754 (ioc->sas_hba.phy[i].phy->minimum_linkrate + in _transport_phy_speed()
1755 (ioc->sas_hba.phy[i].phy->maximum_linkrate << 4)); in _transport_phy_speed()
1763 if (mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, in _transport_phy_speed()
1765 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1775 if (!mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0, in _transport_phy_speed()
1837 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _transport_smp_handler() local
1851 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_smp_handler()
1852 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_smp_handler()
1857 rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex); in _transport_smp_handler()
1861 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_smp_handler()
1862 ioc_err(ioc, "%s: transport_cmds in use\n", in _transport_smp_handler()
1867 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_smp_handler()
1869 rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->request_payload, in _transport_smp_handler()
1879 rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->reply_payload, in _transport_smp_handler()
1884 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_smp_handler()
1888 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_smp_handler()
1890 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_smp_handler()
1896 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_smp_handler()
1897 ioc->transport_cmds.smid = smid; in _transport_smp_handler()
1904 cpu_to_le64(ioc->sas_hba.sas_address); in _transport_smp_handler()
1908 ioc->build_sg(ioc, psge, dma_addr_out, dma_len_out - 4, dma_addr_in, in _transport_smp_handler()
1911 dtransportprintk(ioc, in _transport_smp_handler()
1912 ioc_info(ioc, "%s: sending smp request\n", __func__)); in _transport_smp_handler()
1914 init_completion(&ioc->transport_cmds.done); in _transport_smp_handler()
1915 ioc->put_smid_default(ioc, smid); in _transport_smp_handler()
1916 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_smp_handler()
1918 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_smp_handler()
1919 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_smp_handler()
1922 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) { in _transport_smp_handler()
1923 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_smp_handler()
1929 dtransportprintk(ioc, ioc_info(ioc, "%s - complete\n", __func__)); in _transport_smp_handler()
1931 if (!(ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID)) { in _transport_smp_handler()
1932 dtransportprintk(ioc, in _transport_smp_handler()
1933 ioc_info(ioc, "%s: no reply\n", __func__)); in _transport_smp_handler()
1938 mpi_reply = ioc->transport_cmds.reply; in _transport_smp_handler()
1940 dtransportprintk(ioc, in _transport_smp_handler()
1941 ioc_info(ioc, "%s: reply data transfer size(%d)\n", in _transport_smp_handler()
1957 _transport_unmap_smp_buffer(&ioc->pdev->dev, &job->reply_payload, in _transport_smp_handler()
1960 _transport_unmap_smp_buffer(&ioc->pdev->dev, &job->request_payload, in _transport_smp_handler()
1963 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_smp_handler()
1964 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_smp_handler()