Lines Matching refs:ioc
92 _transport_sas_node_find_by_sas_address(struct MPT3SAS_ADAPTER *ioc, in _transport_sas_node_find_by_sas_address() argument
95 if (ioc->sas_hba.sas_address == sas_address) in _transport_sas_node_find_by_sas_address()
96 return &ioc->sas_hba; in _transport_sas_node_find_by_sas_address()
98 return mpt3sas_scsih_expander_find_by_sas_address(ioc, in _transport_sas_node_find_by_sas_address()
110 _transport_get_port_id_by_rphy(struct MPT3SAS_ADAPTER *ioc, in _transport_get_port_id_by_rphy() argument
123 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_get_port_id_by_rphy()
125 &ioc->sas_expander_list, list) { in _transport_get_port_id_by_rphy()
131 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_port_id_by_rphy()
133 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_port_id_by_rphy()
134 sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy); in _transport_get_port_id_by_rphy()
139 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_port_id_by_rphy()
202 _transport_set_identify(struct MPT3SAS_ADAPTER *ioc, u16 handle, in _transport_set_identify() argument
210 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_set_identify()
211 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_set_identify()
215 if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0, in _transport_set_identify()
217 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_set_identify()
225 ioc_err(ioc, "handle(0x%04x), ioc_status(0x%04x) failure at %s:%d/%s()!\n", in _transport_set_identify()
292 mpt3sas_transport_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, in mpt3sas_transport_done() argument
297 mpi_reply = mpt3sas_base_get_reply_virt_addr(ioc, reply); in mpt3sas_transport_done()
298 if (ioc->transport_cmds.status == MPT3_CMD_NOT_USED) in mpt3sas_transport_done()
300 if (ioc->transport_cmds.smid != smid) in mpt3sas_transport_done()
302 ioc->transport_cmds.status |= MPT3_CMD_COMPLETE; in mpt3sas_transport_done()
304 memcpy(ioc->transport_cmds.reply, mpi_reply, in mpt3sas_transport_done()
306 ioc->transport_cmds.status |= MPT3_CMD_REPLY_VALID; in mpt3sas_transport_done()
308 ioc->transport_cmds.status &= ~MPT3_CMD_PENDING; in mpt3sas_transport_done()
309 complete(&ioc->transport_cmds.done); in mpt3sas_transport_done()
353 _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc, in _transport_expander_report_manufacture() argument
370 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_report_manufacture()
371 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_expander_report_manufacture()
375 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
377 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_expander_report_manufacture()
378 ioc_err(ioc, "%s: transport_cmds in use\n", __func__); in _transport_expander_report_manufacture()
382 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_expander_report_manufacture()
384 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_expander_report_manufacture()
388 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_report_manufacture()
390 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_expander_report_manufacture()
396 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_expander_report_manufacture()
397 ioc->transport_cmds.smid = smid; in _transport_expander_report_manufacture()
401 data_out = dma_alloc_coherent(&ioc->pdev->dev, data_out_sz + data_in_sz, in _transport_expander_report_manufacture()
407 mpt3sas_base_free_smid(ioc, smid); in _transport_expander_report_manufacture()
426 ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, in _transport_expander_report_manufacture()
429 dtransportprintk(ioc, in _transport_expander_report_manufacture()
430 ioc_info(ioc, "report_manufacture - send to sas_addr(0x%016llx)\n", in _transport_expander_report_manufacture()
432 init_completion(&ioc->transport_cmds.done); in _transport_expander_report_manufacture()
433 ioc->put_smid_default(ioc, smid); in _transport_expander_report_manufacture()
434 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_expander_report_manufacture()
436 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_expander_report_manufacture()
437 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_expander_report_manufacture()
440 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_expander_report_manufacture()
445 dtransportprintk(ioc, ioc_info(ioc, "report_manufacture - complete\n")); in _transport_expander_report_manufacture()
447 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_expander_report_manufacture()
450 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_report_manufacture()
452 dtransportprintk(ioc, in _transport_expander_report_manufacture()
453 ioc_info(ioc, "report_manufacture - reply data transfer size(%d)\n", in _transport_expander_report_manufacture()
478 dtransportprintk(ioc, in _transport_expander_report_manufacture()
479 ioc_info(ioc, "report_manufacture - no reply\n")); in _transport_expander_report_manufacture()
483 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_expander_report_manufacture()
485 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_expander_report_manufacture()
487 dma_free_coherent(&ioc->pdev->dev, data_out_sz + data_in_sz, in _transport_expander_report_manufacture()
490 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_report_manufacture()
501 _transport_delete_port(struct MPT3SAS_ADAPTER *ioc, in _transport_delete_port() argument
513 ioc->logging_level |= MPT_DEBUG_TRANSPORT; in _transport_delete_port()
515 mpt3sas_device_remove_by_sas_address(ioc, in _transport_delete_port()
519 mpt3sas_expander_remove(ioc, sas_address, port); in _transport_delete_port()
520 ioc->logging_level &= ~MPT_DEBUG_TRANSPORT; in _transport_delete_port()
530 _transport_delete_phy(struct MPT3SAS_ADAPTER *ioc, in _transport_delete_phy() argument
552 _transport_add_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_port *mpt3sas_port, in _transport_add_phy() argument
576 mpt3sas_transport_add_phy_to_an_existing_port(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_transport_add_phy_to_an_existing_port() argument
601 _transport_add_phy(ioc, mpt3sas_port, mpt3sas_phy); in mpt3sas_transport_add_phy_to_an_existing_port()
614 mpt3sas_transport_del_phy_from_an_existing_port(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_transport_del_phy_from_an_existing_port() argument
634 if (mpt3sas_port->num_phys == 1 && !ioc->shost_recovery) in mpt3sas_transport_del_phy_from_an_existing_port()
635 _transport_delete_port(ioc, mpt3sas_port); in mpt3sas_transport_del_phy_from_an_existing_port()
637 _transport_delete_phy(ioc, mpt3sas_port, in mpt3sas_transport_del_phy_from_an_existing_port()
654 _transport_sanity_check(struct MPT3SAS_ADAPTER *ioc, struct _sas_node *sas_node, in _transport_sanity_check() argument
665 mpt3sas_transport_del_phy_from_an_existing_port(ioc, in _transport_sanity_check()
683 mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle, in mpt3sas_transport_port_add() argument
697 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
705 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
712 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
713 sas_node = _transport_sas_node_find_by_sas_address(ioc, in mpt3sas_transport_port_add()
715 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
718 ioc_err(ioc, "%s: Could not find parent sas_address(0x%016llx)!\n", in mpt3sas_transport_port_add()
723 if ((_transport_set_identify(ioc, handle, in mpt3sas_transport_port_add()
725 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
731 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
737 _transport_sanity_check(ioc, sas_node, in mpt3sas_transport_port_add()
749 if (sas_node->handle <= ioc->sas_hba.num_phys) { in mpt3sas_transport_port_add()
755 vphy = mpt3sas_get_vphy_by_phy(ioc, hba_port, i); in mpt3sas_transport_port_add()
757 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
765 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
771 sas_device = mpt3sas_get_sdev_by_addr(ioc, in mpt3sas_transport_port_add()
775 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
783 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
789 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
796 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_add()
811 if (sas_node->handle <= ioc->sas_hba.num_phys) { in mpt3sas_transport_port_add()
822 if (sas_node->handle <= ioc->sas_hba.num_phys) in mpt3sas_transport_port_add()
828 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
836 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_port_add()
853 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
855 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_add()
862 _transport_expander_report_manufacture(ioc, in mpt3sas_transport_port_add()
890 mpt3sas_transport_port_remove(struct MPT3SAS_ADAPTER *ioc, u64 sas_address, in mpt3sas_transport_port_remove() argument
905 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
906 sas_node = _transport_sas_node_find_by_sas_address(ioc, in mpt3sas_transport_port_remove()
909 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
924 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
928 if (sas_node->handle <= ioc->sas_hba.num_phys && in mpt3sas_transport_port_remove()
929 (ioc->multipath_on_hba)) { in mpt3sas_transport_port_remove()
935 ioc_info(ioc, in mpt3sas_transport_port_remove()
945 &ioc->port_table_list, list) { in mpt3sas_transport_port_remove()
960 ioc_info(ioc, in mpt3sas_transport_port_remove()
974 ioc_info(ioc, in mpt3sas_transport_port_remove()
989 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_port_remove()
993 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_port_remove()
1000 if (!ioc->remove_host) in mpt3sas_transport_port_remove()
1005 if (!ioc->remove_host) in mpt3sas_transport_port_remove()
1007 ioc_info(ioc, "%s: removed: sas_addr(0x%016llx)\n", in mpt3sas_transport_port_remove()
1022 mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_host_phy() argument
1032 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_host_phy()
1036 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_host_phy()
1038 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_host_phy()
1046 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_host_phy()
1062 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_host_phy()
1067 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_host_phy()
1091 mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy in mpt3sas_transport_add_expander_phy() argument
1101 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_expander_phy()
1105 if ((_transport_set_identify(ioc, mpt3sas_phy->handle, in mpt3sas_transport_add_expander_phy()
1107 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_expander_phy()
1116 _transport_set_identify(ioc, mpt3sas_phy->attached_handle, in mpt3sas_transport_add_expander_phy()
1133 ioc_err(ioc, "failure at %s:%d/%s()!\n", in mpt3sas_transport_add_expander_phy()
1138 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_add_expander_phy()
1163 mpt3sas_transport_update_links(struct MPT3SAS_ADAPTER *ioc, in mpt3sas_transport_update_links() argument
1172 if (ioc->shost_recovery || ioc->pci_error_recovery) in mpt3sas_transport_update_links()
1175 spin_lock_irqsave(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1176 sas_node = _transport_sas_node_find_by_sas_address(ioc, in mpt3sas_transport_update_links()
1179 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1185 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in mpt3sas_transport_update_links()
1187 _transport_set_identify(ioc, handle, in mpt3sas_transport_update_links()
1189 if ((sas_node->handle <= ioc->sas_hba.num_phys) && in mpt3sas_transport_update_links()
1190 (ioc->multipath_on_hba)) { in mpt3sas_transport_update_links()
1192 &ioc->port_table_list, list) { in mpt3sas_transport_update_links()
1199 mpt3sas_transport_add_phy_to_an_existing_port(ioc, sas_node, in mpt3sas_transport_update_links()
1210 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT)) in mpt3sas_transport_update_links()
1270 _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc, in _transport_get_expander_phy_error_log() argument
1285 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_get_expander_phy_error_log()
1286 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_get_expander_phy_error_log()
1290 mutex_lock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1292 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_get_expander_phy_error_log()
1293 ioc_err(ioc, "%s: transport_cmds in use\n", __func__); in _transport_get_expander_phy_error_log()
1297 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_get_expander_phy_error_log()
1299 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_get_expander_phy_error_log()
1303 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_get_expander_phy_error_log()
1305 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_get_expander_phy_error_log()
1310 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_get_expander_phy_error_log()
1311 ioc->transport_cmds.smid = smid; in _transport_get_expander_phy_error_log()
1315 data_out = dma_alloc_coherent(&ioc->pdev->dev, sz, &data_out_dma, in _transport_get_expander_phy_error_log()
1321 mpt3sas_base_free_smid(ioc, smid); in _transport_get_expander_phy_error_log()
1344 ioc->build_sg(ioc, psge, data_out_dma, in _transport_get_expander_phy_error_log()
1349 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1350 ioc_info(ioc, "phy_error_log - send to sas_addr(0x%016llx), phy(%d)\n", in _transport_get_expander_phy_error_log()
1353 init_completion(&ioc->transport_cmds.done); in _transport_get_expander_phy_error_log()
1354 ioc->put_smid_default(ioc, smid); in _transport_get_expander_phy_error_log()
1355 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_get_expander_phy_error_log()
1357 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_get_expander_phy_error_log()
1358 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_get_expander_phy_error_log()
1361 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_get_expander_phy_error_log()
1366 dtransportprintk(ioc, ioc_info(ioc, "phy_error_log - complete\n")); in _transport_get_expander_phy_error_log()
1368 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_get_expander_phy_error_log()
1370 mpi_reply = ioc->transport_cmds.reply; in _transport_get_expander_phy_error_log()
1372 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1373 ioc_info(ioc, "phy_error_log - reply data transfer size(%d)\n", in _transport_get_expander_phy_error_log()
1383 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1384 ioc_info(ioc, "phy_error_log - function_result(%d)\n", in _transport_get_expander_phy_error_log()
1397 dtransportprintk(ioc, in _transport_get_expander_phy_error_log()
1398 ioc_info(ioc, "phy_error_log - no reply\n")); in _transport_get_expander_phy_error_log()
1402 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_get_expander_phy_error_log()
1404 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_get_expander_phy_error_log()
1406 dma_free_coherent(&ioc->pdev->dev, sz, data_out, data_out_dma); in _transport_get_expander_phy_error_log()
1408 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_get_expander_phy_error_log()
1422 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_get_linkerrors() local
1429 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1430 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_get_linkerrors()
1432 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { in _transport_get_linkerrors()
1433 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1436 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_get_linkerrors()
1438 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_get_linkerrors()
1439 return _transport_get_expander_phy_error_log(ioc, phy); in _transport_get_linkerrors()
1442 if ((mpt3sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1, in _transport_get_linkerrors()
1444 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_get_linkerrors()
1450 ioc_info(ioc, "phy(%d), ioc_status (0x%04x), loginfo(0x%08x)\n", in _transport_get_linkerrors()
1476 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_enclosure_identifier() local
1481 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1482 sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy); in _transport_get_enclosure_identifier()
1492 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_enclosure_identifier()
1505 struct MPT3SAS_ADAPTER *ioc = rphy_to_ioc(rphy); in _transport_get_bay_identifier() local
1510 spin_lock_irqsave(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1511 sas_device = __mpt3sas_get_sdev_by_rphy(ioc, rphy); in _transport_get_bay_identifier()
1518 spin_unlock_irqrestore(&ioc->sas_device_lock, flags); in _transport_get_bay_identifier()
1561 _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc, in _transport_expander_phy_control() argument
1576 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_expander_phy_control()
1577 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_expander_phy_control()
1581 mutex_lock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1583 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_expander_phy_control()
1584 ioc_err(ioc, "%s: transport_cmds in use\n", __func__); in _transport_expander_phy_control()
1588 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_expander_phy_control()
1590 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_expander_phy_control()
1594 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_expander_phy_control()
1596 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_expander_phy_control()
1601 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_expander_phy_control()
1602 ioc->transport_cmds.smid = smid; in _transport_expander_phy_control()
1606 data_out = dma_alloc_coherent(&ioc->pdev->dev, sz, &data_out_dma, in _transport_expander_phy_control()
1612 mpt3sas_base_free_smid(ioc, smid); in _transport_expander_phy_control()
1640 ioc->build_sg(ioc, psge, data_out_dma, in _transport_expander_phy_control()
1645 dtransportprintk(ioc, in _transport_expander_phy_control()
1646 ioc_info(ioc, "phy_control - send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n", in _transport_expander_phy_control()
1649 init_completion(&ioc->transport_cmds.done); in _transport_expander_phy_control()
1650 ioc->put_smid_default(ioc, smid); in _transport_expander_phy_control()
1651 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_expander_phy_control()
1653 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_expander_phy_control()
1654 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_expander_phy_control()
1657 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) in _transport_expander_phy_control()
1662 dtransportprintk(ioc, ioc_info(ioc, "phy_control - complete\n")); in _transport_expander_phy_control()
1664 if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { in _transport_expander_phy_control()
1666 mpi_reply = ioc->transport_cmds.reply; in _transport_expander_phy_control()
1668 dtransportprintk(ioc, in _transport_expander_phy_control()
1669 ioc_info(ioc, "phy_control - reply data transfer size(%d)\n", in _transport_expander_phy_control()
1679 dtransportprintk(ioc, in _transport_expander_phy_control()
1680 ioc_info(ioc, "phy_control - function_result(%d)\n", in _transport_expander_phy_control()
1685 dtransportprintk(ioc, in _transport_expander_phy_control()
1686 ioc_info(ioc, "phy_control - no reply\n")); in _transport_expander_phy_control()
1690 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_expander_phy_control()
1692 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_expander_phy_control()
1694 dma_free_coherent(&ioc->pdev->dev, sz, data_out, in _transport_expander_phy_control()
1697 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_expander_phy_control()
1711 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_reset() local
1718 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1719 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_reset()
1721 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { in _transport_phy_reset()
1722 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1725 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_reset()
1728 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_reset()
1729 return _transport_expander_phy_control(ioc, phy, in _transport_phy_reset()
1740 if ((mpt3sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) { in _transport_phy_reset()
1741 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_reset()
1747 ioc_info(ioc, "phy(%d), ioc_status(0x%04x), loginfo(0x%08x)\n", in _transport_phy_reset()
1765 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_enable() local
1777 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1778 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_enable()
1780 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { in _transport_phy_enable()
1781 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1784 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_enable()
1787 if (phy->identify.sas_address != ioc->sas_hba.sas_address) in _transport_phy_enable()
1788 return _transport_expander_phy_control(ioc, phy, in _transport_phy_enable()
1795 sz = offsetof(Mpi2SasIOUnitPage0_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1799 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1804 if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, in _transport_phy_enable()
1806 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1814 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1821 for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1824 …ioc_err(ioc, "discovery is active on port = %d, phy = %d: unable to enable/disable phys, try again… in _transport_phy_enable()
1836 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_enable()
1840 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1845 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_enable()
1847 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1855 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_enable()
1862 for (i = 0; i < ioc->sas_hba.num_phys ; i++) { in _transport_phy_enable()
1881 mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, sz); in _transport_phy_enable()
1905 struct MPT3SAS_ADAPTER *ioc = phy_to_ioc(phy); in _transport_phy_speed() local
1917 spin_lock_irqsave(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1918 if (_transport_sas_node_find_by_sas_address(ioc, in _transport_phy_speed()
1920 mpt3sas_get_port_by_id(ioc, port_id, 0)) == NULL) { in _transport_phy_speed()
1921 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1924 spin_unlock_irqrestore(&ioc->sas_node_lock, flags); in _transport_phy_speed()
1937 if (phy->identify.sas_address != ioc->sas_hba.sas_address) { in _transport_phy_speed()
1940 return _transport_expander_phy_control(ioc, phy, in _transport_phy_speed()
1947 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys * in _transport_phy_speed()
1951 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1956 if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, in _transport_phy_speed()
1958 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1966 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1972 for (i = 0; i < ioc->sas_hba.num_phys; i++) { in _transport_phy_speed()
1975 (ioc->sas_hba.phy[i].phy->minimum_linkrate + in _transport_phy_speed()
1976 (ioc->sas_hba.phy[i].phy->maximum_linkrate << 4)); in _transport_phy_speed()
1984 if (mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, in _transport_phy_speed()
1986 ioc_err(ioc, "failure at %s:%d/%s()!\n", in _transport_phy_speed()
1996 if (!mpt3sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0, in _transport_phy_speed()
2058 struct MPT3SAS_ADAPTER *ioc = shost_priv(shost); in _transport_smp_handler() local
2072 if (ioc->shost_recovery || ioc->pci_error_recovery) { in _transport_smp_handler()
2073 ioc_info(ioc, "%s: host reset in progress!\n", __func__); in _transport_smp_handler()
2078 rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex); in _transport_smp_handler()
2082 if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { in _transport_smp_handler()
2083 ioc_err(ioc, "%s: transport_cmds in use\n", in _transport_smp_handler()
2088 ioc->transport_cmds.status = MPT3_CMD_PENDING; in _transport_smp_handler()
2090 rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->request_payload, in _transport_smp_handler()
2100 rc = _transport_map_smp_buffer(&ioc->pdev->dev, &job->reply_payload, in _transport_smp_handler()
2105 rc = mpt3sas_wait_for_ioc(ioc, IOC_OPERATIONAL_WAIT_COUNT); in _transport_smp_handler()
2109 smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); in _transport_smp_handler()
2111 ioc_err(ioc, "%s: failed obtaining a smid\n", __func__); in _transport_smp_handler()
2117 mpi_request = mpt3sas_base_get_msg_frame(ioc, smid); in _transport_smp_handler()
2118 ioc->transport_cmds.smid = smid; in _transport_smp_handler()
2122 mpi_request->PhysicalPort = _transport_get_port_id_by_rphy(ioc, rphy); in _transport_smp_handler()
2125 cpu_to_le64(ioc->sas_hba.sas_address); in _transport_smp_handler()
2129 ioc->build_sg(ioc, psge, dma_addr_out, dma_len_out - 4, dma_addr_in, in _transport_smp_handler()
2132 dtransportprintk(ioc, in _transport_smp_handler()
2133 ioc_info(ioc, "%s: sending smp request\n", __func__)); in _transport_smp_handler()
2135 init_completion(&ioc->transport_cmds.done); in _transport_smp_handler()
2136 ioc->put_smid_default(ioc, smid); in _transport_smp_handler()
2137 wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); in _transport_smp_handler()
2139 if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { in _transport_smp_handler()
2140 ioc_err(ioc, "%s: timeout\n", __func__); in _transport_smp_handler()
2143 if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) { in _transport_smp_handler()
2144 mpt3sas_base_hard_reset_handler(ioc, FORCE_BIG_HAMMER); in _transport_smp_handler()
2150 dtransportprintk(ioc, ioc_info(ioc, "%s - complete\n", __func__)); in _transport_smp_handler()
2152 if (!(ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID)) { in _transport_smp_handler()
2153 dtransportprintk(ioc, in _transport_smp_handler()
2154 ioc_info(ioc, "%s: no reply\n", __func__)); in _transport_smp_handler()
2159 mpi_reply = ioc->transport_cmds.reply; in _transport_smp_handler()
2161 dtransportprintk(ioc, in _transport_smp_handler()
2162 ioc_info(ioc, "%s: reply data transfer size(%d)\n", in _transport_smp_handler()
2178 _transport_unmap_smp_buffer(&ioc->pdev->dev, &job->reply_payload, in _transport_smp_handler()
2181 _transport_unmap_smp_buffer(&ioc->pdev->dev, &job->request_payload, in _transport_smp_handler()
2184 ioc->transport_cmds.status = MPT3_CMD_NOT_USED; in _transport_smp_handler()
2185 mutex_unlock(&ioc->transport_cmds.mutex); in _transport_smp_handler()