nvme: Use spdk_nvme_ctrlr_is_fabrics() to update ioccsz
ioccsz is specific for fabrics. spdk_nvme_ctrlr_is_fabrics() returns true for custom fabrics transport. Hence we can use spdk_nvme_ctrlr_is_fabrics() safely in nvme_ctrlr_update_nvmf_ioccsz(). Before this change, in the unit tests, ctrlr->trid.trtype was set to zero at initialization. After this change, for most cases, spdk_nvme_ctrlr_is_fabrics() should return false for most cases. SPDK_NVME_TRANSPORT_PCIE did not work. Hence, initialize ctrlr->trid.trtype by SPDK_NVME_TRANSPORT_CUSTOM_FABRICS instead. Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com> Change-Id: I4bedcab4a9f2876c1c9463ff10ad0966754f1713 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/13948 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
f1dabc228f
commit
227d83e2fa
@ -2720,9 +2720,7 @@ nvme_ctrlr_identify_id_desc_namespaces(struct spdk_nvme_ctrlr *ctrlr)
|
||||
static void
|
||||
nvme_ctrlr_update_nvmf_ioccsz(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
if (ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_RDMA ||
|
||||
ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_TCP ||
|
||||
ctrlr->trid.trtype == SPDK_NVME_TRANSPORT_FC) {
|
||||
if (spdk_nvme_ctrlr_is_fabrics(ctrlr)) {
|
||||
if (ctrlr->cdata.nvmf_specific.ioccsz < 4) {
|
||||
NVME_CTRLR_ERRLOG(ctrlr, "Incorrect IOCCSZ %u, the minimum value should be 4\n",
|
||||
ctrlr->cdata.nvmf_specific.ioccsz);
|
||||
|
@ -679,7 +679,8 @@ spdk_pci_device_detach(struct spdk_pci_device *device)
|
||||
\
|
||||
STAILQ_INIT(&adminq.free_req); \
|
||||
STAILQ_INSERT_HEAD(&adminq.free_req, &req, stailq); \
|
||||
ctrlr.adminq = &adminq;
|
||||
ctrlr.adminq = &adminq; \
|
||||
ctrlr.trid.trtype = SPDK_NVME_TRANSPORT_CUSTOM;
|
||||
|
||||
static void
|
||||
test_nvme_ctrlr_init_en_1_rdy_0(void)
|
||||
@ -2462,6 +2463,31 @@ test_nvme_ctrlr_init_set_nvmf_ioccsz(void)
|
||||
|
||||
nvme_ctrlr_destruct(&ctrlr);
|
||||
|
||||
/* Check CUSTOM_FABRICS trtype, */
|
||||
SPDK_CU_ASSERT_FATAL(nvme_ctrlr_construct(&ctrlr) == 0);
|
||||
ctrlr.trid.trtype = SPDK_NVME_TRANSPORT_CUSTOM_FABRICS;
|
||||
|
||||
ctrlr.state = NVME_CTRLR_STATE_IDENTIFY;
|
||||
CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0);
|
||||
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_CONFIGURE_AER);
|
||||
CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0);
|
||||
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_SET_KEEP_ALIVE_TIMEOUT);
|
||||
CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0);
|
||||
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_IDENTIFY_IOCS_SPECIFIC);
|
||||
CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0);
|
||||
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_SET_NUM_QUEUES);
|
||||
CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0);
|
||||
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_IDENTIFY_ACTIVE_NS);
|
||||
CU_ASSERT(nvme_ctrlr_process_init(&ctrlr) == 0);
|
||||
CU_ASSERT(ctrlr.state == NVME_CTRLR_STATE_IDENTIFY_NS);
|
||||
|
||||
CU_ASSERT(ctrlr.ioccsz_bytes == 4096);
|
||||
CU_ASSERT(ctrlr.icdoff == 1);
|
||||
ctrlr.ioccsz_bytes = 0;
|
||||
ctrlr.icdoff = 0;
|
||||
|
||||
nvme_ctrlr_destruct(&ctrlr);
|
||||
|
||||
g_cdata = NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user