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
660 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
666 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
667 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt3sas_transport_port_add()
668 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
673 ioc->name, __func__, (unsigned long long)sas_address); in mpt3sas_transport_port_add()
677 if ((_transport_set_identify(ioc, handle, in mpt3sas_transport_port_add()
680 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
686 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
690 _transport_sanity_check(ioc, sas_node, in mpt3sas_transport_port_add()
704 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
711 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
717 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_add()
737 sas_device = mpt3sas_get_sdev_by_addr(ioc, in mpt3sas_transport_port_add()
740 dfailprintk(ioc, printk(MPT3SAS_FMT in mpt3sas_transport_port_add()
742 ioc->name, __FILE__, __LINE__, __func__)); in mpt3sas_transport_port_add()
750 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_port_add()
758 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_add()
764 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
766 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
773 _transport_expander_report_manufacture(ioc, in mpt3sas_transport_port_add()
799 mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, in mpt3sas_transport_port_remove() argument
809 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
810 sas_node = _transport_sas_node_find_by_sas_address(ioc, in mpt3sas_transport_port_remove()
813 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
826 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
836 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
840 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_remove()
864 mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_host_phy() argument
875 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_host_phy()
878 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_host_phy()
881 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_host_phy()
888 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_host_phy()
904 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_host_phy()
908 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_host_phy()
932 mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_expander_phy() argument
943 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_expander_phy()
946 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_expander_phy()
949 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_expander_phy()
957 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_expander_phy()
974 ioc->name, __FILE__, __LINE__, __func__); in mpt3sas_transport_add_expander_phy()
978 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_expander_phy()
1002 mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_transport_update_links() argument
1009 if (ioc->shost_recovery || ioc->pci_error_recovery) in mpt3sas_transport_update_links()
1012 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1013 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt3sas_transport_update_links()
1015 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1021 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1023 _transport_set_identify(ioc, handle, in mpt3sas_transport_update_links()
1025 _transport_add_phy_to_an_existing_port(ioc, sas_node, in mpt3sas_transport_update_links()
1035 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_update_links()
1095 _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc, in _transport_get_expander_phy_error_log() argument
1113 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_get_expander_phy_error_log()
1115 __func__, ioc->name); in _transport_get_expander_phy_error_log()
1119 mutex_lock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1121 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_get_expander_phy_error_log()
1123 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1127 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_get_expander_phy_error_log()
1130 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_get_expander_phy_error_log()
1135 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1140 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_get_expander_phy_error_log()
1143 ioc->name, __func__, wait_state_count); in _transport_get_expander_phy_error_log()
1147 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1149 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_get_expander_phy_error_log()
1152 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1157 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_get_expander_phy_error_log()
1158 ioc->transport_cmds.smid = smid; in _transport_get_expander_phy_error_log()
1162 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma); in _transport_get_expander_phy_error_log()
1167 mpt3sas_base_free_smid(ioc, smid); in _transport_get_expander_phy_error_log()
1190 ioc->build_sg(ioc, psge, data_out_dma, in _transport_get_expander_phy_error_log()
1195 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1197 ioc->name, (unsigned long long)phy->identify.sas_address, in _transport_get_expander_phy_error_log()
1199 init_completion(&ioc->transport_cmds.done); in _transport_get_expander_phy_error_log()
1200 mpt3sas_base_put_smid_default(ioc, smid); in _transport_get_expander_phy_error_log()
1201 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_get_expander_phy_error_log()
1204 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_get_expander_phy_error_log()
1206 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1209 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_get_expander_phy_error_log()
1214 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1215 "phy_error_log - complete\n", ioc->name)); in _transport_get_expander_phy_error_log()
1217 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_get_expander_phy_error_log()
1219 mpi_reply = ioc->transport_cmds.reply; in _transport_get_expander_phy_error_log()
1221 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1223 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_get_expander_phy_error_log()
1232 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1234 ioc->name, phy_error_log_reply->function_result)); in _transport_get_expander_phy_error_log()
1246 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_get_expander_phy_error_log()
1247 "phy_error_log - no reply\n", ioc->name)); in _transport_get_expander_phy_error_log()
1251 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_get_expander_phy_error_log()
1254 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_get_expander_phy_error_log()
1256 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma); in _transport_get_expander_phy_error_log()
1258 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1272 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_get_linkerrors() local
1277 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1278 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_get_linkerrors()
1280 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1283 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1285 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_get_linkerrors()
1286 return _transport_get_expander_phy_error_log(ioc, phy); in _transport_get_linkerrors()
1289 if ((mpt3sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1, in _transport_get_linkerrors()
1292 ioc->name, __FILE__, __LINE__, __func__); in _transport_get_linkerrors()
1299 ioc->name, phy->number, in _transport_get_linkerrors()
1323 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_enclosure_identifier() local
1328 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1329 sas_device = __mpt3sas_get_sdev_by_addr(ioc, in _transport_get_enclosure_identifier()
1340 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1353 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_bay_identifier() local
1358 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1359 sas_device = __mpt3sas_get_sdev_by_addr(ioc, in _transport_get_bay_identifier()
1367 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1409 _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc, in _transport_expander_phy_control() argument
1428 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_phy_control()
1430 __func__, ioc->name); in _transport_expander_phy_control()
1434 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1436 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_expander_phy_control()
1438 ioc->name, __func__); in _transport_expander_phy_control()
1442 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_expander_phy_control()
1445 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_expander_phy_control()
1450 ioc->name, __func__); in _transport_expander_phy_control()
1455 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_expander_phy_control()
1458 ioc->name, __func__, wait_state_count); in _transport_expander_phy_control()
1462 ioc->name, __func__); in _transport_expander_phy_control()
1464 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_phy_control()
1467 ioc->name, __func__); in _transport_expander_phy_control()
1472 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_expander_phy_control()
1473 ioc->transport_cmds.smid = smid; in _transport_expander_phy_control()
1477 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma); in _transport_expander_phy_control()
1482 mpt3sas_base_free_smid(ioc, smid); in _transport_expander_phy_control()
1514 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_phy_control()
1518 psge += ioc->sge_size; in _transport_expander_phy_control()
1525 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_phy_control()
1529 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1531 ioc->name, (unsigned long long)phy->identify.sas_address, in _transport_expander_phy_control()
1533 init_completion(&ioc->transport_cmds.done); in _transport_expander_phy_control()
1534 mpt3sas_base_put_smid_default(ioc, smid); in _transport_expander_phy_control()
1535 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_expander_phy_control()
1538 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_expander_phy_control()
1540 ioc->name, __func__); in _transport_expander_phy_control()
1543 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_expander_phy_control()
1548 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1549 "phy_control - complete\n", ioc->name)); in _transport_expander_phy_control()
1551 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_expander_phy_control()
1553 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_phy_control()
1555 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1557 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_expander_phy_control()
1566 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1568 ioc->name, phy_control_reply->function_result)); in _transport_expander_phy_control()
1572 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_expander_phy_control()
1573 "phy_control - no reply\n", ioc->name)); in _transport_expander_phy_control()
1577 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_expander_phy_control()
1580 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_expander_phy_control()
1582 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma); in _transport_expander_phy_control()
1584 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1598 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_reset() local
1603 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1604 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_reset()
1606 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1609 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1612 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_reset()
1613 return _transport_expander_phy_control(ioc, phy, in _transport_phy_reset()
1624 if ((mpt3sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) { in _transport_phy_reset()
1626 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_reset()
1633 ioc->name, phy->number, le16_to_cpu(mpi_reply.IOCStatus), in _transport_phy_reset()
1650 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_enable() local
1660 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1661 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_enable()
1663 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1666 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1669 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_enable()
1670 return _transport_expander_phy_control(ioc, phy, in _transport_phy_enable()
1677 sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1682 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1686 if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, in _transport_phy_enable()
1689 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1697 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1703 for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1708 "phys, try again later!\n", ioc->name, in _transport_phy_enable()
1720 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1725 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1729 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_enable()
1732 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1740 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1746 for (i = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1765 mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, sz); in _transport_phy_enable()
1788 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_speed() local
1798 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1799 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_speed()
1801 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1804 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1817 if (phy->identify.sas_address != ioc->sas_hba.sas_address) { in _transport_phy_speed()
1820 return _transport_expander_phy_control(ioc, phy, in _transport_phy_speed()
1827 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_speed()
1832 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1836 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_speed()
1839 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1847 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1852 for (i = 0; i < ioc->sas_hba.num_phys; i++) { in _transport_phy_speed()
1855 (ioc->sas_hba.phy[i].phy->minimum_linkrate + in _transport_phy_speed()
1856 (ioc->sas_hba.phy[i].phy->maximum_linkrate << 4)); in _transport_phy_speed()
1864 if (mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, in _transport_phy_speed()
1867 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1876 if (!mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0, in _transport_phy_speed()
1906 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _transport_smp_handler() local
1928 ioc->name, __func__); in _transport_smp_handler()
1932 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_smp_handler()
1934 __func__, ioc->name); in _transport_smp_handler()
1938 rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex); in _transport_smp_handler()
1942 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_smp_handler()
1943 pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc->name, in _transport_smp_handler()
1948 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_smp_handler()
1955 pci_addr_out = pci_alloc_consistent(ioc->pdev, in _transport_smp_handler()
1959 ioc->name, __func__); in _transport_smp_handler()
1971 dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio), in _transport_smp_handler()
1973 if (pci_dma_mapping_error(ioc->pdev, dma_addr_out)) { in _transport_smp_handler()
1975 ioc->name, __func__); in _transport_smp_handler()
1984 pci_addr_in = pci_alloc_consistent(ioc->pdev, blk_rq_bytes(rsp), in _transport_smp_handler()
1988 ioc->name, __func__); in _transport_smp_handler()
1993 dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), in _transport_smp_handler()
1995 if (pci_dma_mapping_error(ioc->pdev, dma_addr_in)) { in _transport_smp_handler()
1997 ioc->name, __func__); in _transport_smp_handler()
2004 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_smp_handler()
2009 ioc->name, __func__); in _transport_smp_handler()
2014 ioc_state = mpt3sas_base_get_iocstate(ioc, 1); in _transport_smp_handler()
2017 ioc->name, __func__, wait_state_count); in _transport_smp_handler()
2021 ioc->name, __func__); in _transport_smp_handler()
2023 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_smp_handler()
2026 ioc->name, __func__); in _transport_smp_handler()
2032 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_smp_handler()
2033 ioc->transport_cmds.smid = smid; in _transport_smp_handler()
2040 cpu_to_le64(ioc->sas_hba.sas_address); in _transport_smp_handler()
2045 ioc->build_sg(ioc, psge, pci_dma_out, (blk_rq_bytes(req) - 4), in _transport_smp_handler()
2048 ioc->build_sg(ioc, psge, dma_addr_out, (blk_rq_bytes(req) - 4), in _transport_smp_handler()
2051 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2052 "%s - sending smp request\n", ioc->name, __func__)); in _transport_smp_handler()
2054 init_completion(&ioc->transport_cmds.done); in _transport_smp_handler()
2055 mpt3sas_base_put_smid_default(ioc, smid); in _transport_smp_handler()
2056 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_smp_handler()
2059 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_smp_handler()
2061 __func__, ioc->name); in _transport_smp_handler()
2064 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_smp_handler()
2069 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2070 "%s - complete\n", ioc->name, __func__)); in _transport_smp_handler()
2072 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_smp_handler()
2074 mpi_reply = ioc->transport_cmds.reply; in _transport_smp_handler()
2076 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2078 ioc->name, __func__, in _transport_smp_handler()
2109 dtransportprintk(ioc, pr_info(MPT3SAS_FMT in _transport_smp_handler()
2110 "%s - no reply\n", ioc->name, __func__)); in _transport_smp_handler()
2116 mpt3sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_smp_handler()
2123 pci_unmap_single(ioc->pdev, dma_addr_out, blk_rq_bytes(req), in _transport_smp_handler()
2126 pci_unmap_single(ioc->pdev, dma_addr_in, blk_rq_bytes(rsp), in _transport_smp_handler()
2131 pci_free_consistent(ioc->pdev, blk_rq_bytes(req), pci_addr_out, in _transport_smp_handler()
2135 pci_free_consistent(ioc->pdev, blk_rq_bytes(rsp), pci_addr_in, in _transport_smp_handler()
2139 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_smp_handler()
2140 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_smp_handler()