Commit b360a13d authored by Oliver Hartkopp's avatar Oliver Hartkopp Committed by Marc Kleine-Budde
Browse files

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: default avatarVincent Mailhol <mailhol@kernel.org>
Signed-off-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
Link: https://patch.msgid.link/20251126-canxl-v8-17-e7e3eb74f889@pengutronix.de


Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
parent 1a620a72
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -153,19 +153,22 @@ int can_calc_bittiming(const struct net_device *dev, struct can_bittiming *bt,
	}

	if (best_bitrate_error) {
		/* Error in one-tenth of a percent */
		v64 = (u64)best_bitrate_error * 1000;
		/* Error in one-hundredth of a percent */
		v64 = (u64)best_bitrate_error * 10000;
		do_div(v64, bt->bitrate);
		bitrate_error = (u32)v64;
		/* print at least 0.01% if the error is smaller */
		bitrate_error = max(bitrate_error, 1U);
		if (bitrate_error > CAN_CALC_MAX_ERROR) {
			NL_SET_ERR_MSG_FMT(extack,
					   "bitrate error: %u.%u%% too high",
					   bitrate_error / 10, bitrate_error % 10);
					   "bitrate error: %u.%02u%% too high",
					   bitrate_error / 100,
					   bitrate_error % 100);
			return -EINVAL;
		}
		NL_SET_ERR_MSG_FMT(extack,
				   "bitrate error: %u.%u%%",
				   bitrate_error / 10, bitrate_error % 10);
				   "bitrate error: %u.%02u%%",
				   bitrate_error / 100, bitrate_error % 100);
	}

	/* real sample point */