[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20251008031640.25870-1-zengyijing19900106@gmail.com>
Date: Tue, 7 Oct 2025 20:16:40 -0700
From: Yijing Zeng <zengyijing19900106@...il.com>
To: netdev@...r.kernel.org
Cc: stephen@...workplumber.org,
me@...chata.org,
kuba@...nel.org,
yijingzeng@...a.com
Subject: [PATCH] dcb: fix tc-maxrate unit conversions
From: Yijing Zeng <yijingzeng@...a.com>
The ieee_maxrate UAPI is defined as kbps, but dcb_maxrate uses Bps.
This fix patch converts Bps to kbps for parse, and convert kbps to Bps for print_rate().
Fixes: 117939d9 ("dcb: Add a subtool for the DCB maxrate object")
Signed-off-by: Yijing Zeng <yijingzeng@...a.com>
---
dcb/dcb_maxrate.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/dcb/dcb_maxrate.c b/dcb/dcb_maxrate.c
index 1538c6d7..af012dba 100644
--- a/dcb/dcb_maxrate.c
+++ b/dcb/dcb_maxrate.c
@@ -42,13 +42,16 @@ static void dcb_maxrate_help(void)
static int dcb_maxrate_parse_mapping_tc_maxrate(__u32 key, char *value, void *data)
{
- __u64 rate;
+ __u64 rate_Bps;
- if (get_rate64(&rate, value))
+ if (get_rate64(&rate_Bps, value))
return -EINVAL;
+ /* get_rate64() returns Bps. ieee_maxrate UAPI expects kbps. */
+ __u64 rate_kbps = (rate_Bps * 8) / 1000;
+
return dcb_parse_mapping("TC", key, IEEE_8021QAZ_MAX_TCS - 1,
- "RATE", rate, -1,
+ "RATE", rate_kbps, -1,
dcb_set_u64, data);
}
@@ -62,8 +65,11 @@ static void dcb_maxrate_print_tc_maxrate(struct dcb *dcb, const struct ieee_maxr
print_string(PRINT_FP, NULL, "tc-maxrate ", NULL);
for (i = 0; i < size; i++) {
+ /* ieee_maxrate UAPI returns kbps. print_rate() expects Bps for display */
+ __u64 rate_Bps = maxrate->tc_maxrate[i] * 1000 / 8;
+
snprintf(b, sizeof(b), "%zd:%%s ", i);
- print_rate(dcb->use_iec, PRINT_ANY, NULL, b, maxrate->tc_maxrate[i]);
+ print_rate(dcb->use_iec, PRINT_ANY, NULL, b, rate_Bps);
}
close_json_array(PRINT_JSON, "tc_maxrate");
--
2.50.1
Powered by blists - more mailing lists