nvme: add weighted round robin supported flags

Change-Id: I4b303e7096dfdd29ef5d39f30223d03c32d20ae1
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466679
Reviewed-by: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
Changpeng Liu 2019-08-29 02:00:26 -04:00 committed by Jim Harris
parent 2f9d2b811c
commit 6ad44e8be6
3 changed files with 8 additions and 0 deletions

View File

@ -31,6 +31,9 @@ it for NVMe controllers. When the option is enabled, the controller will not do
shutdown process and just disable the controller, users can start their application shutdown process and just disable the controller, users can start their application
later again to initialize the controller to the ready state. later again to initialize the controller to the ready state.
A controller flag `SPDK_NVME_CTRLR_WRR_SUPPORTED` was added to indicate the controller
can support weighted round robin arbitration feature with submission queue.
### iSCSI ### iSCSI
Portals may no longer be associated with a cpumask. The scheduling of Portals may no longer be associated with a cpumask. The scheduling of

View File

@ -322,6 +322,7 @@ struct spdk_nvme_host_id {
enum spdk_nvme_ctrlr_flags { enum spdk_nvme_ctrlr_flags {
SPDK_NVME_CTRLR_SGL_SUPPORTED = 0x1, /**< The SGL is supported */ SPDK_NVME_CTRLR_SGL_SUPPORTED = 0x1, /**< The SGL is supported */
SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED = 0x2, /**< security send/receive is supported */ SPDK_NVME_CTRLR_SECURITY_SEND_RECV_SUPPORTED = 0x2, /**< security send/receive is supported */
SPDK_NVME_CTRLR_WRR_SUPPORTED = 0x4, /**< Weighted Round Robin is supported */
}; };
/** /**

View File

@ -2361,6 +2361,10 @@ nvme_ctrlr_init_cap(struct spdk_nvme_ctrlr *ctrlr, const union spdk_nvme_cap_reg
ctrlr->cap = *cap; ctrlr->cap = *cap;
ctrlr->vs = *vs; ctrlr->vs = *vs;
if (ctrlr->cap.bits.ams & SPDK_NVME_CAP_AMS_WRR) {
ctrlr->flags |= SPDK_NVME_CTRLR_WRR_SUPPORTED;
}
ctrlr->min_page_size = 1u << (12 + ctrlr->cap.bits.mpsmin); ctrlr->min_page_size = 1u << (12 + ctrlr->cap.bits.mpsmin);
/* For now, always select page_size == min_page_size. */ /* For now, always select page_size == min_page_size. */