Lines Matching refs:tgtdev

423 	struct mpi3mr_tgt_dev *tgtdev;
426 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
427 tgtdev->dev_handle = MPI3MR_INVALID_DEV_HANDLE;
428 if (tgtdev->starget && tgtdev->starget->hostdata) {
429 tgt_priv = tgtdev->starget->hostdata;
435 if (tgtdev->host_exposed)
636 struct mpi3mr_tgt_dev *tgtdev;
638 tgtdev = kzalloc(sizeof(*tgtdev), GFP_ATOMIC);
639 if (!tgtdev)
641 kref_init(&tgtdev->ref_count);
642 return tgtdev;
648 * @tgtdev: Target device
655 struct mpi3mr_tgt_dev *tgtdev)
660 mpi3mr_tgtdev_get(tgtdev);
661 INIT_LIST_HEAD(&tgtdev->list);
662 list_add_tail(&tgtdev->list, &mrioc->tgtdev_list);
663 tgtdev->state = MPI3MR_DEV_CREATED;
670 * @tgtdev: Target device
679 struct mpi3mr_tgt_dev *tgtdev, bool must_delete)
684 if ((tgtdev->state == MPI3MR_DEV_REMOVE_HS_STARTED) || (must_delete == true)) {
685 if (!list_empty(&tgtdev->list)) {
686 list_del_init(&tgtdev->list);
687 tgtdev->state = MPI3MR_DEV_DELETED;
688 mpi3mr_tgtdev_put(tgtdev);
695 * __mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
707 struct mpi3mr_tgt_dev *tgtdev;
710 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
711 if (tgtdev->dev_handle == handle)
716 mpi3mr_tgtdev_get(tgtdev);
717 return tgtdev;
721 * mpi3mr_get_tgtdev_by_handle -Get tgtdev from device handle
733 struct mpi3mr_tgt_dev *tgtdev;
737 tgtdev = __mpi3mr_get_tgtdev_by_handle(mrioc, handle);
739 return tgtdev;
743 * __mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persist ID
755 struct mpi3mr_tgt_dev *tgtdev;
758 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list)
759 if (tgtdev->perst_id == persist_id)
764 mpi3mr_tgtdev_get(tgtdev);
765 return tgtdev;
769 * mpi3mr_get_tgtdev_by_perst_id -Get tgtdev from persistent ID
781 struct mpi3mr_tgt_dev *tgtdev;
785 tgtdev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, persist_id);
787 return tgtdev;
791 * __mpi3mr_get_tgtdev_from_tgtpriv -Get tgtdev from tgt private
803 struct mpi3mr_tgt_dev *tgtdev;
806 tgtdev = tgt_priv->tgt_dev;
807 if (tgtdev)
808 mpi3mr_tgtdev_get(tgtdev);
809 return tgtdev;
827 struct mpi3mr_tgt_dev *tgtdev;
831 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
832 if (tgtdev->starget && tgtdev->starget->hostdata) {
833 tgt_priv = tgtdev->starget->hostdata;
862 * @tgtdev: Target device structure
871 struct mpi3mr_tgt_dev *tgtdev)
876 __func__, tgtdev->dev_handle, (unsigned long long)tgtdev->wwid);
877 if (tgtdev->starget && tgtdev->starget->hostdata) {
878 tgt_priv = tgtdev->starget->hostdata;
883 if (!mrioc->sas_transport_enabled || (tgtdev->dev_type !=
884 MPI3_DEVICE_DEVFORM_SAS_SATA) || tgtdev->non_stl) {
885 if (tgtdev->starget) {
888 scsi_remove_target(&tgtdev->starget->dev);
889 tgtdev->host_exposed = 0;
900 mpi3mr_remove_tgtdev_from_sas_transport(mrioc, tgtdev);
903 __func__, tgtdev->dev_handle, (unsigned long long)tgtdev->wwid);
921 struct mpi3mr_tgt_dev *tgtdev;
926 tgtdev = mpi3mr_get_tgtdev_by_perst_id(mrioc, perst_id);
927 if (!tgtdev) {
931 if (tgtdev->is_hidden || tgtdev->host_exposed) {
935 if (!mrioc->sas_transport_enabled || (tgtdev->dev_type !=
936 MPI3_DEVICE_DEVFORM_SAS_SATA) || tgtdev->non_stl){
937 tgtdev->host_exposed = 1;
941 mrioc->scsi_device_channel, tgtdev->perst_id,
943 if (!tgtdev->starget)
944 tgtdev->host_exposed = 0;
953 mpi3mr_report_tgtdev_to_sas_transport(mrioc, tgtdev);
955 if (tgtdev)
956 mpi3mr_tgtdev_put(tgtdev);
1003 struct mpi3mr_tgt_dev *tgtdev;
1005 tgtdev = (struct mpi3mr_tgt_dev *)data;
1006 if (!tgtdev)
1009 mpi3mr_change_queue_depth(sdev, tgtdev->q_depth);
1010 switch (tgtdev->dev_type) {
1013 if ((tgtdev->dev_spec.pcie_inf.dev_info &
1017 tgtdev->dev_spec.pcie_inf.mdts / 512);
1018 if (tgtdev->dev_spec.pcie_inf.pgsz == 0)
1023 ((1 << tgtdev->dev_spec.pcie_inf.pgsz) - 1));
1044 struct mpi3mr_tgt_dev *tgtdev, *tgtdev_next;
1048 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list,
1050 if ((tgtdev->dev_handle == MPI3MR_INVALID_DEV_HANDLE) &&
1051 tgtdev->is_hidden &&
1052 tgtdev->host_exposed && tgtdev->starget &&
1053 tgtdev->starget->hostdata) {
1054 tgt_priv = tgtdev->starget->hostdata;
1060 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list,
1062 if (tgtdev->dev_handle == MPI3MR_INVALID_DEV_HANDLE) {
1064 tgtdev->perst_id);
1065 if (tgtdev->host_exposed)
1066 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1067 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, true);
1068 mpi3mr_tgtdev_put(tgtdev);
1069 } else if (tgtdev->is_hidden & tgtdev->host_exposed) {
1071 tgtdev->perst_id);
1072 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1076 tgtdev = NULL;
1077 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
1078 if ((tgtdev->dev_handle != MPI3MR_INVALID_DEV_HANDLE) &&
1079 !tgtdev->is_hidden) {
1080 if (!tgtdev->host_exposed)
1082 tgtdev->perst_id);
1083 else if (tgtdev->starget)
1084 starget_for_each_device(tgtdev->starget,
1085 (void *)tgtdev, mpi3mr_update_sdev);
1093 * @tgtdev: Target device internal structure
1103 struct mpi3mr_tgt_dev *tgtdev, struct mpi3_device_page0 *dev_pg0,
1111 tgtdev->perst_id = le16_to_cpu(dev_pg0->persistent_id);
1112 tgtdev->dev_handle = le16_to_cpu(dev_pg0->dev_handle);
1113 tgtdev->dev_type = dev_pg0->device_form;
1114 tgtdev->io_unit_port = dev_pg0->io_unit_port;
1115 tgtdev->encl_handle = le16_to_cpu(dev_pg0->enclosure_handle);
1116 tgtdev->parent_handle = le16_to_cpu(dev_pg0->parent_dev_handle);
1117 tgtdev->slot = le16_to_cpu(dev_pg0->slot);
1118 tgtdev->q_depth = le16_to_cpu(dev_pg0->queue_depth);
1119 tgtdev->wwid = le64_to_cpu(dev_pg0->wwid);
1120 tgtdev->devpg0_flag = le16_to_cpu(dev_pg0->flags);
1122 if (tgtdev->encl_handle)
1124 tgtdev->encl_handle);
1126 tgtdev->enclosure_logical_id = le64_to_cpu(
1129 flags = tgtdev->devpg0_flag;
1131 tgtdev->is_hidden = (flags & MPI3_DEVICE0_FLAGS_HIDDEN);
1134 tgtdev->io_throttle_enabled =
1139 tgtdev->wslen = MPI3MR_WRITE_SAME_MAX_LEN_256_BLKS;
1142 tgtdev->wslen = MPI3MR_WRITE_SAME_MAX_LEN_2048_BLKS;
1146 tgtdev->wslen = 0;
1150 if (tgtdev->starget && tgtdev->starget->hostdata) {
1152 tgtdev->starget->hostdata;
1153 scsi_tgt_priv_data->perst_id = tgtdev->perst_id;
1154 scsi_tgt_priv_data->dev_handle = tgtdev->dev_handle;
1155 scsi_tgt_priv_data->dev_type = tgtdev->dev_type;
1157 tgtdev->io_throttle_enabled;
1160 scsi_tgt_priv_data->wslen = tgtdev->wslen;
1170 tgtdev->is_hidden = 1;
1174 switch (tgtdev->dev_type) {
1181 tgtdev->dev_spec.sas_sata_inf.dev_info = dev_info;
1182 tgtdev->dev_spec.sas_sata_inf.sas_address =
1184 tgtdev->dev_spec.sas_sata_inf.phy_id = sasinf->phy_num;
1185 tgtdev->dev_spec.sas_sata_inf.attached_phy_id =
1189 tgtdev->is_hidden = 1;
1192 tgtdev->is_hidden = 1;
1194 if (((tgtdev->devpg0_flag &
1196 && (tgtdev->devpg0_flag &
1198 (tgtdev->parent_handle == 0xFFFF))
1199 tgtdev->non_stl = 1;
1200 if (tgtdev->dev_spec.sas_sata_inf.hba_port)
1201 tgtdev->dev_spec.sas_sata_inf.hba_port->port_id =
1211 tgtdev->dev_spec.pcie_inf.dev_info = dev_info;
1212 tgtdev->dev_spec.pcie_inf.capb =
1214 tgtdev->dev_spec.pcie_inf.mdts = MPI3MR_DEFAULT_MDTS;
1216 tgtdev->dev_spec.pcie_inf.pgsz = 12;
1218 tgtdev->dev_spec.pcie_inf.mdts =
1220 tgtdev->dev_spec.pcie_inf.pgsz = pcieinf->page_size;
1221 tgtdev->dev_spec.pcie_inf.reset_to =
1224 tgtdev->dev_spec.pcie_inf.abort_to =
1228 if (tgtdev->dev_spec.pcie_inf.mdts > (1024 * 1024))
1229 tgtdev->dev_spec.pcie_inf.mdts = (1024 * 1024);
1234 tgtdev->is_hidden = 1;
1235 tgtdev->non_stl = 1;
1256 tgtdev->dev_spec.vd_inf.state = vdinf->vd_state;
1258 tgtdev->is_hidden = 1;
1259 tgtdev->non_stl = 1;
1260 tgtdev->dev_spec.vd_inf.tg_id = vdinf_io_throttle_group;
1261 tgtdev->dev_spec.vd_inf.tg_high =
1263 tgtdev->dev_spec.vd_inf.tg_low =
1268 tg->high = tgtdev->dev_spec.vd_inf.tg_high;
1269 tg->low = tgtdev->dev_spec.vd_inf.tg_low;
1271 tgtdev->dev_spec.vd_inf.tg_qd_reduction;
1273 tg->fw_qd = tgtdev->q_depth;
1274 tg->modified_qd = tgtdev->q_depth;
1276 tgtdev->dev_spec.vd_inf.tg = tg;
1302 struct mpi3mr_tgt_dev *tgtdev = NULL;
1327 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle);
1328 if (!tgtdev)
1331 tgtdev->is_hidden = 0;
1332 if (!tgtdev->host_exposed)
1333 mpi3mr_report_tgtdev_to_host(mrioc, tgtdev->perst_id);
1337 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1340 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, false);
1341 mpi3mr_tgtdev_put(tgtdev);
1345 if (tgtdev)
1346 mpi3mr_tgtdev_put(tgtdev);
1364 struct mpi3mr_tgt_dev *tgtdev = NULL;
1372 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle);
1373 if (!tgtdev)
1375 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0, false);
1376 if (!tgtdev->is_hidden && !tgtdev->host_exposed)
1378 if (tgtdev->is_hidden && tgtdev->host_exposed)
1379 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1380 if (!tgtdev->is_hidden && tgtdev->host_exposed && tgtdev->starget)
1381 starget_for_each_device(tgtdev->starget, (void *)tgtdev,
1384 if (tgtdev)
1385 mpi3mr_tgtdev_put(tgtdev);
1618 struct mpi3mr_tgt_dev *tgtdev = NULL;
1647 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
1648 if (!tgtdev)
1656 if (tgtdev->host_exposed)
1657 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1658 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, false);
1659 mpi3mr_tgtdev_put(tgtdev);
1665 if (!mrioc->sas_transport_enabled || tgtdev->non_stl
1666 || tgtdev->is_hidden)
1682 if (tgtdev)
1683 mpi3mr_tgtdev_put(tgtdev);
1795 struct mpi3mr_tgt_dev *tgtdev = NULL;
1806 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
1807 if (!tgtdev)
1814 if (tgtdev->host_exposed)
1815 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
1816 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, false);
1817 mpi3mr_tgtdev_put(tgtdev);
1822 if (tgtdev)
1823 mpi3mr_tgtdev_put(tgtdev);
1876 struct mpi3mr_tgt_dev *tgtdev;
1881 list_for_each_entry(tgtdev, &mrioc->tgtdev_list, list) {
1882 if (tgtdev->starget && tgtdev->starget->hostdata) {
1883 tgt_priv = tgtdev->starget->hostdata;
1887 tgt_priv->perst_id, tgtdev->q_depth,
1889 starget_for_each_device(tgtdev->starget,
2068 struct mpi3mr_tgt_dev *tgtdev = NULL;
2077 tgtdev = __mpi3mr_get_tgtdev_by_perst_id(mrioc, perst_id);
2078 if (tgtdev)
2079 tgtdev->state = MPI3MR_DEV_CREATED;
2082 if (tgtdev) {
2083 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0, true);
2084 mpi3mr_tgtdev_put(tgtdev);
2086 tgtdev = mpi3mr_alloc_tgtdev();
2087 if (!tgtdev)
2089 mpi3mr_update_tgtdev(mrioc, tgtdev, dev_pg0, true);
2090 mpi3mr_tgtdev_add_to_list(mrioc, tgtdev);
2279 struct mpi3mr_tgt_dev *tgtdev = NULL;
2283 tgtdev = __mpi3mr_get_tgtdev_by_handle(mrioc, handle);
2284 if (tgtdev && (iou_rc == MPI3_CTRL_OP_REMOVE_DEVICE))
2285 tgtdev->state = MPI3MR_DEV_REMOVE_HS_STARTED;
2514 struct mpi3mr_tgt_dev *tgtdev = NULL;
2523 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
2524 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata)
2526 tgtdev->starget->hostdata;
2555 if (tgtdev)
2556 mpi3mr_tgtdev_put(tgtdev);
2580 struct mpi3mr_tgt_dev *tgtdev = NULL;
2590 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
2591 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata)
2593 tgtdev->starget->hostdata;
2622 if (tgtdev)
2623 mpi3mr_tgtdev_put(tgtdev);
2644 struct mpi3mr_tgt_dev *tgtdev = NULL;
2675 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle);
2676 if (!tgtdev)
2679 tgtdev->is_hidden = hide;
2680 if (tgtdev->starget && tgtdev->starget->hostdata) {
2682 tgtdev->starget->hostdata;
2698 if (tgtdev)
2699 mpi3mr_tgtdev_put(tgtdev);
3655 struct mpi3mr_tgt_dev *tgtdev = NULL;
3695 tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, handle);
3703 if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata)
3705 tgtdev->starget->hostdata;
3711 if (tgtdev && (tgtdev->dev_type == MPI3_DEVICE_DEVFORM_PCIE)) {
3712 if (cmd_priv && tgtdev->dev_spec.pcie_inf.abort_to)
3713 timeout = tgtdev->dev_spec.pcie_inf.abort_to;
3714 else if (!cmd_priv && tgtdev->dev_spec.pcie_inf.reset_to)
3715 timeout = tgtdev->dev_spec.pcie_inf.reset_to;
3816 if (tgtdev)
3817 mpi3mr_tgtdev_put(tgtdev);
5255 struct mpi3mr_tgt_dev *tgtdev, *tgtdev_next;
5286 list_for_each_entry_safe(tgtdev, tgtdev_next, &mrioc->tgtdev_list,
5288 mpi3mr_remove_tgtdev_from_host(mrioc, tgtdev);
5289 mpi3mr_tgtdev_del_from_list(mrioc, tgtdev, true);
5290 mpi3mr_tgtdev_put(tgtdev);