example/nvme: use the union cdw11 structure for arbitration feature bits
Change-Id: I7a28c9f649c26ba8f7c8e166fa1196842a2a3b86 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/478259 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
46e52a0bcb
commit
d7b9a14c8d
@ -140,20 +140,6 @@ static struct arb_context g_arbitration = {
|
|||||||
#define USER_SPECIFIED_LOW_PRIORITY_WEIGHT 8
|
#define USER_SPECIFIED_LOW_PRIORITY_WEIGHT 8
|
||||||
#define USER_SPECIFIED_ARBITRATION_BURST 7 /* No limit */
|
#define USER_SPECIFIED_ARBITRATION_BURST 7 /* No limit */
|
||||||
|
|
||||||
/*
|
|
||||||
* Description of dword for priority weight and arbitration burst
|
|
||||||
* ------------------------------------------------------------------------------
|
|
||||||
* 31 : 24 | 23 : 16 | 15 : 08 | 07 : 03 | 02 : 00
|
|
||||||
* ------------------------------------------------------------------------------
|
|
||||||
* High Prio Weight | Medium Prio Weight | Low Prio Weight | Reserved | Arb Burst
|
|
||||||
* ------------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* The priority weights are zero based value.
|
|
||||||
*/
|
|
||||||
#define SPDK_NVME_HIGH_PRIO_WEIGHT_SHIFT 24
|
|
||||||
#define SPDK_NVME_MED_PRIO_WEIGHT_SHIFT 16
|
|
||||||
#define SPDK_NVME_LOW_PRIO_WEIGHT_SHIFT 8
|
|
||||||
#define SPDK_NVME_PRIO_WEIGHT_MASK 0xFF
|
|
||||||
#define SPDK_NVME_ARB_BURST_MASK 0x7
|
#define SPDK_NVME_ARB_BURST_MASK 0x7
|
||||||
|
|
||||||
#define SPDK_NVME_QPRIO_MAX (SPDK_NVME_QPRIO_LOW + 1)
|
#define SPDK_NVME_QPRIO_MAX (SPDK_NVME_QPRIO_LOW + 1)
|
||||||
@ -1018,26 +1004,21 @@ get_arb_feature(struct spdk_nvme_ctrlr *ctrlr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (features[SPDK_NVME_FEAT_ARBITRATION].valid) {
|
if (features[SPDK_NVME_FEAT_ARBITRATION].valid) {
|
||||||
uint32_t arb = features[SPDK_NVME_FEAT_ARBITRATION].result;
|
union spdk_nvme_cmd_cdw11 arb;
|
||||||
unsigned ab, lpw, mpw, hpw;
|
arb.feat_arbitration.raw = features[SPDK_NVME_FEAT_ARBITRATION].result;
|
||||||
|
|
||||||
ab = arb & SPDK_NVME_ARB_BURST_MASK;
|
|
||||||
lpw = ((arb >> SPDK_NVME_LOW_PRIO_WEIGHT_SHIFT) & SPDK_NVME_PRIO_WEIGHT_MASK) + 1;
|
|
||||||
mpw = ((arb >> SPDK_NVME_MED_PRIO_WEIGHT_SHIFT) & SPDK_NVME_PRIO_WEIGHT_MASK) + 1;
|
|
||||||
hpw = ((arb >> SPDK_NVME_HIGH_PRIO_WEIGHT_SHIFT) & SPDK_NVME_PRIO_WEIGHT_MASK) + 1;
|
|
||||||
|
|
||||||
printf("Current Arbitration Configuration\n");
|
printf("Current Arbitration Configuration\n");
|
||||||
printf("===========\n");
|
printf("===========\n");
|
||||||
printf("Arbitration Burst: ");
|
printf("Arbitration Burst: ");
|
||||||
if (ab == SPDK_NVME_ARB_BURST_MASK) {
|
if (arb.feat_arbitration.bits.ab == SPDK_NVME_ARB_BURST_MASK) {
|
||||||
printf("no limit\n");
|
printf("no limit\n");
|
||||||
} else {
|
} else {
|
||||||
printf("%u\n", 1u << ab);
|
printf("%u\n", 1u << arb.feat_arbitration.bits.ab);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Low Priority Weight: %u\n", lpw);
|
printf("Low Priority Weight: %u\n", arb.feat_arbitration.bits.lpw + 1);
|
||||||
printf("Medium Priority Weight: %u\n", mpw);
|
printf("Medium Priority Weight: %u\n", arb.feat_arbitration.bits.mpw + 1);
|
||||||
printf("High Priority Weight: %u\n", hpw);
|
printf("High Priority Weight: %u\n", arb.feat_arbitration.bits.hpw + 1);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user