Lines Matching refs:ioc

73 _transport_sas_node_find_by_sas_address(struct MPT2SAS_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 mpt2sas_scsih_expander_find_by_sas_address(ioc, in _transport_sas_node_find_by_sas_address()
136 _transport_set_identify(struct MPT2SAS_ADAPTER *ioc, u16 handle, in _transport_set_identify() argument
144 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_set_identify()
146 __func__, ioc->name); in _transport_set_identify()
150 if ((mpt2sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0, in _transport_set_identify()
154 ioc->name, __FILE__, __LINE__, __func__); in _transport_set_identify()
162 "\nfailure at %s:%d/%s()!\n", ioc->name, handle, ioc_status, in _transport_set_identify()
229 mpt2sas_transport_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index, in mpt2sas_transport_done() argument
234 mpi_reply = mpt2sas_base_get_reply_virt_addr(ioc, reply); in mpt2sas_transport_done()
235 if (ioc->transport_cmds.status == MPT2_CMD_NOT_USED) in mpt2sas_transport_done()
237 if (ioc->transport_cmds.smid != smid) in mpt2sas_transport_done()
239 ioc->transport_cmds.status |= MPT2_CMD_COMPLETE; in mpt2sas_transport_done()
241 memcpy(ioc->transport_cmds.reply, mpi_reply, in mpt2sas_transport_done()
243 ioc->transport_cmds.status |= MPT2_CMD_REPLY_VALID; in mpt2sas_transport_done()
245 ioc->transport_cmds.status &= ~MPT2_CMD_PENDING; in mpt2sas_transport_done()
246 complete(&ioc->transport_cmds.done); in mpt2sas_transport_done()
289 _transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc, in _transport_expander_report_manufacture() argument
308 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_report_manufacture()
310 __func__, ioc->name); in _transport_expander_report_manufacture()
314 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
316 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) { in _transport_expander_report_manufacture()
318 ioc->name, __func__); in _transport_expander_report_manufacture()
322 ioc->transport_cmds.status = MPT2_CMD_PENDING; in _transport_expander_report_manufacture()
325 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_expander_report_manufacture()
330 ioc->name, __func__); in _transport_expander_report_manufacture()
335 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_expander_report_manufacture()
337 "operational state(count=%d)\n", ioc->name, in _transport_expander_report_manufacture()
342 ioc->name, __func__); in _transport_expander_report_manufacture()
344 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_report_manufacture()
347 ioc->name, __func__); in _transport_expander_report_manufacture()
353 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _transport_expander_report_manufacture()
354 ioc->transport_cmds.smid = smid; in _transport_expander_report_manufacture()
357 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma); in _transport_expander_report_manufacture()
363 mpt2sas_base_free_smid(ioc, smid); in _transport_expander_report_manufacture()
387 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_report_manufacture()
391 psge += ioc->sge_size; in _transport_expander_report_manufacture()
398 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_report_manufacture()
402 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "report_manufacture - " in _transport_expander_report_manufacture()
403 "send to sas_addr(0x%016llx)\n", ioc->name, in _transport_expander_report_manufacture()
405 init_completion(&ioc->transport_cmds.done); in _transport_expander_report_manufacture()
406 mpt2sas_base_put_smid_default(ioc, smid); in _transport_expander_report_manufacture()
407 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_expander_report_manufacture()
410 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) { in _transport_expander_report_manufacture()
412 ioc->name, __func__); in _transport_expander_report_manufacture()
415 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET)) in _transport_expander_report_manufacture()
420 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "report_manufacture - " in _transport_expander_report_manufacture()
421 "complete\n", ioc->name)); in _transport_expander_report_manufacture()
423 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) { in _transport_expander_report_manufacture()
426 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_report_manufacture()
428 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_expander_report_manufacture()
430 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_expander_report_manufacture()
454 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_expander_report_manufacture()
455 "report_manufacture - no reply\n", ioc->name)); in _transport_expander_report_manufacture()
459 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_expander_report_manufacture()
462 ioc->transport_cmds.status = MPT2_CMD_NOT_USED; in _transport_expander_report_manufacture()
464 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma); in _transport_expander_report_manufacture()
466 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
478 _transport_delete_port(struct MPT2SAS_ADAPTER *ioc, in _transport_delete_port() argument
489 ioc->logging_level |= MPT_DEBUG_TRANSPORT; in _transport_delete_port()
491 mpt2sas_device_remove_by_sas_address(ioc, sas_address); in _transport_delete_port()
494 mpt2sas_expander_remove(ioc, sas_address); in _transport_delete_port()
495 ioc->logging_level &= ~MPT_DEBUG_TRANSPORT; in _transport_delete_port()
507 _transport_delete_phy(struct MPT2SAS_ADAPTER *ioc, in _transport_delete_phy() argument
531 _transport_add_phy(struct MPT2SAS_ADAPTER *ioc, struct _sas_port *mpt2sas_port, in _transport_add_phy() argument
556 _transport_add_phy_to_an_existing_port(struct MPT2SAS_ADAPTER *ioc, in _transport_add_phy_to_an_existing_port() argument
575 _transport_add_phy(ioc, mpt2sas_port, mpt2sas_phy); in _transport_add_phy_to_an_existing_port()
590 _transport_del_phy_from_an_existing_port(struct MPT2SAS_ADAPTER *ioc, in _transport_del_phy_from_an_existing_port() argument
606 _transport_delete_port(ioc, mpt2sas_port); in _transport_del_phy_from_an_existing_port()
608 _transport_delete_phy(ioc, mpt2sas_port, in _transport_del_phy_from_an_existing_port()
624 _transport_sanity_check(struct MPT2SAS_ADAPTER *ioc, struct _sas_node *sas_node, in _transport_sanity_check() argument
633 _transport_del_phy_from_an_existing_port(ioc, sas_node, in _transport_sanity_check()
650 mpt2sas_transport_port_add(struct MPT2SAS_ADAPTER *ioc, u16 handle, in mpt2sas_transport_port_add() argument
665 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_port_add()
671 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_add()
672 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt2sas_transport_port_add()
673 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_add()
677 "parent sas_address(0x%016llx)!\n", ioc->name, in mpt2sas_transport_port_add()
682 if ((_transport_set_identify(ioc, handle, in mpt2sas_transport_port_add()
685 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_port_add()
691 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_port_add()
695 _transport_sanity_check(ioc, sas_node, in mpt2sas_transport_port_add()
709 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_port_add()
716 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_port_add()
722 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt2sas_transport_port_add()
742 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_port_add()
744 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt2sas_transport_port_add()
750 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_add()
752 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_add()
759 _transport_expander_report_manufacture(ioc, in mpt2sas_transport_port_add()
786 mpt2sas_transport_port_remove(struct MPT2SAS_ADAPTER *ioc, u64 sas_address, in mpt2sas_transport_port_remove() argument
796 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_remove()
797 sas_node = _transport_sas_node_find_by_sas_address(ioc, in mpt2sas_transport_port_remove()
800 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_remove()
813 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_remove()
823 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt2sas_transport_port_remove()
826 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt2sas_transport_port_remove()
850 mpt2sas_transport_add_host_phy(struct MPT2SAS_ADAPTER *ioc, struct _sas_phy in mpt2sas_transport_add_host_phy() argument
861 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_add_host_phy()
864 if ((_transport_set_identify(ioc, mpt2sas_phy->handle, in mpt2sas_transport_add_host_phy()
867 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_add_host_phy()
873 _transport_set_identify(ioc, mpt2sas_phy->attached_handle, in mpt2sas_transport_add_host_phy()
889 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_add_host_phy()
893 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt2sas_transport_add_host_phy()
917 mpt2sas_transport_add_expander_phy(struct MPT2SAS_ADAPTER *ioc, struct _sas_phy in mpt2sas_transport_add_expander_phy() argument
927 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_add_expander_phy()
930 if ((_transport_set_identify(ioc, mpt2sas_phy->handle, in mpt2sas_transport_add_expander_phy()
933 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_add_expander_phy()
940 _transport_set_identify(ioc, mpt2sas_phy->attached_handle, in mpt2sas_transport_add_expander_phy()
957 ioc->name, __FILE__, __LINE__, __func__); in mpt2sas_transport_add_expander_phy()
961 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt2sas_transport_add_expander_phy()
985 mpt2sas_transport_update_links(struct MPT2SAS_ADAPTER *ioc, in mpt2sas_transport_update_links() argument
992 if (ioc->shost_recovery || ioc->pci_error_recovery) in mpt2sas_transport_update_links()
995 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt2sas_transport_update_links()
996 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address); in mpt2sas_transport_update_links()
998 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt2sas_transport_update_links()
1004 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt2sas_transport_update_links()
1006 _transport_set_identify(ioc, handle, in mpt2sas_transport_update_links()
1008 _transport_add_phy_to_an_existing_port(ioc, sas_node, in mpt2sas_transport_update_links()
1018 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt2sas_transport_update_links()
1079 _transport_get_expander_phy_error_log(struct MPT2SAS_ADAPTER *ioc, in _transport_get_expander_phy_error_log() argument
1098 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_get_expander_phy_error_log()
1100 __func__, ioc->name); in _transport_get_expander_phy_error_log()
1104 mutex_lock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1106 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) { in _transport_get_expander_phy_error_log()
1108 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1112 ioc->transport_cmds.status = MPT2_CMD_PENDING; in _transport_get_expander_phy_error_log()
1115 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_get_expander_phy_error_log()
1120 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1125 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_get_expander_phy_error_log()
1127 "operational state(count=%d)\n", ioc->name, in _transport_get_expander_phy_error_log()
1132 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1134 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_get_expander_phy_error_log()
1137 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1142 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _transport_get_expander_phy_error_log()
1143 ioc->transport_cmds.smid = smid; in _transport_get_expander_phy_error_log()
1147 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma); in _transport_get_expander_phy_error_log()
1152 mpt2sas_base_free_smid(ioc, smid); in _transport_get_expander_phy_error_log()
1179 ioc->base_add_sg_single(psge, sgl_flags | in _transport_get_expander_phy_error_log()
1183 psge += ioc->sge_size; in _transport_get_expander_phy_error_log()
1190 ioc->base_add_sg_single(psge, sgl_flags | in _transport_get_expander_phy_error_log()
1194 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_error_log - " in _transport_get_expander_phy_error_log()
1195 "send to sas_addr(0x%016llx), phy(%d)\n", ioc->name, in _transport_get_expander_phy_error_log()
1197 init_completion(&ioc->transport_cmds.done); in _transport_get_expander_phy_error_log()
1198 mpt2sas_base_put_smid_default(ioc, smid); in _transport_get_expander_phy_error_log()
1199 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_get_expander_phy_error_log()
1202 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) { in _transport_get_expander_phy_error_log()
1204 ioc->name, __func__); in _transport_get_expander_phy_error_log()
1207 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET)) in _transport_get_expander_phy_error_log()
1212 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_error_log - " in _transport_get_expander_phy_error_log()
1213 "complete\n", ioc->name)); in _transport_get_expander_phy_error_log()
1215 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) { in _transport_get_expander_phy_error_log()
1217 mpi_reply = ioc->transport_cmds.reply; in _transport_get_expander_phy_error_log()
1219 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_get_expander_phy_error_log()
1221 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_get_expander_phy_error_log()
1230 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_get_expander_phy_error_log()
1232 ioc->name, phy_error_log_reply->function_result)); in _transport_get_expander_phy_error_log()
1244 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_get_expander_phy_error_log()
1245 "phy_error_log - no reply\n", ioc->name)); in _transport_get_expander_phy_error_log()
1249 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_get_expander_phy_error_log()
1252 ioc->transport_cmds.status = MPT2_CMD_NOT_USED; in _transport_get_expander_phy_error_log()
1254 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma); in _transport_get_expander_phy_error_log()
1256 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1270 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_get_linkerrors() local
1275 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1276 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_get_linkerrors()
1278 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1281 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1283 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_get_linkerrors()
1284 return _transport_get_expander_phy_error_log(ioc, phy); in _transport_get_linkerrors()
1287 if ((mpt2sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1, in _transport_get_linkerrors()
1290 ioc->name, __FILE__, __LINE__, __func__); in _transport_get_linkerrors()
1296 "(0x%04x), loginfo(0x%08x)\n", ioc->name, in _transport_get_linkerrors()
1320 struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_enclosure_identifier() local
1325 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1326 sas_device = mpt2sas_scsih_sas_device_find_by_sas_address(ioc, in _transport_get_enclosure_identifier()
1335 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1348 struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_bay_identifier() local
1353 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1354 sas_device = mpt2sas_scsih_sas_device_find_by_sas_address(ioc, in _transport_get_bay_identifier()
1360 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1402 _transport_expander_phy_control(struct MPT2SAS_ADAPTER *ioc, in _transport_expander_phy_control() argument
1421 if (ioc->shost_recovery) { in _transport_expander_phy_control()
1423 __func__, ioc->name); in _transport_expander_phy_control()
1427 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1429 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) { in _transport_expander_phy_control()
1431 ioc->name, __func__); in _transport_expander_phy_control()
1435 ioc->transport_cmds.status = MPT2_CMD_PENDING; in _transport_expander_phy_control()
1438 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_expander_phy_control()
1443 ioc->name, __func__); in _transport_expander_phy_control()
1448 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_expander_phy_control()
1450 "operational state(count=%d)\n", ioc->name, in _transport_expander_phy_control()
1455 ioc->name, __func__); in _transport_expander_phy_control()
1457 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_phy_control()
1460 ioc->name, __func__); in _transport_expander_phy_control()
1465 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _transport_expander_phy_control()
1466 ioc->transport_cmds.smid = smid; in _transport_expander_phy_control()
1470 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma); in _transport_expander_phy_control()
1475 mpt2sas_base_free_smid(ioc, smid); in _transport_expander_phy_control()
1507 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_phy_control()
1511 psge += ioc->sge_size; in _transport_expander_phy_control()
1518 ioc->base_add_sg_single(psge, sgl_flags | in _transport_expander_phy_control()
1522 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_control - " in _transport_expander_phy_control()
1523 "send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n", ioc->name, in _transport_expander_phy_control()
1527 init_completion(&ioc->transport_cmds.done); in _transport_expander_phy_control()
1528 mpt2sas_base_put_smid_default(ioc, smid); in _transport_expander_phy_control()
1529 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_expander_phy_control()
1532 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) { in _transport_expander_phy_control()
1534 ioc->name, __func__); in _transport_expander_phy_control()
1537 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET)) in _transport_expander_phy_control()
1542 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_control - " in _transport_expander_phy_control()
1543 "complete\n", ioc->name)); in _transport_expander_phy_control()
1545 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) { in _transport_expander_phy_control()
1547 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_phy_control()
1549 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_expander_phy_control()
1551 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); in _transport_expander_phy_control()
1560 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_expander_phy_control()
1562 ioc->name, phy_control_reply->function_result)); in _transport_expander_phy_control()
1566 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_expander_phy_control()
1567 "phy_control - no reply\n", ioc->name)); in _transport_expander_phy_control()
1571 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_expander_phy_control()
1574 ioc->transport_cmds.status = MPT2_CMD_NOT_USED; in _transport_expander_phy_control()
1576 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma); in _transport_expander_phy_control()
1578 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1592 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_reset() local
1597 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1598 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_reset()
1600 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1603 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1606 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_reset()
1607 return _transport_expander_phy_control(ioc, phy, in _transport_phy_reset()
1618 if ((mpt2sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) { in _transport_phy_reset()
1620 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_reset()
1626 "(0x%04x), loginfo(0x%08x)\n", ioc->name, in _transport_phy_reset()
1644 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_enable() local
1654 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1655 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_enable()
1657 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1660 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1663 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_enable()
1664 return _transport_expander_phy_control(ioc, phy, in _transport_phy_enable()
1671 sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1676 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1680 if ((mpt2sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, in _transport_phy_enable()
1683 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1691 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1697 for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1702 "phys, try again later!\n", ioc->name, in _transport_phy_enable()
1714 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1719 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1723 if ((mpt2sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_enable()
1726 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1734 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_enable()
1739 for (i = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1757 mpt2sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, sz); in _transport_phy_enable()
1780 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_speed() local
1790 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1791 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_speed()
1793 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1796 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1809 if (phy->identify.sas_address != ioc->sas_hba.sas_address) { in _transport_phy_speed()
1812 return _transport_expander_phy_control(ioc, phy, in _transport_phy_speed()
1819 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_speed()
1824 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1828 if ((mpt2sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_speed()
1831 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1839 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1844 for (i = 0; i < ioc->sas_hba.num_phys; i++) { in _transport_phy_speed()
1847 (ioc->sas_hba.phy[i].phy->minimum_linkrate + in _transport_phy_speed()
1848 (ioc->sas_hba.phy[i].phy->maximum_linkrate << 4)); in _transport_phy_speed()
1856 if (mpt2sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, in _transport_phy_speed()
1859 ioc->name, __FILE__, __LINE__, __func__); in _transport_phy_speed()
1868 if (!mpt2sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0, in _transport_phy_speed()
1899 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost); in _transport_smp_handler() local
1922 "missing\n", ioc->name, __func__); in _transport_smp_handler()
1925 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_smp_handler()
1927 __func__, ioc->name); in _transport_smp_handler()
1931 rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex); in _transport_smp_handler()
1935 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) { in _transport_smp_handler()
1936 printk(MPT2SAS_ERR_FMT "%s: transport_cmds in use\n", ioc->name, in _transport_smp_handler()
1941 ioc->transport_cmds.status = MPT2_CMD_PENDING; in _transport_smp_handler()
1948 pci_addr_out = pci_alloc_consistent(ioc->pdev, in _transport_smp_handler()
1952 ioc->name, __func__); in _transport_smp_handler()
1964 dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio), in _transport_smp_handler()
1968 ioc->name, __func__); in _transport_smp_handler()
1977 pci_addr_in = pci_alloc_consistent(ioc->pdev, blk_rq_bytes(rsp), in _transport_smp_handler()
1981 ioc->name, __func__); in _transport_smp_handler()
1986 dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), in _transport_smp_handler()
1990 ioc->name, __func__); in _transport_smp_handler()
1997 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_smp_handler()
2002 ioc->name, __func__); in _transport_smp_handler()
2007 ioc_state = mpt2sas_base_get_iocstate(ioc, 1); in _transport_smp_handler()
2009 "operational state(count=%d)\n", ioc->name, in _transport_smp_handler()
2014 ioc->name, __func__); in _transport_smp_handler()
2016 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_smp_handler()
2019 ioc->name, __func__); in _transport_smp_handler()
2025 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid); in _transport_smp_handler()
2026 ioc->transport_cmds.smid = smid; in _transport_smp_handler()
2035 cpu_to_le64(ioc->sas_hba.sas_address); in _transport_smp_handler()
2044 ioc->base_add_sg_single(psge, sgl_flags | in _transport_smp_handler()
2047 ioc->base_add_sg_single(psge, sgl_flags | in _transport_smp_handler()
2052 psge += ioc->sge_size; in _transport_smp_handler()
2060 ioc->base_add_sg_single(psge, sgl_flags | in _transport_smp_handler()
2063 ioc->base_add_sg_single(psge, sgl_flags | in _transport_smp_handler()
2067 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "%s - " in _transport_smp_handler()
2068 "sending smp request\n", ioc->name, __func__)); in _transport_smp_handler()
2070 init_completion(&ioc->transport_cmds.done); in _transport_smp_handler()
2071 mpt2sas_base_put_smid_default(ioc, smid); in _transport_smp_handler()
2072 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done, in _transport_smp_handler()
2075 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) { in _transport_smp_handler()
2077 __func__, ioc->name); in _transport_smp_handler()
2080 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET)) in _transport_smp_handler()
2085 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "%s - " in _transport_smp_handler()
2086 "complete\n", ioc->name, __func__)); in _transport_smp_handler()
2088 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) { in _transport_smp_handler()
2090 mpi_reply = ioc->transport_cmds.reply; in _transport_smp_handler()
2092 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_smp_handler()
2094 ioc->name, __func__, in _transport_smp_handler()
2124 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT in _transport_smp_handler()
2125 "%s - no reply\n", ioc->name, __func__)); in _transport_smp_handler()
2131 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP, in _transport_smp_handler()
2138 pci_unmap_single(ioc->pdev, dma_addr_out, blk_rq_bytes(req), in _transport_smp_handler()
2141 pci_unmap_single(ioc->pdev, dma_addr_in, blk_rq_bytes(rsp), in _transport_smp_handler()
2146 pci_free_consistent(ioc->pdev, blk_rq_bytes(req), pci_addr_out, in _transport_smp_handler()
2150 pci_free_consistent(ioc->pdev, blk_rq_bytes(rsp), pci_addr_in, in _transport_smp_handler()
2154 ioc->transport_cmds.status = MPT2_CMD_NOT_USED; in _transport_smp_handler()
2155 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_smp_handler()