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()
150 __func__, ioc->name); in _transport_set_identify()
154 if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0, in _transport_set_identify()
157 ioc->name, __FILE__, __LINE__, __func__); in _transport_set_identify()
166 ioc->name, handle, ioc_status, in _transport_set_identify()
233 mpt3sas_transport_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, in mpt3sas_transport_done() argument
238 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply); in mpt3sas_transport_done()
239 if (ioc->transport_cmds.status == MPT3_CMD_NOT_USED) in mpt3sas_transport_done()
241 if (ioc->transport_cmds.smid != smid) in mpt3sas_transport_done()
243 ioc->transport_cmds.status |= MPT3_CMD_COMPLETE; in mpt3sas_transport_done()
245 memcpy(ioc->transport_cmds.reply, mpi_reply, in mpt3sas_transport_done()
247 ioc->transport_cmds.status |= MPT3_CMD_REPLY_VALID; in mpt3sas_transport_done()
249 ioc->transport_cmds.status &= ~MPT3_CMD_PENDING; in mpt3sas_transport_done()
250 complete(&ioc->transport_cmds.done); in mpt3sas_transport_done()
293 _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc, in _transport_expander_report_manufacture() argument
313 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_report_manufacture()
315 __func__, ioc->name); in _transport_expander_report_manufacture()
319 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
321 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_expander_report_manufacture()
323 ioc->name, __func__); in _transport_expander_report_manufacture()
327 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_expander_report_manufacture()
330 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_expander_report_manufacture()
335 ioc->name, __func__); in _transport_expander_report_manufacture()
340 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_expander_report_manufacture()
343 ioc->name, __func__, wait_state_count); in _transport_expander_report_manufacture()
347 ioc->name, __func__); in _transport_expander_report_manufacture()
349 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_report_manufacture()
352 ioc->name, __func__); in _transport_expander_report_manufacture()
358 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_expander_report_manufacture()
359 ioc->transport_cmds.smid = smid; in _transport_expander_report_manufacture()
363 data_out = pci_alloc_consistent(ioc->pdev, data_out_sz + data_in_sz, in _transport_expander_report_manufacture()
370 mpt3sas_base_free_smid(ioc, smid); in _transport_expander_report_manufacture()
389 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, in _transport_expander_report_manufacture()
392 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_report_manufacture()
394 ioc->name, (unsigned long long)sas_address)); in _transport_expander_report_manufacture()
395 init_completion(&ioc->transport_cmds.done); in _transport_expander_report_manufacture()
396 mpt3sas_base_put_smid_default(ioc, smid); in _transport_expander_report_manufacture()
397 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_expander_report_manufacture()
400 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_expander_report_manufacture()
402 ioc->name, __func__); in _transport_expander_report_manufacture()
405 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_expander_report_manufacture()
410 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_report_manufacture()
411 "report_manufacture - complete\n", ioc->name)); in _transport_expander_report_manufacture()
413 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_expander_report_manufacture()
416 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_report_manufacture()
418 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_report_manufacture()
420 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_expander_report_manufacture()
444 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_report_manufacture()
445 "report_manufacture - no reply\n", ioc->name)); in _transport_expander_report_manufacture()
449 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_expander_report_manufacture()
452 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_expander_report_manufacture()
454 pci_free_consistent(ioc->pdev, data_out_sz + data_in_sz, in _transport_expander_report_manufacture()
457 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
470 _transport_delete_port(struct MPT3SAS_ADAPTER *ioc, in _transport_delete_port() argument
481 ioc->logging_level |= MPT_DEBUG_TRANSPORT; in _transport_delete_port()
483 mpt3sas_device_remove_by_sas_address(ioc, sas_address); in _transport_delete_port()
486 mpt3sas_expander_remove(ioc, sas_address); in _transport_delete_port()
487 ioc->logging_level &= ~MPT_DEBUG_TRANSPORT; in _transport_delete_port()
499 _transport_delete_phy(struct MPT3SAS_ADAPTER *ioc, in _transport_delete_phy() argument
523 _transport_add_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_port *mpt3sas_port, in _transport_add_phy() argument
548 _transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc, in _transport_add_phy_to_an_existing_port() argument
568 _transport_add_phy(ioc, mpt3sas_port, mpt3sas_phy); in _transport_add_phy_to_an_existing_port()
583 _transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc, in _transport_del_phy_from_an_existing_port() argument
600 _transport_delete_port(ioc, mpt3sas_port); in _transport_del_phy_from_an_existing_port()
602 _transport_delete_phy(ioc, mpt3sas_port, in _transport_del_phy_from_an_existing_port()
618 _transport_sanity_check(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node, in _transport_sanity_check() argument
627 _transport_del_phy_from_an_existing_port(ioc, sas_node, in _transport_sanity_check()
644 mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle, in mpt3sas_transport_port_add() argument
659 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
665 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
666 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt3sas_transport_port_add()
667 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
672 ioc->name, __func__, (unsigned long long)sas_address); in mpt3sas_transport_port_add()
676 if ((_transport_set_identify(ioc, handle, in mpt3sas_transport_port_add()
679 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
685 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
689 _transport_sanity_check(ioc, sas_node, in mpt3sas_transport_port_add()
703 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
710 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
716 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_add()
736 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
738 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_add()
744 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
746 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
753 _transport_expander_report_manufacture(ioc, in mpt3sas_transport_port_add()
779 mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, in mpt3sas_transport_port_remove() argument
789 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
790 sas_node = _transport_sas_node_find_by_sas_address(ioc, in mpt3sas_transport_port_remove()
793 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
806 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
816 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
820 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_remove()
844 mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_host_phy() argument
855 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_host_phy()
858 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_host_phy()
861 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_host_phy()
868 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_host_phy()
884 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_host_phy()
888 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_host_phy()
912 mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_expander_phy() argument
923 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_expander_phy()
926 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_expander_phy()
929 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_expander_phy()
937 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_expander_phy()
954 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_expander_phy()
958 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_expander_phy()
982 mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_transport_update_links() argument
989 if (ioc->shost_recovery || ioc->pci_error_recovery) in mpt3sas_transport_update_links()
992 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
993 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt3sas_transport_update_links()
995 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1001 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1003 _transport_set_identify(ioc, handle, in mpt3sas_transport_update_links()
1005 _transport_add_phy_to_an_existing_port(ioc, sas_node, in mpt3sas_transport_update_links()
1015 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_update_links()
1075 _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc, in _transport_get_expander_phy_error_log() argument
1093 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_get_expander_phy_error_log()
1095 __func__, ioc->name); in _transport_get_expander_phy_error_log()
1099 mutex_lock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1101 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_get_expander_phy_error_log()
1103 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1107 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_get_expander_phy_error_log()
1110 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_get_expander_phy_error_log()
1115 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1120 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_get_expander_phy_error_log()
1123 ioc->name, __func__, wait_state_count); in _transport_get_expander_phy_error_log()
1127 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1129 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_get_expander_phy_error_log()
1132 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1137 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_get_expander_phy_error_log()
1138 ioc->transport_cmds.smid = smid; in _transport_get_expander_phy_error_log()
1142 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma); in _transport_get_expander_phy_error_log()
1147 mpt3sas_base_free_smid(ioc, smid); in _transport_get_expander_phy_error_log()
1170 ioc->build_sg(ioc, psge, data_out_dma, in _transport_get_expander_phy_error_log()
1175 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1177 ioc->name, (unsigned long long)phy->identify.sas_address, in _transport_get_expander_phy_error_log()
1179 init_completion(&ioc->transport_cmds.done); in _transport_get_expander_phy_error_log()
1180 mpt3sas_base_put_smid_default(ioc, smid); in _transport_get_expander_phy_error_log()
1181 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_get_expander_phy_error_log()
1184 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_get_expander_phy_error_log()
1186 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1189 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_get_expander_phy_error_log()
1194 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1195 "phy_error_log - complete\n", ioc->name)); in _transport_get_expander_phy_error_log()
1197 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_get_expander_phy_error_log()
1199 mpi_reply = ioc->transport_cmds.reply; in _transport_get_expander_phy_error_log()
1201 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1203 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_get_expander_phy_error_log()
1212 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1214 ioc->name, phy_error_log_reply->function_result)); in _transport_get_expander_phy_error_log()
1226 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1227 "phy_error_log - no reply\n", ioc->name)); in _transport_get_expander_phy_error_log()
1231 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_get_expander_phy_error_log()
1234 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_get_expander_phy_error_log()
1236 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma); in _transport_get_expander_phy_error_log()
1238 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1252 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_get_linkerrors() local
1257 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1258 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_get_linkerrors()
1260 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1263 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1265 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_get_linkerrors()
1266 return _transport_get_expander_phy_error_log(ioc, phy); in _transport_get_linkerrors()
1269 if ((mpt3sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1, in _transport_get_linkerrors()
1272 ioc->name, __FILE__, __LINE__, __func__); in _transport_get_linkerrors()
1279 ioc->name, phy->number, in _transport_get_linkerrors()
1303 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_enclosure_identifier() local
1308 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1309 sas_device = mpt3sas_scsih_sas_device_find_by_sas_address(ioc, in _transport_get_enclosure_identifier()
1318 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1331 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_bay_identifier() local
1336 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1337 sas_device = mpt3sas_scsih_sas_device_find_by_sas_address(ioc, in _transport_get_bay_identifier()
1343 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1385 _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc, in _transport_expander_phy_control() argument
1404 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_phy_control()
1406 __func__, ioc->name); in _transport_expander_phy_control()
1410 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1412 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_expander_phy_control()
1414 ioc->name, __func__); in _transport_expander_phy_control()
1418 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_expander_phy_control()
1421 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_expander_phy_control()
1426 ioc->name, __func__); in _transport_expander_phy_control()
1431 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_expander_phy_control()
1434 ioc->name, __func__, wait_state_count); in _transport_expander_phy_control()
1438 ioc->name, __func__); in _transport_expander_phy_control()
1440 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_phy_control()
1443 ioc->name, __func__); in _transport_expander_phy_control()
1448 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_expander_phy_control()
1449 ioc->transport_cmds.smid = smid; in _transport_expander_phy_control()
1453 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma); in _transport_expander_phy_control()
1458 mpt3sas_base_free_smid(ioc, smid); in _transport_expander_phy_control()
1490 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_phy_control()
1494 psge += ioc->sge_size; in _transport_expander_phy_control()
1501 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_phy_control()
1505 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1507 ioc->name, (unsigned long long)phy->identify.sas_address, in _transport_expander_phy_control()
1509 init_completion(&ioc->transport_cmds.done); in _transport_expander_phy_control()
1510 mpt3sas_base_put_smid_default(ioc, smid); in _transport_expander_phy_control()
1511 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_expander_phy_control()
1514 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_expander_phy_control()
1516 ioc->name, __func__); in _transport_expander_phy_control()
1519 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_expander_phy_control()
1524 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1525 "phy_control - complete\n", ioc->name)); in _transport_expander_phy_control()
1527 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_expander_phy_control()
1529 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_phy_control()
1531 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1533 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_expander_phy_control()
1542 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1544 ioc->name, phy_control_reply->function_result)); in _transport_expander_phy_control()
1548 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1549 "phy_control - no reply\n", ioc->name)); in _transport_expander_phy_control()
1553 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_expander_phy_control()
1556 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_expander_phy_control()
1558 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma); in _transport_expander_phy_control()
1560 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1574 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_reset() local
1579 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1580 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_reset()
1582 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1585 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1588 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_reset()
1589 return _transport_expander_phy_control(ioc, phy, in _transport_phy_reset()
1600 if ((mpt3sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) { in _transport_phy_reset()
1602 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_reset()
1609 ioc->name, phy->number, le16_to_cpu(mpi_reply.IOCStatus), in _transport_phy_reset()
1626 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_enable() local
1636 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1637 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_enable()
1639 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1642 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1645 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_enable()
1646 return _transport_expander_phy_control(ioc, phy, in _transport_phy_enable()
1653 sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1658 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1662 if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, in _transport_phy_enable()
1665 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1673 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1679 for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1684 "phys, try again later!\n", ioc->name, in _transport_phy_enable()
1696 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1701 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1705 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_enable()
1708 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1716 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1722 for (i = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1741 mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, sz); in _transport_phy_enable()
1764 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_speed() local
1774 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1775 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_speed()
1777 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1780 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1793 if (phy->identify.sas_address != ioc->sas_hba.sas_address) { in _transport_phy_speed()
1796 return _transport_expander_phy_control(ioc, phy, in _transport_phy_speed()
1803 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_speed()
1808 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1812 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_speed()
1815 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1823 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1828 for (i = 0; i < ioc->sas_hba.num_phys; i++) { in _transport_phy_speed()
1831 (ioc->sas_hba.phy[i].phy->minimum_linkrate + in _transport_phy_speed()
1832 (ioc->sas_hba.phy[i].phy->maximum_linkrate << 4)); in _transport_phy_speed()
1840 if (mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, in _transport_phy_speed()
1843 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1852 if (!mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0, in _transport_phy_speed()
1882 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _transport_smp_handler() local
1904 ioc->name, __func__); in _transport_smp_handler()
1908 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_smp_handler()
1910 __func__, ioc->name); in _transport_smp_handler()
1914 rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex); in _transport_smp_handler()
1918 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_smp_handler()
1919 pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc->name, in _transport_smp_handler()
1924 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_smp_handler()
1931 pci_addr_out = pci_alloc_consistent(ioc->pdev, in _transport_smp_handler()
1935 ioc->name, __func__); in _transport_smp_handler()
1947 dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio), in _transport_smp_handler()
1951 ioc->name, __func__); in _transport_smp_handler()
1960 pci_addr_in = pci_alloc_consistent(ioc->pdev, blk_rq_bytes(rsp), in _transport_smp_handler()
1964 ioc->name, __func__); in _transport_smp_handler()
1969 dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), in _transport_smp_handler()
1973 ioc->name, __func__); in _transport_smp_handler()
1980 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_smp_handler()
1985 ioc->name, __func__); in _transport_smp_handler()
1990 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_smp_handler()
1993 ioc->name, __func__, wait_state_count); in _transport_smp_handler()
1997 ioc->name, __func__); in _transport_smp_handler()
1999 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_smp_handler()
2002 ioc->name, __func__); in _transport_smp_handler()
2008 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_smp_handler()
2009 ioc->transport_cmds.smid = smid; in _transport_smp_handler()
2016 cpu_to_le64(ioc->sas_hba.sas_address); in _transport_smp_handler()
2021 ioc->build_sg(ioc, psge, pci_dma_out, (blk_rq_bytes(req) - 4), in _transport_smp_handler()
2024 ioc->build_sg(ioc, psge, dma_addr_out, (blk_rq_bytes(req) - 4), in _transport_smp_handler()
2027 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2028 "%s - sending smp request\n", ioc->name, __func__)); in _transport_smp_handler()
2030 init_completion(&ioc->transport_cmds.done); in _transport_smp_handler()
2031 mpt3sas_base_put_smid_default(ioc, smid); in _transport_smp_handler()
2032 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_smp_handler()
2035 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_smp_handler()
2037 __func__, ioc->name); in _transport_smp_handler()
2040 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_smp_handler()
2045 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2046 "%s - complete\n", ioc->name, __func__)); in _transport_smp_handler()
2048 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_smp_handler()
2050 mpi_reply = ioc->transport_cmds.reply; in _transport_smp_handler()
2052 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2054 ioc->name, __func__, in _transport_smp_handler()
2085 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2086 "%s - no reply\n", ioc->name, __func__)); in _transport_smp_handler()
2092 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_smp_handler()
2099 pci_unmap_single(ioc->pdev, dma_addr_out, blk_rq_bytes(req), in _transport_smp_handler()
2102 pci_unmap_single(ioc->pdev, dma_addr_in, blk_rq_bytes(rsp), in _transport_smp_handler()
2107 pci_free_consistent(ioc->pdev, blk_rq_bytes(req), pci_addr_out, in _transport_smp_handler()
2111 pci_free_consistent(ioc->pdev, blk_rq_bytes(rsp), pci_addr_in, in _transport_smp_handler()
2115 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_smp_handler()
2116 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_smp_handler()