Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

can: dev: print bitrate error with two decimal digits

Increase the resolution when printing the bitrate error and round-up the
value to 0.01% in the case the resolution would still provide values
which would lead to 0.00%.

Suggested-by: Vincent Mailhol <mailhol@kernel.org>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
Link: https://patch.msgid.link/20251126-canxl-v8-17-e7e3eb74f889@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>

authored by

Oliver Hartkopp and committed by
Marc Kleine-Budde
b360a13d 1a620a72

+9 -6
+9 -6
drivers/net/can/dev/calc_bittiming.c
··· 153 153 } 154 154 155 155 if (best_bitrate_error) { 156 - /* Error in one-tenth of a percent */ 157 - v64 = (u64)best_bitrate_error * 1000; 156 + /* Error in one-hundredth of a percent */ 157 + v64 = (u64)best_bitrate_error * 10000; 158 158 do_div(v64, bt->bitrate); 159 159 bitrate_error = (u32)v64; 160 + /* print at least 0.01% if the error is smaller */ 161 + bitrate_error = max(bitrate_error, 1U); 160 162 if (bitrate_error > CAN_CALC_MAX_ERROR) { 161 163 NL_SET_ERR_MSG_FMT(extack, 162 - "bitrate error: %u.%u%% too high", 163 - bitrate_error / 10, bitrate_error % 10); 164 + "bitrate error: %u.%02u%% too high", 165 + bitrate_error / 100, 166 + bitrate_error % 100); 164 167 return -EINVAL; 165 168 } 166 169 NL_SET_ERR_MSG_FMT(extack, 167 - "bitrate error: %u.%u%%", 168 - bitrate_error / 10, bitrate_error % 10); 170 + "bitrate error: %u.%02u%%", 171 + bitrate_error / 100, bitrate_error % 100); 169 172 } 170 173 171 174 /* real sample point */