Lines Matching refs:tgtdev
422 struct mpi3mr_tgt_dev *tgtdev;
425 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
426 tgtdev->dev_handle = MPI3MR_INVALID_DEV_HANDLE;
427 if (tgtdev->starget && tgtdev->starget->hostdata) {
428 tgt_priv = tgtdev->starget->hostdata;
434 if (tgtdev->host_exposed)
635 struct mpi3mr_tgt_dev *tgtdev;
637 tgtdev = kzalloc(sizeof(*tgtdev), GFP_ATOMIC);
638 if (!tgtdev)
640 kref_init(&tgtdev->ref_count);
641 return tgtdev;
647 * @tgtdev: Target device
654 struct mpi3mr_tgt_dev *tgtdev)
659 mpi3mr_tgtdev_get(tgtdev);
660 INIT_LIST_HEAD(&tgtdev->list);
661 list_add_tail(&tgtdev->list, &mrioc->tgtdev_list);
662 tgtdev->state = MPI3MR_DEV_CREATED;
669 * @tgtdev: Target device
678 struct mpi3mr_tgt_dev *tgtdev, bool must_delete)
683 if ((tgtdev->state == MPI3MR_DEV_REMOVE_HS_STARTED) || (must_delete == true)) {
684 if (!list_empty(&tgtdev->list)) {
685 list_del_init(&tgtdev->list);
686 tgtdev->state = MPI3MR_DEV_DELETED;
687 mpi3mr_tgtdev_put(tgtdev);
694 * __mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
706 struct mpi3mr_tgt_dev *tgtdev;
709 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
710 if (tgtdev->dev_handle == handle)
715 mpi3mr_tgtdev_get(tgtdev);
716 return tgtdev;
720 * mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
732 struct mpi3mr_tgt_dev *tgtdev;
736 tgtdev = __mpi3mr_get_tgtdev_by_handle(mrioc, handle);
738 return tgtdev;
742 * __mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persist ID
754 struct mpi3mr_tgt_dev *tgtdev;
757 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
758 if (tgtdev->perst_id == persist_id)
763 mpi3mr_tgtdev_get(tgtdev);
764 return tgtdev;
768 * mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persistent ID
780 struct mpi3mr_tgt_dev *tgtdev;
784 tgtdev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, persist_id);
786 return tgtdev;
790 * __mpi3mr_get_tgtdev_from_tgtpriv -Get tgtdev from tgt private
802 struct mpi3mr_tgt_dev *tgtdev;
805 tgtdev = tgt_priv->tgt_dev;
806 if (tgtdev)
807 mpi3mr_tgtdev_get(tgtdev);
808 return tgtdev;
826 struct mpi3mr_tgt_dev *tgtdev;
830 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
831 if (tgtdev->starget && tgtdev->starget->hostdata) {
832 tgt_priv = tgtdev->starget->hostdata;
861 * @tgtdev: Target device structure
870 struct mpi3mr_tgt_dev *tgtdev)
875 __func__, tgtdev->dev_handle, (unsigned long long)tgtdev->wwid);
876 if (tgtdev->starget && tgtdev->starget->hostdata) {
877 tgt_priv = tgtdev->starget->hostdata;
882 if (!mrioc->sas_transport_enabled || (tgtdev->dev_type !=
883 MPI3_DEVICE_DEVFORM_SAS_SATA) || tgtdev->non_stl) {
884 if (tgtdev->starget) {
887 scsi_remove_target(&tgtdev->starget->dev);
888 tgtdev->host_exposed = 0;
899 mpi3mr_remove_tgtdev_from_sas_transport(mrioc, tgtdev);
902 __func__, tgtdev->dev_handle, (unsigned long long)tgtdev->wwid);
920 struct mpi3mr_tgt_dev *tgtdev;
925 tgtdev = mpi3mr_get_tgtdev_by_perst_id(mrioc, perst_id);
926 if (!tgtdev) {
930 if (tgtdev->is_hidden || tgtdev->host_exposed) {
934 if (!mrioc->sas_transport_enabled || (tgtdev->dev_type !=
935 MPI3_DEVICE_DEVFORM_SAS_SATA) || tgtdev->non_stl){
936 tgtdev->host_exposed = 1;
940 mrioc->scsi_device_channel, tgtdev->perst_id,
942 if (!tgtdev->starget)
943 tgtdev->host_exposed = 0;
952 mpi3mr_report_tgtdev_to_sas_transport(mrioc, tgtdev);
954 if (tgtdev)
955 mpi3mr_tgtdev_put(tgtdev);
1002 struct mpi3mr_tgt_dev *tgtdev;
1004 tgtdev = (struct mpi3mr_tgt_dev *)data;
1005 if (!tgtdev)
1008 mpi3mr_change_queue_depth(sdev, tgtdev->q_depth);
1009 switch (tgtdev->dev_type) {
1012 if ((tgtdev->dev_spec.pcie_inf.dev_info &
1016 tgtdev->dev_spec.pcie_inf.mdts / 512);
1017 if (tgtdev->dev_spec.pcie_inf.pgsz == 0)
1022 ((1 << tgtdev->dev_spec.pcie_inf.pgsz) - 1));
1043 struct mpi3mr_tgt_dev *tgtdev, *tgtdev_next;
1047 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list,
1049 if ((tgtdev->dev_handle == MPI3MR_INVALID_DEV_HANDLE) &&
1050 tgtdev->is_hidden &&
1051 tgtdev->host_exposed && tgtdev->starget &&
1052 tgtdev->starget->hostdata) {
1053 tgt_priv = tgtdev->starget->hostdata;
1059 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list,
1061 if (tgtdev->dev_handle == MPI3MR_INVALID_DEV_HANDLE) {
1063 tgtdev->perst_id);
1064 if (tgtdev->host_exposed)
1065 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1066 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, true);
1067 mpi3mr_tgtdev_put(tgtdev);
1068 } else if (tgtdev->is_hidden & tgtdev->host_exposed) {
1070 tgtdev->perst_id);
1071 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1075 tgtdev = NULL;
1076 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
1077 if ((tgtdev->dev_handle != MPI3MR_INVALID_DEV_HANDLE) &&
1078 !tgtdev->is_hidden) {
1079 if (!tgtdev->host_exposed)
1081 tgtdev->perst_id);
1082 else if (tgtdev->starget)
1083 starget_for_each_device(tgtdev->starget,
1084 (void *)tgtdev, mpi3mr_update_sdev);
1092 * @tgtdev: Target device internal structure
1102 struct mpi3mr_tgt_dev *tgtdev, struct mpi3_device_page0 *dev_pg0,
1110 tgtdev->perst_id = le16_to_cpu(dev_pg0->persistent_id);
1111 tgtdev->dev_handle = le16_to_cpu(dev_pg0->dev_handle);
1112 tgtdev->dev_type = dev_pg0->device_form;
1113 tgtdev->io_unit_port = dev_pg0->io_unit_port;
1114 tgtdev->encl_handle = le16_to_cpu(dev_pg0->enclosure_handle);
1115 tgtdev->parent_handle = le16_to_cpu(dev_pg0->parent_dev_handle);
1116 tgtdev->slot = le16_to_cpu(dev_pg0->slot);
1117 tgtdev->q_depth = le16_to_cpu(dev_pg0->queue_depth);
1118 tgtdev->wwid = le64_to_cpu(dev_pg0->wwid);
1119 tgtdev->devpg0_flag = le16_to_cpu(dev_pg0->flags);
1121 if (tgtdev->encl_handle)
1123 tgtdev->encl_handle);
1125 tgtdev->enclosure_logical_id = le64_to_cpu(
1128 flags = tgtdev->devpg0_flag;
1130 tgtdev->is_hidden = (flags & MPI3_DEVICE0_FLAGS_HIDDEN);
1133 tgtdev->io_throttle_enabled =
1138 tgtdev->wslen = MPI3MR_WRITE_SAME_MAX_LEN_256_BLKS;
1141 tgtdev->wslen = MPI3MR_WRITE_SAME_MAX_LEN_2048_BLKS;
1145 tgtdev->wslen = 0;
1149 if (tgtdev->starget && tgtdev->starget->hostdata) {
1151 tgtdev->starget->hostdata;
1152 scsi_tgt_priv_data->perst_id = tgtdev->perst_id;
1153 scsi_tgt_priv_data->dev_handle = tgtdev->dev_handle;
1154 scsi_tgt_priv_data->dev_type = tgtdev->dev_type;
1156 tgtdev->io_throttle_enabled;
1159 scsi_tgt_priv_data->wslen = tgtdev->wslen;
1169 tgtdev->is_hidden = 1;
1173 switch (tgtdev->dev_type) {
1180 tgtdev->dev_spec.sas_sata_inf.dev_info = dev_info;
1181 tgtdev->dev_spec.sas_sata_inf.sas_address =
1183 tgtdev->dev_spec.sas_sata_inf.phy_id = sasinf->phy_num;
1184 tgtdev->dev_spec.sas_sata_inf.attached_phy_id =
1188 tgtdev->is_hidden = 1;
1191 tgtdev->is_hidden = 1;
1193 if (((tgtdev->devpg0_flag &
1195 && (tgtdev->devpg0_flag &
1197 (tgtdev->parent_handle == 0xFFFF))
1198 tgtdev->non_stl = 1;
1199 if (tgtdev->dev_spec.sas_sata_inf.hba_port)
1200 tgtdev->dev_spec.sas_sata_inf.hba_port->port_id =
1210 tgtdev->dev_spec.pcie_inf.dev_info = dev_info;
1211 tgtdev->dev_spec.pcie_inf.capb =
1213 tgtdev->dev_spec.pcie_inf.mdts = MPI3MR_DEFAULT_MDTS;
1215 tgtdev->dev_spec.pcie_inf.pgsz = 12;
1217 tgtdev->dev_spec.pcie_inf.mdts =
1219 tgtdev->dev_spec.pcie_inf.pgsz = pcieinf->page_size;
1220 tgtdev->dev_spec.pcie_inf.reset_to =
1223 tgtdev->dev_spec.pcie_inf.abort_to =
1227 if (tgtdev->dev_spec.pcie_inf.mdts > (1024 * 1024))
1228 tgtdev->dev_spec.pcie_inf.mdts = (1024 * 1024);
1233 tgtdev->is_hidden = 1;
1234 tgtdev->non_stl = 1;
1255 tgtdev->dev_spec.vd_inf.state = vdinf->vd_state;
1257 tgtdev->is_hidden = 1;
1258 tgtdev->non_stl = 1;
1259 tgtdev->dev_spec.vd_inf.tg_id = vdinf_io_throttle_group;
1260 tgtdev->dev_spec.vd_inf.tg_high =
1262 tgtdev->dev_spec.vd_inf.tg_low =
1267 tg->high = tgtdev->dev_spec.vd_inf.tg_high;
1268 tg->low = tgtdev->dev_spec.vd_inf.tg_low;
1270 tgtdev->dev_spec.vd_inf.tg_qd_reduction;
1272 tg->fw_qd = tgtdev->q_depth;
1273 tg->modified_qd = tgtdev->q_depth;
1275 tgtdev->dev_spec.vd_inf.tg = tg;
1301 struct mpi3mr_tgt_dev *tgtdev = NULL;
1326 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle);
1327 if (!tgtdev)
1330 tgtdev->is_hidden = 0;
1331 if (!tgtdev->host_exposed)
1332 mpi3mr_report_tgtdev_to_host(mrioc, tgtdev->perst_id);
1336 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1339 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, false);
1340 mpi3mr_tgtdev_put(tgtdev);
1344 if (tgtdev)
1345 mpi3mr_tgtdev_put(tgtdev);
1363 struct mpi3mr_tgt_dev *tgtdev = NULL;
1371 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle);
1372 if (!tgtdev)
1374 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0, false);
1375 if (!tgtdev->is_hidden && !tgtdev->host_exposed)
1377 if (tgtdev->is_hidden && tgtdev->host_exposed)
1378 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1379 if (!tgtdev->is_hidden && tgtdev->host_exposed && tgtdev->starget)
1380 starget_for_each_device(tgtdev->starget, (void *)tgtdev,
1383 if (tgtdev)
1384 mpi3mr_tgtdev_put(tgtdev);
1617 struct mpi3mr_tgt_dev *tgtdev = NULL;
1646 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
1647 if (!tgtdev)
1655 if (tgtdev->host_exposed)
1656 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1657 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, false);
1658 mpi3mr_tgtdev_put(tgtdev);
1664 if (!mrioc->sas_transport_enabled || tgtdev->non_stl
1665 || tgtdev->is_hidden)
1681 if (tgtdev)
1682 mpi3mr_tgtdev_put(tgtdev);
1794 struct mpi3mr_tgt_dev *tgtdev = NULL;
1805 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
1806 if (!tgtdev)
1813 if (tgtdev->host_exposed)
1814 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1815 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, false);
1816 mpi3mr_tgtdev_put(tgtdev);
1821 if (tgtdev)
1822 mpi3mr_tgtdev_put(tgtdev);
1875 struct mpi3mr_tgt_dev *tgtdev;
1880 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
1881 if (tgtdev->starget && tgtdev->starget->hostdata) {
1882 tgt_priv = tgtdev->starget->hostdata;
1886 tgt_priv->perst_id, tgtdev->q_depth,
1888 starget_for_each_device(tgtdev->starget,
2067 struct mpi3mr_tgt_dev *tgtdev = NULL;
2076 tgtdev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, perst_id);
2077 if (tgtdev)
2078 tgtdev->state = MPI3MR_DEV_CREATED;
2081 if (tgtdev) {
2082 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0, true);
2083 mpi3mr_tgtdev_put(tgtdev);
2085 tgtdev = mpi3mr_alloc_tgtdev();
2086 if (!tgtdev)
2088 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0, true);
2089 mpi3mr_tgtdev_add_to_list(mrioc, tgtdev);
2278 struct mpi3mr_tgt_dev *tgtdev = NULL;
2282 tgtdev = __mpi3mr_get_tgtdev_by_handle(mrioc, handle);
2283 if (tgtdev && (iou_rc == MPI3_CTRL_OP_REMOVE_DEVICE))
2284 tgtdev->state = MPI3MR_DEV_REMOVE_HS_STARTED;
2513 struct mpi3mr_tgt_dev *tgtdev = NULL;
2522 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
2523 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata)
2525 tgtdev->starget->hostdata;
2554 if (tgtdev)
2555 mpi3mr_tgtdev_put(tgtdev);
2579 struct mpi3mr_tgt_dev *tgtdev = NULL;
2589 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
2590 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata)
2592 tgtdev->starget->hostdata;
2621 if (tgtdev)
2622 mpi3mr_tgtdev_put(tgtdev);
2643 struct mpi3mr_tgt_dev *tgtdev = NULL;
2674 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle);
2675 if (!tgtdev)
2678 tgtdev->is_hidden = hide;
2679 if (tgtdev->starget && tgtdev->starget->hostdata) {
2681 tgtdev->starget->hostdata;
2697 if (tgtdev)
2698 mpi3mr_tgtdev_put(tgtdev);
3653 struct mpi3mr_tgt_dev *tgtdev = NULL;
3693 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
3701 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata)
3703 tgtdev->starget->hostdata;
3709 if (tgtdev && (tgtdev->dev_type == MPI3_DEVICE_DEVFORM_PCIE)) {
3710 if (cmd_priv && tgtdev->dev_spec.pcie_inf.abort_to)
3711 timeout = tgtdev->dev_spec.pcie_inf.abort_to;
3712 else if (!cmd_priv && tgtdev->dev_spec.pcie_inf.reset_to)
3713 timeout = tgtdev->dev_spec.pcie_inf.reset_to;
3814 if (tgtdev)
3815 mpi3mr_tgtdev_put(tgtdev);
5231 struct mpi3mr_tgt_dev *tgtdev, *tgtdev_next;
5262 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list,
5264 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
5265 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, true);
5266 mpi3mr_tgtdev_put(tgtdev);