return rcode;
}
+static void aac_set_safw_target_qd(struct aac_dev *dev, int bus, int target)
+{
+
+ struct aac_ciss_identify_pd *identify_resp;
+
+ if (dev->hba_map[bus][target].devtype != AAC_DEVTYPE_NATIVE_RAW)
+ return;
+
+ identify_resp = dev->hba_map[bus][target].safw_identify_resp;
+ if (identify_resp == NULL) {
+ dev->hba_map[bus][target].qd_limit = 32;
+ return;
+ }
+
+ if (identify_resp->current_queue_depth_limit <= 0 ||
+ identify_resp->current_queue_depth_limit > 255)
+ dev->hba_map[bus][target].qd_limit = 32;
+ else
+ dev->hba_map[bus][target].qd_limit =
+ identify_resp->current_queue_depth_limit;
+}
+
static int aac_issue_safw_bmic_identify(struct aac_dev *dev,
struct aac_ciss_identify_pd **identify_resp, u32 bus, u32 target)
{
if (unlikely(rcode < 0))
goto mem_free_all;
- if (identify_reply->current_queue_depth_limit <= 0 ||
- identify_reply->current_queue_depth_limit > 32)
- dev->hba_map[bus][target].qd_limit = 32;
- else
- dev->hba_map[bus][target].qd_limit =
- identify_reply->current_queue_depth_limit;
-
*identify_resp = identify_reply;
out:
rcode = aac_issue_safw_bmic_identify(dev,
&identify_resp, bus, target);
- if (unlikely(rcode < 0)) {
- dev->hba_map[bus][target].qd_limit = 32;
+ if (unlikely(rcode < 0))
goto free_identify_resp;
- }
dev->hba_map[bus][target].safw_identify_resp = identify_resp;
}
out:
return rcode;
-
free_identify_resp:
aac_free_safw_all_identify_resp(dev, i);
goto out;
} else
devtype = AAC_DEVTYPE_ARC_RAW;
- if (devtype != AAC_DEVTYPE_NATIVE_RAW)
- goto update_devtype;
+ aac_set_safw_target_qd(dev, bus, target);
update_devtype:
if (rescan == AAC_INIT)