• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/scsi/mpt2sas/

Lines Matching defs:ioc

64  * @ioc: per adapter object
66 * Context: Calling function should acquire ioc->sas_node_lock.
72 _transport_sas_node_find_by_sas_address(struct MPT2SAS_ADAPTER *ioc,
75 if (ioc->sas_hba.sas_address == sas_address)
76 return &ioc->sas_hba;
78 return mpt2sas_scsih_expander_find_by_sas_address(ioc,
126 * @ioc: per adapter object
135 _transport_set_identify(struct MPT2SAS_ADAPTER *ioc, u16 handle,
143 if (ioc->shost_recovery || ioc->pci_error_recovery) {
145 __func__, ioc->name);
149 if ((mpt2sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0,
153 ioc->name, __FILE__, __LINE__, __func__);
161 "\nfailure at %s:%d/%s()!\n", ioc->name, handle, ioc_status,
213 * @ioc: per adapter object
219 * The callback index passed is `ioc->transport_cb_idx`
225 mpt2sas_transport_done(struct MPT2SAS_ADAPTER *ioc, u16 smid, u8 msix_index,
230 mpi_reply = mpt2sas_base_get_reply_virt_addr(ioc, reply);
231 if (ioc->transport_cmds.status == MPT2_CMD_NOT_USED)
233 if (ioc->transport_cmds.smid != smid)
235 ioc->transport_cmds.status |= MPT2_CMD_COMPLETE;
237 memcpy(ioc->transport_cmds.reply, mpi_reply,
239 ioc->transport_cmds.status |= MPT2_CMD_REPLY_VALID;
241 ioc->transport_cmds.status &= ~MPT2_CMD_PENDING;
242 complete(&ioc->transport_cmds.done);
276 * @ioc: per adapter object
285 _transport_expander_report_manufacture(struct MPT2SAS_ADAPTER *ioc,
305 if (ioc->shost_recovery || ioc->pci_error_recovery) {
307 __func__, ioc->name);
311 mutex_lock(&ioc->transport_cmds.mutex);
313 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) {
315 ioc->name, __func__);
319 ioc->transport_cmds.status = MPT2_CMD_PENDING;
322 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
326 "%s: failed due to ioc not operational\n",
327 ioc->name, __func__);
332 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
334 "operational state(count=%d)\n", ioc->name,
338 printk(MPT2SAS_INFO_FMT "%s: ioc is operational\n",
339 ioc->name, __func__);
341 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx);
344 ioc->name, __func__);
350 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid);
351 ioc->transport_cmds.smid = smid;
354 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma);
360 mpt2sas_base_free_smid(ioc, smid);
385 ioc->base_add_sg_single(psge, sgl_flags |
389 psge += ioc->sge_size;
396 ioc->base_add_sg_single(psge, sgl_flags |
400 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "report_manufacture - "
401 "send to sas_addr(0x%016llx)\n", ioc->name,
403 mpt2sas_base_put_smid_default(ioc, smid);
404 init_completion(&ioc->transport_cmds.done);
405 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
408 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) {
410 ioc->name, __func__);
413 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET))
418 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "report_manufacture - "
419 "complete\n", ioc->name));
421 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) {
424 mpi_reply = ioc->transport_cmds.reply;
426 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
428 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength)));
452 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
453 "report_manufacture - no reply\n", ioc->name));
457 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP,
460 ioc->transport_cmds.status = MPT2_CMD_NOT_USED;
462 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma);
464 mutex_unlock(&ioc->transport_cmds.mutex);
471 * @ioc: per adapter object
486 _transport_delete_duplicate_port(struct MPT2SAS_ADAPTER *ioc,
493 "phy_id(%d)\n", ioc->name, (unsigned long long)sas_address,
519 ioc->logging_level |= MPT_DEBUG_TRANSPORT;
520 mpt2sas_transport_port_remove(ioc,
523 ioc->logging_level &= ~MPT_DEBUG_TRANSPORT;
528 * @ioc: per adapter object
535 _transport_sanity_check(struct MPT2SAS_ADAPTER *ioc, struct _sas_node *sas_node,
543 _transport_delete_duplicate_port(ioc, sas_node,
549 * @ioc: per adapter object
552 * Context: This function will acquire ioc->sas_node_lock.
559 mpt2sas_transport_port_add(struct MPT2SAS_ADAPTER *ioc, u16 handle,
574 ioc->name, __FILE__, __LINE__, __func__);
580 spin_lock_irqsave(&ioc->sas_node_lock, flags);
581 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address);
582 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
586 "parent sas_address(0x%016llx)!\n", ioc->name,
591 if ((_transport_set_identify(ioc, handle,
594 ioc->name, __FILE__, __LINE__, __func__);
600 ioc->name, __FILE__, __LINE__, __func__);
604 _transport_sanity_check(ioc, sas_node,
618 ioc->name, __FILE__, __LINE__, __func__);
625 ioc->name, __FILE__, __LINE__, __func__);
631 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
651 ioc->name, __FILE__, __LINE__, __func__);
653 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
659 spin_lock_irqsave(&ioc->sas_node_lock, flags);
661 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
668 _transport_expander_report_manufacture(ioc,
684 * @ioc: per adapter object
687 * Context: This function will acquire ioc->sas_node_lock.
690 * ioc->sas_port_list.
695 mpt2sas_transport_port_remove(struct MPT2SAS_ADAPTER *ioc, u64 sas_address,
705 spin_lock_irqsave(&ioc->sas_node_lock, flags);
706 sas_node = _transport_sas_node_find_by_sas_address(ioc,
708 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
731 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
747 * @ioc: per adapter object
755 mpt2sas_transport_add_host_phy(struct MPT2SAS_ADAPTER *ioc, struct _sas_phy
766 ioc->name, __FILE__, __LINE__, __func__);
769 if ((_transport_set_identify(ioc, mpt2sas_phy->handle,
772 ioc->name, __FILE__, __LINE__, __func__);
778 _transport_set_identify(ioc, mpt2sas_phy->attached_handle,
794 ioc->name, __FILE__, __LINE__, __func__);
798 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
814 * @ioc: per adapter object
822 mpt2sas_transport_add_expander_phy(struct MPT2SAS_ADAPTER *ioc, struct _sas_phy
832 ioc->name, __FILE__, __LINE__, __func__);
835 if ((_transport_set_identify(ioc, mpt2sas_phy->handle,
838 ioc->name, __FILE__, __LINE__, __func__);
845 _transport_set_identify(ioc, mpt2sas_phy->attached_handle,
862 ioc->name, __FILE__, __LINE__, __func__);
866 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
881 * @ioc: per adapter object
890 mpt2sas_transport_update_links(struct MPT2SAS_ADAPTER *ioc,
897 if (ioc->shost_recovery || ioc->pci_error_recovery)
900 spin_lock_irqsave(&ioc->sas_node_lock, flags);
901 sas_node = _transport_sas_node_find_by_sas_address(ioc, sas_address);
902 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
909 _transport_set_identify(ioc, handle,
919 if ((ioc->logging_level & MPT_DEBUG_TRANSPORT))
973 * @ioc: per adapter object
980 _transport_get_expander_phy_error_log(struct MPT2SAS_ADAPTER *ioc,
1000 if (ioc->shost_recovery || ioc->pci_error_recovery) {
1002 __func__, ioc->name);
1006 mutex_lock(&ioc->transport_cmds.mutex);
1008 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) {
1010 ioc->name, __func__);
1014 ioc->transport_cmds.status = MPT2_CMD_PENDING;
1017 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
1021 "%s: failed due to ioc not operational\n",
1022 ioc->name, __func__);
1027 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
1029 "operational state(count=%d)\n", ioc->name,
1033 printk(MPT2SAS_INFO_FMT "%s: ioc is operational\n",
1034 ioc->name, __func__);
1036 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx);
1039 ioc->name, __func__);
1044 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid);
1045 ioc->transport_cmds.smid = smid;
1049 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma);
1054 mpt2sas_base_free_smid(ioc, smid);
1082 ioc->base_add_sg_single(psge, sgl_flags |
1086 psge += ioc->sge_size;
1093 ioc->base_add_sg_single(psge, sgl_flags |
1097 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_error_log - "
1098 "send to sas_addr(0x%016llx), phy(%d)\n", ioc->name,
1100 mpt2sas_base_put_smid_default(ioc, smid);
1101 init_completion(&ioc->transport_cmds.done);
1102 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
1105 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) {
1107 ioc->name, __func__);
1110 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET))
1115 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_error_log - "
1116 "complete\n", ioc->name));
1118 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) {
1120 mpi_reply = ioc->transport_cmds.reply;
1122 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1124 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength)));
1133 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1135 ioc->name, phy_error_log_reply->function_result));
1147 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1148 "phy_error_log - no reply\n", ioc->name));
1152 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP,
1155 ioc->transport_cmds.status = MPT2_CMD_NOT_USED;
1157 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma);
1159 mutex_unlock(&ioc->transport_cmds.mutex);
1173 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy);
1178 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1179 if (_transport_sas_node_find_by_sas_address(ioc,
1181 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1184 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1186 if (phy->identify.sas_address != ioc->sas_hba.sas_address)
1187 return _transport_get_expander_phy_error_log(ioc, phy);
1190 if ((mpt2sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1,
1193 ioc->name, __FILE__, __LINE__, __func__);
1199 "(0x%04x), loginfo(0x%08x)\n", ioc->name,
1223 struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy);
1227 spin_lock_irqsave(&ioc->sas_device_lock, flags);
1228 sas_device = mpt2sas_scsih_sas_device_find_by_sas_address(ioc,
1230 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
1248 struct MPT2SAS_ADAPTER *ioc = rphy_to_ioc(rphy);
1252 spin_lock_irqsave(&ioc->sas_device_lock, flags);
1253 sas_device = mpt2sas_scsih_sas_device_find_by_sas_address(ioc,
1255 spin_unlock_irqrestore(&ioc->sas_device_lock, flags);
1294 * @ioc: per adapter object
1301 _transport_expander_phy_control(struct MPT2SAS_ADAPTER *ioc,
1321 if (ioc->shost_recovery) {
1323 __func__, ioc->name);
1327 mutex_lock(&ioc->transport_cmds.mutex);
1329 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) {
1331 ioc->name, __func__);
1335 ioc->transport_cmds.status = MPT2_CMD_PENDING;
1338 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
1342 "%s: failed due to ioc not operational\n",
1343 ioc->name, __func__);
1348 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
1350 "operational state(count=%d)\n", ioc->name,
1354 printk(MPT2SAS_INFO_FMT "%s: ioc is operational\n",
1355 ioc->name, __func__);
1357 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx);
1360 ioc->name, __func__);
1365 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid);
1366 ioc->transport_cmds.smid = smid;
1370 data_out = pci_alloc_consistent(ioc->pdev, sz, &data_out_dma);
1375 mpt2sas_base_free_smid(ioc, smid);
1408 ioc->base_add_sg_single(psge, sgl_flags |
1412 psge += ioc->sge_size;
1419 ioc->base_add_sg_single(psge, sgl_flags |
1423 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_control - "
1424 "send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n", ioc->name,
1427 mpt2sas_base_put_smid_default(ioc, smid);
1428 init_completion(&ioc->transport_cmds.done);
1429 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
1432 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) {
1434 ioc->name, __func__);
1437 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET))
1442 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "phy_control - "
1443 "complete\n", ioc->name));
1445 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) {
1447 mpi_reply = ioc->transport_cmds.reply;
1449 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1451 ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength)));
1460 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1462 ioc->name, phy_control_reply->function_result));
1466 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1467 "phy_control - no reply\n", ioc->name));
1471 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP,
1474 ioc->transport_cmds.status = MPT2_CMD_NOT_USED;
1476 pci_free_consistent(ioc->pdev, sz, data_out, data_out_dma);
1478 mutex_unlock(&ioc->transport_cmds.mutex);
1492 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy);
1497 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1498 if (_transport_sas_node_find_by_sas_address(ioc,
1500 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1503 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1506 if (phy->identify.sas_address != ioc->sas_hba.sas_address)
1507 return _transport_expander_phy_control(ioc, phy,
1518 if ((mpt2sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) {
1520 ioc->name, __FILE__, __LINE__, __func__);
1526 "(0x%04x), loginfo(0x%08x)\n", ioc->name,
1544 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy);
1552 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1553 if (_transport_sas_node_find_by_sas_address(ioc,
1555 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1558 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1561 if (phy->identify.sas_address != ioc->sas_hba.sas_address)
1562 return _transport_expander_phy_control(ioc, phy,
1569 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys *
1574 ioc->name, __FILE__, __LINE__, __func__);
1578 if ((mpt2sas_config_get_sas_iounit_pg1(ioc, &mpi_reply,
1581 ioc->name, __FILE__, __LINE__, __func__);
1589 ioc->name, __FILE__, __LINE__, __func__);
1601 mpt2sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, sz);
1623 struct MPT2SAS_ADAPTER *ioc = phy_to_ioc(phy);
1633 spin_lock_irqsave(&ioc->sas_node_lock, flags);
1634 if (_transport_sas_node_find_by_sas_address(ioc,
1636 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1639 spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
1652 if (phy->identify.sas_address != ioc->sas_hba.sas_address) {
1655 return _transport_expander_phy_control(ioc, phy,
1662 sz = offsetof(Mpi2SasIOUnitPage1_t, PhyData) + (ioc->sas_hba.num_phys *
1667 ioc->name, __FILE__, __LINE__, __func__);
1671 if ((mpt2sas_config_get_sas_iounit_pg1(ioc, &mpi_reply,
1674 ioc->name, __FILE__, __LINE__, __func__);
1682 ioc->name, __FILE__, __LINE__, __func__);
1687 for (i = 0; i < ioc->sas_hba.num_phys; i++) {
1690 (ioc->sas_hba.phy[i].phy->minimum_linkrate +
1691 (ioc->sas_hba.phy[i].phy->maximum_linkrate << 4));
1699 if (mpt2sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1,
1702 ioc->name, __FILE__, __LINE__, __func__);
1711 if (!mpt2sas_config_get_phy_pg0(ioc, &mpi_reply, &phy_pg0,
1742 struct MPT2SAS_ADAPTER *ioc = shost_priv(shost);
1759 "missing\n", ioc->name, __func__);
1766 "rsp %u %u\n", ioc->name, __func__, req->bio->bi_vcnt,
1771 if (ioc->shost_recovery) {
1773 __func__, ioc->name);
1777 rc = mutex_lock_interruptible(&ioc->transport_cmds.mutex);
1781 if (ioc->transport_cmds.status != MPT2_CMD_NOT_USED) {
1782 printk(MPT2SAS_ERR_FMT "%s: transport_cmds in use\n", ioc->name,
1787 ioc->transport_cmds.status = MPT2_CMD_PENDING;
1790 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
1794 "%s: failed due to ioc not operational\n",
1795 ioc->name, __func__);
1800 ioc_state = mpt2sas_base_get_iocstate(ioc, 1);
1802 "operational state(count=%d)\n", ioc->name,
1806 printk(MPT2SAS_INFO_FMT "%s: ioc is operational\n",
1807 ioc->name, __func__);
1809 smid = mpt2sas_base_get_smid(ioc, ioc->transport_cb_idx);
1812 ioc->name, __func__);
1818 mpi_request = mpt2sas_base_get_msg_frame(ioc, smid);
1819 ioc->transport_cmds.smid = smid;
1828 cpu_to_le64(ioc->sas_hba.sas_address);
1836 dma_addr_out = pci_map_single(ioc->pdev, bio_data(req->bio),
1839 mpt2sas_base_free_smid(ioc, smid);
1843 ioc->base_add_sg_single(psge, sgl_flags | (blk_rq_bytes(req) - 4),
1847 psge += ioc->sge_size;
1854 dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio),
1857 mpt2sas_base_free_smid(ioc, smid);
1861 ioc->base_add_sg_single(psge, sgl_flags | (blk_rq_bytes(rsp) + 4),
1864 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "%s - "
1865 "sending smp request\n", ioc->name, __func__));
1867 mpt2sas_base_put_smid_default(ioc, smid);
1868 init_completion(&ioc->transport_cmds.done);
1869 timeleft = wait_for_completion_timeout(&ioc->transport_cmds.done,
1872 if (!(ioc->transport_cmds.status & MPT2_CMD_COMPLETE)) {
1874 __func__, ioc->name);
1877 if (!(ioc->transport_cmds.status & MPT2_CMD_RESET))
1882 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT "%s - "
1883 "complete\n", ioc->name, __func__));
1885 if (ioc->transport_cmds.status & MPT2_CMD_REPLY_VALID) {
1887 mpi_reply = ioc->transport_cmds.reply;
1889 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1891 ioc->name, __func__,
1900 dtransportprintk(ioc, printk(MPT2SAS_INFO_FMT
1901 "%s - no reply\n", ioc->name, __func__));
1907 mpt2sas_base_hard_reset_handler(ioc, CAN_SLEEP,
1914 pci_unmap_single(ioc->pdev, dma_addr_out, blk_rq_bytes(req),
1917 pci_unmap_single(ioc->pdev, dma_addr_in, blk_rq_bytes(rsp),
1921 ioc->transport_cmds.status = MPT2_CMD_NOT_USED;
1922 mutex_unlock(&ioc->transport_cmds.mutex);