nvme: replace cdw10 with specific union command
Change-Id: Ibdbc6d0356749795db26f58aa5c5e68739d5df5e Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/475465 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
This commit is contained in:
parent
bae1750bef
commit
1fea1fccf5
@ -1001,7 +1001,7 @@ get_feature(struct spdk_nvme_ctrlr *ctrlr, uint8_t fid)
|
|||||||
feature->valid = false;
|
feature->valid = false;
|
||||||
|
|
||||||
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd.cdw10 = fid;
|
cmd.cdw10_bits.get_features.fid = fid;
|
||||||
|
|
||||||
return spdk_nvme_ctrlr_cmd_admin_raw(ctrlr, &cmd, NULL, 0, get_feature_completion, feature);
|
return spdk_nvme_ctrlr_cmd_admin_raw(ctrlr, &cmd, NULL, 0, get_feature_completion, feature);
|
||||||
}
|
}
|
||||||
@ -1067,7 +1067,7 @@ set_arb_feature(struct spdk_nvme_ctrlr *ctrlr)
|
|||||||
unsigned ab, lpw, mpw, hpw;
|
unsigned ab, lpw, mpw, hpw;
|
||||||
|
|
||||||
cmd.opc = SPDK_NVME_OPC_SET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_SET_FEATURES;
|
||||||
cmd.cdw10 = SPDK_NVME_FEAT_ARBITRATION;
|
cmd.cdw10_bits.set_features.fid = SPDK_NVME_FEAT_ARBITRATION;
|
||||||
|
|
||||||
g_arbitration.outstanding_commands = 0;
|
g_arbitration.outstanding_commands = 0;
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@ get_feature(struct spdk_nvme_ctrlr *ctrlr, uint8_t fid)
|
|||||||
feature->valid = false;
|
feature->valid = false;
|
||||||
|
|
||||||
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd.cdw10 = fid;
|
cmd.cdw10_bits.get_features.fid = fid;
|
||||||
|
|
||||||
return spdk_nvme_ctrlr_cmd_admin_raw(ctrlr, &cmd, NULL, 0, get_feature_completion, feature);
|
return spdk_nvme_ctrlr_cmd_admin_raw(ctrlr, &cmd, NULL, 0, get_feature_completion, feature);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +115,7 @@ attach_cb(void *cb_ctx, const struct spdk_nvme_transport_id *trid,
|
|||||||
/* Identify Namespace with NSID set to FFFFFFFFh to get common namespace capabilities. */
|
/* Identify Namespace with NSID set to FFFFFFFFh to get common namespace capabilities. */
|
||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
cmd.opc = SPDK_NVME_OPC_IDENTIFY;
|
cmd.opc = SPDK_NVME_OPC_IDENTIFY;
|
||||||
cmd.cdw10 = 0; /* CNS = 0 (Identify Namespace) */
|
cmd.cdw10_bits.identify.cns = 0; /* CNS = 0 (Identify Namespace) */
|
||||||
cmd.nsid = SPDK_NVME_GLOBAL_NS_TAG;
|
cmd.nsid = SPDK_NVME_GLOBAL_NS_TAG;
|
||||||
|
|
||||||
dev->outstanding_admin_cmds++;
|
dev->outstanding_admin_cmds++;
|
||||||
@ -410,7 +410,7 @@ get_allocated_nsid(struct dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
cmd.opc = SPDK_NVME_OPC_IDENTIFY;
|
cmd.opc = SPDK_NVME_OPC_IDENTIFY;
|
||||||
cmd.cdw10 = SPDK_NVME_IDENTIFY_ALLOCATED_NS_LIST;
|
cmd.cdw10_bits.identify.cns = SPDK_NVME_IDENTIFY_ALLOCATED_NS_LIST;
|
||||||
cmd.nsid = 0;
|
cmd.nsid = 0;
|
||||||
|
|
||||||
dev->outstanding_admin_cmds++;
|
dev->outstanding_admin_cmds++;
|
||||||
|
@ -611,8 +611,12 @@ struct spdk_nvme_cmd {
|
|||||||
struct spdk_nvme_sgl_descriptor sgl1;
|
struct spdk_nvme_sgl_descriptor sgl1;
|
||||||
} dptr;
|
} dptr;
|
||||||
|
|
||||||
/* dword 10-15 */
|
/* command-specific */
|
||||||
uint32_t cdw10; /* command-specific */
|
union {
|
||||||
|
uint32_t cdw10;
|
||||||
|
union spdk_nvme_cmd_cdw10 cdw10_bits;
|
||||||
|
};
|
||||||
|
/* dword 11-15 */
|
||||||
uint32_t cdw11; /* command-specific */
|
uint32_t cdw11; /* command-specific */
|
||||||
uint32_t cdw12; /* command-specific */
|
uint32_t cdw12; /* command-specific */
|
||||||
uint32_t cdw13; /* command-specific */
|
uint32_t cdw13; /* command-specific */
|
||||||
|
@ -141,7 +141,8 @@ nvme_ctrlr_cmd_identify(struct spdk_nvme_ctrlr *ctrlr, uint8_t cns, uint16_t cnt
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_IDENTIFY;
|
cmd->opc = SPDK_NVME_OPC_IDENTIFY;
|
||||||
cmd->cdw10 = cns | ((uint32_t)cntid << 16);
|
cmd->cdw10_bits.identify.cns = cns;
|
||||||
|
cmd->cdw10_bits.identify.cntid = cntid;
|
||||||
cmd->nsid = nsid;
|
cmd->nsid = nsid;
|
||||||
|
|
||||||
return nvme_ctrlr_submit_admin_request(ctrlr, req);
|
return nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
@ -167,7 +168,7 @@ nvme_ctrlr_cmd_attach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
|
|||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_NS_ATTACHMENT;
|
cmd->opc = SPDK_NVME_OPC_NS_ATTACHMENT;
|
||||||
cmd->nsid = nsid;
|
cmd->nsid = nsid;
|
||||||
cmd->cdw10 = SPDK_NVME_NS_CTRLR_ATTACH;
|
cmd->cdw10_bits.ns_attach.sel = SPDK_NVME_NS_CTRLR_ATTACH;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
|
|
||||||
@ -195,7 +196,7 @@ nvme_ctrlr_cmd_detach_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid,
|
|||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_NS_ATTACHMENT;
|
cmd->opc = SPDK_NVME_OPC_NS_ATTACHMENT;
|
||||||
cmd->nsid = nsid;
|
cmd->nsid = nsid;
|
||||||
cmd->cdw10 = SPDK_NVME_NS_CTRLR_DETACH;
|
cmd->cdw10_bits.ns_attach.sel = SPDK_NVME_NS_CTRLR_DETACH;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
|
|
||||||
@ -222,7 +223,7 @@ nvme_ctrlr_cmd_create_ns(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_ns_data
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_NS_MANAGEMENT;
|
cmd->opc = SPDK_NVME_OPC_NS_MANAGEMENT;
|
||||||
cmd->cdw10 = SPDK_NVME_NS_MANAGEMENT_CREATE;
|
cmd->cdw10_bits.ns_manage.sel = SPDK_NVME_NS_MANAGEMENT_CREATE;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
|
|
||||||
@ -247,7 +248,7 @@ nvme_ctrlr_cmd_delete_ns(struct spdk_nvme_ctrlr *ctrlr, uint32_t nsid, spdk_nvme
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_NS_MANAGEMENT;
|
cmd->opc = SPDK_NVME_OPC_NS_MANAGEMENT;
|
||||||
cmd->cdw10 = SPDK_NVME_NS_MANAGEMENT_DELETE;
|
cmd->cdw10_bits.ns_manage.sel = SPDK_NVME_NS_MANAGEMENT_DELETE;
|
||||||
cmd->nsid = nsid;
|
cmd->nsid = nsid;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
@ -327,7 +328,7 @@ spdk_nvme_ctrlr_cmd_set_feature(struct spdk_nvme_ctrlr *ctrlr, uint8_t feature,
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_SET_FEATURES;
|
cmd->opc = SPDK_NVME_OPC_SET_FEATURES;
|
||||||
cmd->cdw10 = feature;
|
cmd->cdw10_bits.set_features.fid = feature;
|
||||||
cmd->cdw11 = cdw11;
|
cmd->cdw11 = cdw11;
|
||||||
cmd->cdw12 = cdw12;
|
cmd->cdw12 = cdw12;
|
||||||
|
|
||||||
@ -356,7 +357,7 @@ spdk_nvme_ctrlr_cmd_get_feature(struct spdk_nvme_ctrlr *ctrlr, uint8_t feature,
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd->opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd->cdw10 = feature;
|
cmd->cdw10_bits.get_features.fid = feature;
|
||||||
cmd->cdw11 = cdw11;
|
cmd->cdw11 = cdw11;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
@ -385,7 +386,7 @@ spdk_nvme_ctrlr_cmd_get_feature_ns(struct spdk_nvme_ctrlr *ctrlr, uint8_t featur
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd->opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd->cdw10 = feature;
|
cmd->cdw10_bits.get_features.fid = feature;
|
||||||
cmd->cdw11 = cdw11;
|
cmd->cdw11 = cdw11;
|
||||||
cmd->nsid = ns_id;
|
cmd->nsid = ns_id;
|
||||||
|
|
||||||
@ -414,7 +415,7 @@ int spdk_nvme_ctrlr_cmd_set_feature_ns(struct spdk_nvme_ctrlr *ctrlr, uint8_t fe
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_SET_FEATURES;
|
cmd->opc = SPDK_NVME_OPC_SET_FEATURES;
|
||||||
cmd->cdw10 = feature;
|
cmd->cdw10_bits.set_features.fid = feature;
|
||||||
cmd->cdw11 = cdw11;
|
cmd->cdw11 = cdw11;
|
||||||
cmd->cdw12 = cdw12;
|
cmd->cdw12 = cdw12;
|
||||||
cmd->nsid = ns_id;
|
cmd->nsid = ns_id;
|
||||||
@ -521,8 +522,9 @@ spdk_nvme_ctrlr_cmd_get_log_page(struct spdk_nvme_ctrlr *ctrlr, uint8_t log_page
|
|||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
cmd->opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
||||||
cmd->nsid = nsid;
|
cmd->nsid = nsid;
|
||||||
cmd->cdw10 = numdl << 16;
|
cmd->cdw10_bits.get_log_page.numdl = numdl;
|
||||||
cmd->cdw10 |= log_page;
|
cmd->cdw10_bits.get_log_page.lid = log_page;
|
||||||
|
|
||||||
cmd->cdw11 = numdu;
|
cmd->cdw11 = numdu;
|
||||||
cmd->cdw12 = lpol;
|
cmd->cdw12 = lpol;
|
||||||
cmd->cdw13 = lpou;
|
cmd->cdw13 = lpou;
|
||||||
@ -594,7 +596,8 @@ spdk_nvme_ctrlr_cmd_abort(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme_qpair
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_ABORT;
|
cmd->opc = SPDK_NVME_OPC_ABORT;
|
||||||
cmd->cdw10 = (cid << 16) | sqid;
|
cmd->cdw10_bits.abort.sqid = sqid;
|
||||||
|
cmd->cdw10_bits.abort.cid = cid;
|
||||||
|
|
||||||
if (ctrlr->outstanding_aborts >= ctrlr->cdata.acl) {
|
if (ctrlr->outstanding_aborts >= ctrlr->cdata.acl) {
|
||||||
STAILQ_INSERT_TAIL(&ctrlr->queued_aborts, req, stailq);
|
STAILQ_INSERT_TAIL(&ctrlr->queued_aborts, req, stailq);
|
||||||
@ -681,7 +684,10 @@ nvme_ctrlr_cmd_security_receive(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp,
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_SECURITY_RECEIVE;
|
cmd->opc = SPDK_NVME_OPC_SECURITY_RECEIVE;
|
||||||
cmd->cdw10 = ((uint32_t)secp << 24) | ((uint32_t)spsp << 8) | ((uint32_t)nssf);
|
cmd->cdw10_bits.sec_send_recv.nssf = nssf;
|
||||||
|
cmd->cdw10_bits.sec_send_recv.spsp0 = (uint8_t)spsp;
|
||||||
|
cmd->cdw10_bits.sec_send_recv.spsp1 = (uint8_t)(spsp >> 8);
|
||||||
|
cmd->cdw10_bits.sec_send_recv.secp = secp;
|
||||||
cmd->cdw11 = payload_size;
|
cmd->cdw11 = payload_size;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
@ -709,7 +715,10 @@ nvme_ctrlr_cmd_security_send(struct spdk_nvme_ctrlr *ctrlr, uint8_t secp,
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_SECURITY_SEND;
|
cmd->opc = SPDK_NVME_OPC_SECURITY_SEND;
|
||||||
cmd->cdw10 = ((uint32_t)secp << 24) | ((uint32_t)spsp << 8) | ((uint32_t)nssf);
|
cmd->cdw10_bits.sec_send_recv.nssf = nssf;
|
||||||
|
cmd->cdw10_bits.sec_send_recv.spsp0 = (uint8_t)spsp;
|
||||||
|
cmd->cdw10_bits.sec_send_recv.spsp1 = (uint8_t)(spsp >> 8);
|
||||||
|
cmd->cdw10_bits.sec_send_recv.secp = secp;
|
||||||
cmd->cdw11 = payload_size;
|
cmd->cdw11 = payload_size;
|
||||||
|
|
||||||
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
rc = nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
|
@ -835,7 +835,7 @@ spdk_nvme_ns_cmd_dataset_management(struct spdk_nvme_ns *ns, struct spdk_nvme_qp
|
|||||||
cmd->opc = SPDK_NVME_OPC_DATASET_MANAGEMENT;
|
cmd->opc = SPDK_NVME_OPC_DATASET_MANAGEMENT;
|
||||||
cmd->nsid = ns->id;
|
cmd->nsid = ns->id;
|
||||||
|
|
||||||
cmd->cdw10 = num_ranges - 1;
|
cmd->cdw10_bits.dsm.nr = num_ranges - 1;
|
||||||
cmd->cdw11 = type;
|
cmd->cdw11 = type;
|
||||||
|
|
||||||
return nvme_qpair_submit_request(qpair, req);
|
return nvme_qpair_submit_request(qpair, req);
|
||||||
@ -883,12 +883,9 @@ spdk_nvme_ns_cmd_reservation_register(struct spdk_nvme_ns *ns,
|
|||||||
cmd->opc = SPDK_NVME_OPC_RESERVATION_REGISTER;
|
cmd->opc = SPDK_NVME_OPC_RESERVATION_REGISTER;
|
||||||
cmd->nsid = ns->id;
|
cmd->nsid = ns->id;
|
||||||
|
|
||||||
/* Bits 0-2 */
|
cmd->cdw10_bits.resv_register.rrega = action;
|
||||||
cmd->cdw10 = action;
|
cmd->cdw10_bits.resv_register.iekey = ignore_key;
|
||||||
/* Bit 3 */
|
cmd->cdw10_bits.resv_register.cptpl = cptpl;
|
||||||
cmd->cdw10 |= ignore_key ? 1 << 3 : 0;
|
|
||||||
/* Bits 30-31 */
|
|
||||||
cmd->cdw10 |= (uint32_t)cptpl << 30;
|
|
||||||
|
|
||||||
return nvme_qpair_submit_request(qpair, req);
|
return nvme_qpair_submit_request(qpair, req);
|
||||||
}
|
}
|
||||||
@ -916,12 +913,9 @@ spdk_nvme_ns_cmd_reservation_release(struct spdk_nvme_ns *ns,
|
|||||||
cmd->opc = SPDK_NVME_OPC_RESERVATION_RELEASE;
|
cmd->opc = SPDK_NVME_OPC_RESERVATION_RELEASE;
|
||||||
cmd->nsid = ns->id;
|
cmd->nsid = ns->id;
|
||||||
|
|
||||||
/* Bits 0-2 */
|
cmd->cdw10_bits.resv_release.rrela = action;
|
||||||
cmd->cdw10 = action;
|
cmd->cdw10_bits.resv_release.iekey = ignore_key;
|
||||||
/* Bit 3 */
|
cmd->cdw10_bits.resv_release.rtype = type;
|
||||||
cmd->cdw10 |= ignore_key ? 1 << 3 : 0;
|
|
||||||
/* Bits 8-15 */
|
|
||||||
cmd->cdw10 |= (uint32_t)type << 8;
|
|
||||||
|
|
||||||
return nvme_qpair_submit_request(qpair, req);
|
return nvme_qpair_submit_request(qpair, req);
|
||||||
}
|
}
|
||||||
@ -949,12 +943,9 @@ spdk_nvme_ns_cmd_reservation_acquire(struct spdk_nvme_ns *ns,
|
|||||||
cmd->opc = SPDK_NVME_OPC_RESERVATION_ACQUIRE;
|
cmd->opc = SPDK_NVME_OPC_RESERVATION_ACQUIRE;
|
||||||
cmd->nsid = ns->id;
|
cmd->nsid = ns->id;
|
||||||
|
|
||||||
/* Bits 0-2 */
|
cmd->cdw10_bits.resv_acquire.racqa = action;
|
||||||
cmd->cdw10 = action;
|
cmd->cdw10_bits.resv_acquire.iekey = ignore_key;
|
||||||
/* Bit 3 */
|
cmd->cdw10_bits.resv_acquire.rtype = type;
|
||||||
cmd->cdw10 |= ignore_key ? 1 << 3 : 0;
|
|
||||||
/* Bits 8-15 */
|
|
||||||
cmd->cdw10 |= (uint32_t)type << 8;
|
|
||||||
|
|
||||||
return nvme_qpair_submit_request(qpair, req);
|
return nvme_qpair_submit_request(qpair, req);
|
||||||
}
|
}
|
||||||
|
@ -1470,11 +1470,9 @@ nvme_pcie_ctrlr_cmd_create_io_cq(struct spdk_nvme_ctrlr *ctrlr,
|
|||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_CREATE_IO_CQ;
|
cmd->opc = SPDK_NVME_OPC_CREATE_IO_CQ;
|
||||||
|
|
||||||
/*
|
cmd->cdw10_bits.create_io_q.qid = io_que->id;
|
||||||
* TODO: create a create io completion queue command data
|
cmd->cdw10_bits.create_io_q.qsize = pqpair->num_entries - 1;
|
||||||
* structure.
|
|
||||||
*/
|
|
||||||
cmd->cdw10 = ((pqpair->num_entries - 1) << 16) | io_que->id;
|
|
||||||
/*
|
/*
|
||||||
* 0x2 = interrupts enabled
|
* 0x2 = interrupts enabled
|
||||||
* 0x1 = physically contiguous
|
* 0x1 = physically contiguous
|
||||||
@ -1501,11 +1499,8 @@ nvme_pcie_ctrlr_cmd_create_io_sq(struct spdk_nvme_ctrlr *ctrlr,
|
|||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_CREATE_IO_SQ;
|
cmd->opc = SPDK_NVME_OPC_CREATE_IO_SQ;
|
||||||
|
|
||||||
/*
|
cmd->cdw10_bits.create_io_q.qid = io_que->id;
|
||||||
* TODO: create a create io submission queue command data
|
cmd->cdw10_bits.create_io_q.qsize = pqpair->num_entries - 1;
|
||||||
* structure.
|
|
||||||
*/
|
|
||||||
cmd->cdw10 = ((pqpair->num_entries - 1) << 16) | io_que->id;
|
|
||||||
/* 0x1 = physically contiguous */
|
/* 0x1 = physically contiguous */
|
||||||
cmd->cdw11 = (io_que->id << 16) | (io_que->qprio << 1) | 0x1;
|
cmd->cdw11 = (io_que->id << 16) | (io_que->qprio << 1) | 0x1;
|
||||||
cmd->dptr.prp.prp1 = pqpair->cmd_bus_addr;
|
cmd->dptr.prp.prp1 = pqpair->cmd_bus_addr;
|
||||||
@ -1527,7 +1522,7 @@ nvme_pcie_ctrlr_cmd_delete_io_cq(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_DELETE_IO_CQ;
|
cmd->opc = SPDK_NVME_OPC_DELETE_IO_CQ;
|
||||||
cmd->cdw10 = qpair->id;
|
cmd->cdw10_bits.delete_io_q.qid = qpair->id;
|
||||||
|
|
||||||
return nvme_ctrlr_submit_admin_request(ctrlr, req);
|
return nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
}
|
}
|
||||||
@ -1546,7 +1541,7 @@ nvme_pcie_ctrlr_cmd_delete_io_sq(struct spdk_nvme_ctrlr *ctrlr, struct spdk_nvme
|
|||||||
|
|
||||||
cmd = &req->cmd;
|
cmd = &req->cmd;
|
||||||
cmd->opc = SPDK_NVME_OPC_DELETE_IO_SQ;
|
cmd->opc = SPDK_NVME_OPC_DELETE_IO_SQ;
|
||||||
cmd->cdw10 = qpair->id;
|
cmd->cdw10_bits.delete_io_q.qid = qpair->id;
|
||||||
|
|
||||||
return nvme_ctrlr_submit_admin_request(ctrlr, req);
|
return nvme_ctrlr_submit_admin_request(ctrlr, req);
|
||||||
}
|
}
|
||||||
|
@ -1471,7 +1471,7 @@ spdk_nvmf_ctrlr_get_log_page(struct spdk_nvmf_request *req)
|
|||||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
numdl = (cmd->cdw10 >> 16) & 0xFFFFu;
|
numdl = cmd->cdw10_bits.get_log_page.numdl;
|
||||||
numdu = (cmd->cdw11) & 0xFFFFu;
|
numdu = (cmd->cdw11) & 0xFFFFu;
|
||||||
len = ((numdu << 16) + numdl + (uint64_t)1) * 4;
|
len = ((numdu << 16) + numdl + (uint64_t)1) * 4;
|
||||||
if (len > req->length) {
|
if (len > req->length) {
|
||||||
@ -1482,7 +1482,7 @@ spdk_nvmf_ctrlr_get_log_page(struct spdk_nvmf_request *req)
|
|||||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
lid = cmd->cdw10 & 0xFF;
|
lid = cmd->cdw10_bits.get_log_page.lid;
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_NVMF, "Get log page: LID=0x%02X offset=0x%" PRIx64 " len=0x%" PRIx64 "\n",
|
SPDK_DEBUGLOG(SPDK_LOG_NVMF, "Get log page: LID=0x%02X offset=0x%" PRIx64 " len=0x%" PRIx64 "\n",
|
||||||
lid, offset, len);
|
lid, offset, len);
|
||||||
|
|
||||||
@ -1769,7 +1769,7 @@ spdk_nvmf_ctrlr_identify(struct spdk_nvmf_request *req)
|
|||||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||||
}
|
}
|
||||||
|
|
||||||
cns = cmd->cdw10 & 0xFF;
|
cns = cmd->cdw10_bits.identify.cns;
|
||||||
|
|
||||||
if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY &&
|
if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY &&
|
||||||
cns != SPDK_NVME_IDENTIFY_CTRLR) {
|
cns != SPDK_NVME_IDENTIFY_CTRLR) {
|
||||||
@ -1833,13 +1833,13 @@ spdk_nvmf_ctrlr_abort_on_pg(struct spdk_io_channel_iter *i)
|
|||||||
struct spdk_nvmf_poll_group *group = spdk_io_channel_get_ctx(ch);
|
struct spdk_nvmf_poll_group *group = spdk_io_channel_get_ctx(ch);
|
||||||
struct spdk_nvme_cpl *rsp = &req->rsp->nvme_cpl;
|
struct spdk_nvme_cpl *rsp = &req->rsp->nvme_cpl;
|
||||||
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
||||||
uint16_t sqid = cmd->cdw10 & 0xFFFFu;
|
uint16_t sqid = cmd->cdw10_bits.abort.sqid;
|
||||||
struct spdk_nvmf_qpair *qpair;
|
struct spdk_nvmf_qpair *qpair;
|
||||||
|
|
||||||
TAILQ_FOREACH(qpair, &group->qpairs, link) {
|
TAILQ_FOREACH(qpair, &group->qpairs, link) {
|
||||||
if (qpair->ctrlr == req->qpair->ctrlr && qpair->qid == sqid) {
|
if (qpair->ctrlr == req->qpair->ctrlr && qpair->qid == sqid) {
|
||||||
struct spdk_nvmf_request *req_to_abort;
|
struct spdk_nvmf_request *req_to_abort;
|
||||||
uint16_t cid = cmd->cdw10 >> 16;
|
uint16_t cid = cmd->cdw10_bits.abort.cid;
|
||||||
|
|
||||||
/* Found the qpair */
|
/* Found the qpair */
|
||||||
|
|
||||||
@ -1907,7 +1907,7 @@ spdk_nvmf_ctrlr_get_features(struct spdk_nvmf_request *req)
|
|||||||
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
||||||
struct spdk_nvme_cpl *response = &req->rsp->nvme_cpl;
|
struct spdk_nvme_cpl *response = &req->rsp->nvme_cpl;
|
||||||
|
|
||||||
feature = cmd->cdw10 & 0xff; /* mask out the FID value */
|
feature = cmd->cdw10_bits.get_features.fid;
|
||||||
switch (feature) {
|
switch (feature) {
|
||||||
case SPDK_NVME_FEAT_ARBITRATION:
|
case SPDK_NVME_FEAT_ARBITRATION:
|
||||||
return get_features_generic(req, ctrlr->feat.arbitration.raw);
|
return get_features_generic(req, ctrlr->feat.arbitration.raw);
|
||||||
@ -1947,7 +1947,7 @@ spdk_nvmf_ctrlr_set_features(struct spdk_nvmf_request *req)
|
|||||||
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
||||||
struct spdk_nvme_cpl *response = &req->rsp->nvme_cpl;
|
struct spdk_nvme_cpl *response = &req->rsp->nvme_cpl;
|
||||||
|
|
||||||
feature = cmd->cdw10 & 0xff; /* mask out the FID value */
|
feature = cmd->cdw10_bits.set_features.fid;
|
||||||
switch (feature) {
|
switch (feature) {
|
||||||
case SPDK_NVME_FEAT_ARBITRATION:
|
case SPDK_NVME_FEAT_ARBITRATION:
|
||||||
return spdk_nvmf_ctrlr_set_features_arbitration(req);
|
return spdk_nvmf_ctrlr_set_features_arbitration(req);
|
||||||
@ -2359,7 +2359,7 @@ nvmf_ns_reservation_request_check(struct spdk_nvmf_subsystem_pg_ns_info *ns_info
|
|||||||
break;
|
break;
|
||||||
case SPDK_NVME_OPC_RESERVATION_ACQUIRE:
|
case SPDK_NVME_OPC_RESERVATION_ACQUIRE:
|
||||||
case SPDK_NVME_OPC_RESERVATION_RELEASE:
|
case SPDK_NVME_OPC_RESERVATION_RELEASE:
|
||||||
racqa = cmd->cdw10 & 0x7u;
|
racqa = cmd->cdw10_bits.resv_acquire.racqa;
|
||||||
if (cmd->opc == SPDK_NVME_OPC_RESERVATION_ACQUIRE &&
|
if (cmd->opc == SPDK_NVME_OPC_RESERVATION_ACQUIRE &&
|
||||||
racqa == SPDK_NVME_RESERVE_ACQUIRE) {
|
racqa == SPDK_NVME_RESERVE_ACQUIRE) {
|
||||||
status = SPDK_NVME_SC_RESERVATION_CONFLICT;
|
status = SPDK_NVME_SC_RESERVATION_CONFLICT;
|
||||||
|
@ -436,7 +436,7 @@ nvmf_bdev_ctrlr_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
|
|||||||
uint32_t lba_count;
|
uint32_t lba_count;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
nr = ((cmd->cdw10 & 0x000000ff) + 1);
|
nr = cmd->cdw10_bits.dsm.nr + 1;
|
||||||
if (nr * sizeof(struct spdk_nvme_dsm_range) > req->length) {
|
if (nr * sizeof(struct spdk_nvme_dsm_range) > req->length) {
|
||||||
SPDK_ERRLOG("Dataset Management number of ranges > SGL length\n");
|
SPDK_ERRLOG("Dataset Management number of ranges > SGL length\n");
|
||||||
response->status.sc = SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID;
|
response->status.sc = SPDK_NVME_SC_DATA_SGL_LENGTH_INVALID;
|
||||||
|
@ -1925,9 +1925,9 @@ nvmf_ns_reservation_register(struct spdk_nvmf_ns *ns,
|
|||||||
uint32_t num_hostid = 0;
|
uint32_t num_hostid = 0;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rrega = cmd->cdw10 & 0x7u;
|
rrega = cmd->cdw10_bits.resv_register.rrega;
|
||||||
iekey = (cmd->cdw10 >> 3) & 0x1u;
|
iekey = cmd->cdw10_bits.resv_register.iekey;
|
||||||
cptpl = (cmd->cdw10 >> 30) & 0x3u;
|
cptpl = cmd->cdw10_bits.resv_register.cptpl;
|
||||||
|
|
||||||
if (req->data && req->length >= sizeof(key)) {
|
if (req->data && req->length >= sizeof(key)) {
|
||||||
memcpy(&key, req->data, sizeof(key));
|
memcpy(&key, req->data, sizeof(key));
|
||||||
@ -2061,9 +2061,9 @@ nvmf_ns_reservation_acquire(struct spdk_nvmf_ns *ns,
|
|||||||
bool reservation_released = false;
|
bool reservation_released = false;
|
||||||
uint8_t status = SPDK_NVME_SC_SUCCESS;
|
uint8_t status = SPDK_NVME_SC_SUCCESS;
|
||||||
|
|
||||||
racqa = cmd->cdw10 & 0x7u;
|
racqa = cmd->cdw10_bits.resv_acquire.racqa;
|
||||||
iekey = (cmd->cdw10 >> 3) & 0x1u;
|
iekey = cmd->cdw10_bits.resv_acquire.iekey;
|
||||||
rtype = (cmd->cdw10 >> 8) & 0xffu;
|
rtype = cmd->cdw10_bits.resv_acquire.rtype;
|
||||||
|
|
||||||
if (req->data && req->length >= sizeof(key)) {
|
if (req->data && req->length >= sizeof(key)) {
|
||||||
memcpy(&key, req->data, sizeof(key));
|
memcpy(&key, req->data, sizeof(key));
|
||||||
@ -2223,9 +2223,9 @@ nvmf_ns_reservation_release(struct spdk_nvmf_ns *ns,
|
|||||||
struct spdk_uuid hostid_list[SPDK_NVMF_MAX_NUM_REGISTRANTS];
|
struct spdk_uuid hostid_list[SPDK_NVMF_MAX_NUM_REGISTRANTS];
|
||||||
uint32_t num_hostid = 0;
|
uint32_t num_hostid = 0;
|
||||||
|
|
||||||
rrela = cmd->cdw10 & 0x7u;
|
rrela = cmd->cdw10_bits.resv_release.rrela;
|
||||||
iekey = (cmd->cdw10 >> 3) & 0x1u;
|
iekey = cmd->cdw10_bits.resv_release.iekey;
|
||||||
rtype = (cmd->cdw10 >> 8) & 0xffu;
|
rtype = cmd->cdw10_bits.resv_release.rtype;
|
||||||
|
|
||||||
if (req->data && req->length >= sizeof(crkey)) {
|
if (req->data && req->length >= sizeof(crkey)) {
|
||||||
memcpy(&crkey, req->data, sizeof(crkey));
|
memcpy(&crkey, req->data, sizeof(crkey));
|
||||||
|
@ -95,7 +95,7 @@ set_temp_threshold(struct dev *dev, uint32_t temp)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
cmd.opc = SPDK_NVME_OPC_SET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_SET_FEATURES;
|
||||||
cmd.cdw10 = SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD;
|
cmd.cdw10_bits.set_features.fid = SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD;
|
||||||
cmd.cdw11 = temp;
|
cmd.cdw11 = temp;
|
||||||
|
|
||||||
rc = spdk_nvme_ctrlr_cmd_admin_raw(dev->ctrlr, &cmd, NULL, 0, set_temp_completion, dev);
|
rc = spdk_nvme_ctrlr_cmd_admin_raw(dev->ctrlr, &cmd, NULL, 0, set_temp_completion, dev);
|
||||||
@ -133,7 +133,7 @@ get_temp_threshold(struct dev *dev)
|
|||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd.cdw10 = SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD;
|
cmd.cdw10_bits.get_features.fid = SPDK_NVME_FEAT_TEMPERATURE_THRESHOLD;
|
||||||
|
|
||||||
rc = spdk_nvme_ctrlr_cmd_admin_raw(dev->ctrlr, &cmd, NULL, 0, get_temp_completion, dev);
|
rc = spdk_nvme_ctrlr_cmd_admin_raw(dev->ctrlr, &cmd, NULL, 0, get_temp_completion, dev);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
@ -426,7 +426,7 @@ get_feature_test(struct dev *dev)
|
|||||||
|
|
||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd.cdw10 = SPDK_NVME_FEAT_NUMBER_OF_QUEUES;
|
cmd.cdw10_bits.get_features.fid = SPDK_NVME_FEAT_NUMBER_OF_QUEUES;
|
||||||
if (spdk_nvme_ctrlr_cmd_admin_raw(dev->ctrlr, &cmd, NULL, 0,
|
if (spdk_nvme_ctrlr_cmd_admin_raw(dev->ctrlr, &cmd, NULL, 0,
|
||||||
get_feature_test_cb, dev) != 0) {
|
get_feature_test_cb, dev) != 0) {
|
||||||
printf("Failed to send Get Features command for dev=%p\n", dev);
|
printf("Failed to send Get Features command for dev=%p\n", dev);
|
||||||
|
@ -127,7 +127,7 @@ get_feature_test(bool error_expected)
|
|||||||
|
|
||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd.cdw10 = SPDK_NVME_FEAT_NUMBER_OF_QUEUES;
|
cmd.cdw10_bits.get_features.fid = SPDK_NVME_FEAT_NUMBER_OF_QUEUES;
|
||||||
|
|
||||||
foreach_dev(dev) {
|
foreach_dev(dev) {
|
||||||
dev->error_expected = error_expected;
|
dev->error_expected = error_expected;
|
||||||
|
@ -221,7 +221,8 @@ test_get_log_page(void)
|
|||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
memset(&rsp, 0, sizeof(rsp));
|
memset(&rsp, 0, sizeof(rsp));
|
||||||
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
||||||
cmd.nvme_cmd.cdw10 = SPDK_NVME_LOG_ERROR | (req.length / 4 - 1) << 16;
|
cmd.nvme_cmd.cdw10_bits.get_log_page.lid = SPDK_NVME_LOG_ERROR;
|
||||||
|
cmd.nvme_cmd.cdw10_bits.get_log_page.numdl = (req.length / 4 - 1);
|
||||||
CU_ASSERT(spdk_nvmf_ctrlr_get_log_page(&req) == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
CU_ASSERT(spdk_nvmf_ctrlr_get_log_page(&req) == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
||||||
CU_ASSERT(req.rsp->nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
CU_ASSERT(req.rsp->nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
||||||
CU_ASSERT(req.rsp->nvme_cpl.status.sc == SPDK_NVME_SC_SUCCESS);
|
CU_ASSERT(req.rsp->nvme_cpl.status.sc == SPDK_NVME_SC_SUCCESS);
|
||||||
@ -239,7 +240,8 @@ test_get_log_page(void)
|
|||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
memset(&rsp, 0, sizeof(rsp));
|
memset(&rsp, 0, sizeof(rsp));
|
||||||
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
||||||
cmd.nvme_cmd.cdw10 = SPDK_NVME_LOG_ERROR | (req.length / 4 - 1) << 16;
|
cmd.nvme_cmd.cdw10_bits.get_log_page.lid = SPDK_NVME_LOG_ERROR;
|
||||||
|
cmd.nvme_cmd.cdw10_bits.get_log_page.numdl = (req.length / 4 - 1);
|
||||||
cmd.nvme_cmd.cdw12 = 2;
|
cmd.nvme_cmd.cdw12 = 2;
|
||||||
CU_ASSERT(spdk_nvmf_ctrlr_get_log_page(&req) == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
CU_ASSERT(spdk_nvmf_ctrlr_get_log_page(&req) == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
||||||
CU_ASSERT(req.rsp->nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
CU_ASSERT(req.rsp->nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
||||||
@ -250,7 +252,8 @@ test_get_log_page(void)
|
|||||||
memset(&rsp, 0, sizeof(rsp));
|
memset(&rsp, 0, sizeof(rsp));
|
||||||
req.data = NULL;
|
req.data = NULL;
|
||||||
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_LOG_PAGE;
|
||||||
cmd.nvme_cmd.cdw10 = SPDK_NVME_LOG_ERROR | (req.length / 4 - 1) << 16;
|
cmd.nvme_cmd.cdw10_bits.get_log_page.lid = SPDK_NVME_LOG_ERROR;
|
||||||
|
cmd.nvme_cmd.cdw10_bits.get_log_page.numdl = (req.length / 4 - 1);
|
||||||
CU_ASSERT(spdk_nvmf_ctrlr_get_log_page(&req) == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
CU_ASSERT(spdk_nvmf_ctrlr_get_log_page(&req) == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
||||||
CU_ASSERT(req.rsp->nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
CU_ASSERT(req.rsp->nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
||||||
CU_ASSERT(req.rsp->nvme_cpl.status.sc == SPDK_NVME_SC_INVALID_FIELD);
|
CU_ASSERT(req.rsp->nvme_cpl.status.sc == SPDK_NVME_SC_INVALID_FIELD);
|
||||||
@ -720,7 +723,7 @@ test_get_ns_id_desc_list(void)
|
|||||||
|
|
||||||
memset(&cmd, 0, sizeof(cmd));
|
memset(&cmd, 0, sizeof(cmd));
|
||||||
cmd.nvme_cmd.opc = SPDK_NVME_OPC_IDENTIFY;
|
cmd.nvme_cmd.opc = SPDK_NVME_OPC_IDENTIFY;
|
||||||
cmd.nvme_cmd.cdw10 = SPDK_NVME_IDENTIFY_NS_ID_DESCRIPTOR_LIST;
|
cmd.nvme_cmd.cdw10_bits.identify.cns = SPDK_NVME_IDENTIFY_NS_ID_DESCRIPTOR_LIST;
|
||||||
|
|
||||||
/* Invalid NSID */
|
/* Invalid NSID */
|
||||||
cmd.nvme_cmd.nsid = 0;
|
cmd.nvme_cmd.nsid = 0;
|
||||||
@ -920,7 +923,7 @@ test_set_get_features(void)
|
|||||||
|
|
||||||
/* Get SPDK_NVME_FEAT_HOST_RESERVE_PERSIST feature */
|
/* Get SPDK_NVME_FEAT_HOST_RESERVE_PERSIST feature */
|
||||||
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
cmd.nvme_cmd.opc = SPDK_NVME_OPC_GET_FEATURES;
|
||||||
cmd.nvme_cmd.cdw10 = SPDK_NVME_FEAT_HOST_RESERVE_PERSIST;
|
cmd.nvme_cmd.cdw10_bits.get_features.fid = SPDK_NVME_FEAT_HOST_RESERVE_PERSIST;
|
||||||
rc = spdk_nvmf_ctrlr_get_features_reservation_persistence(&req);
|
rc = spdk_nvmf_ctrlr_get_features_reservation_persistence(&req);
|
||||||
CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
CU_ASSERT(rc == SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE);
|
||||||
CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
CU_ASSERT(rsp.nvme_cpl.status.sct == SPDK_NVME_SCT_GENERIC);
|
||||||
|
@ -571,14 +571,15 @@ ut_reservation_build_register_request(struct spdk_nvmf_request *req,
|
|||||||
uint8_t cptpl, uint64_t crkey,
|
uint8_t cptpl, uint64_t crkey,
|
||||||
uint64_t nrkey)
|
uint64_t nrkey)
|
||||||
{
|
{
|
||||||
uint32_t cdw10;
|
|
||||||
struct spdk_nvme_reservation_register_data key;
|
struct spdk_nvme_reservation_register_data key;
|
||||||
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
||||||
|
|
||||||
cdw10 = (((uint32_t)cptpl << 30) | ((uint32_t)iekey << 3) | rrega);
|
|
||||||
key.crkey = crkey;
|
key.crkey = crkey;
|
||||||
key.nrkey = nrkey;
|
key.nrkey = nrkey;
|
||||||
cmd->cdw10 = cdw10;
|
cmd->cdw10 = 0;
|
||||||
|
cmd->cdw10_bits.resv_register.rrega = rrega;
|
||||||
|
cmd->cdw10_bits.resv_register.iekey = iekey;
|
||||||
|
cmd->cdw10_bits.resv_register.cptpl = cptpl;
|
||||||
memcpy(req->data, &key, sizeof(key));
|
memcpy(req->data, &key, sizeof(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -588,14 +589,15 @@ ut_reservation_build_acquire_request(struct spdk_nvmf_request *req,
|
|||||||
uint8_t rtype, uint64_t crkey,
|
uint8_t rtype, uint64_t crkey,
|
||||||
uint64_t prkey)
|
uint64_t prkey)
|
||||||
{
|
{
|
||||||
uint32_t cdw10;
|
|
||||||
struct spdk_nvme_reservation_acquire_data key;
|
struct spdk_nvme_reservation_acquire_data key;
|
||||||
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
||||||
|
|
||||||
cdw10 = ((rtype << 8) | (iekey << 3) | racqa);
|
|
||||||
key.crkey = crkey;
|
key.crkey = crkey;
|
||||||
key.prkey = prkey;
|
key.prkey = prkey;
|
||||||
cmd->cdw10 = cdw10;
|
cmd->cdw10 = 0;
|
||||||
|
cmd->cdw10_bits.resv_acquire.racqa = racqa;
|
||||||
|
cmd->cdw10_bits.resv_acquire.iekey = iekey;
|
||||||
|
cmd->cdw10_bits.resv_acquire.rtype = rtype;
|
||||||
memcpy(req->data, &key, sizeof(key));
|
memcpy(req->data, &key, sizeof(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -604,11 +606,12 @@ ut_reservation_build_release_request(struct spdk_nvmf_request *req,
|
|||||||
uint8_t rrela, uint8_t iekey,
|
uint8_t rrela, uint8_t iekey,
|
||||||
uint8_t rtype, uint64_t crkey)
|
uint8_t rtype, uint64_t crkey)
|
||||||
{
|
{
|
||||||
uint32_t cdw10;
|
|
||||||
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
struct spdk_nvme_cmd *cmd = &req->cmd->nvme_cmd;
|
||||||
|
|
||||||
cdw10 = ((rtype << 8) | (iekey << 3) | rrela);
|
cmd->cdw10 = 0;
|
||||||
cmd->cdw10 = cdw10;
|
cmd->cdw10_bits.resv_release.rrela = rrela;
|
||||||
|
cmd->cdw10_bits.resv_release.iekey = iekey;
|
||||||
|
cmd->cdw10_bits.resv_release.rtype = rtype;
|
||||||
memcpy(req->data, &crkey, sizeof(crkey));
|
memcpy(req->data, &crkey, sizeof(crkey));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user