Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55b218c1 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by David S. Miller
Browse files

bnx2x: Replace custom scnprintf()



Use scnprintf() when printing version instead of custom open coded variants.

Signed-off-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: default avatarYuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4750c7be
Loading
Loading
Loading
Loading
+9 −70
Original line number Diff line number Diff line
@@ -6163,94 +6163,33 @@ static void bnx2x_link_int_ack(struct link_params *params,

static int bnx2x_format_ver(u32 num, u8 *str, u16 *len)
{
	u8 *str_ptr = str;
	u32 mask = 0xf0000000;
	u8 shift = 8*4;
	u8 digit;
	u8 remove_leading_zeros = 1;
	u16 ret;

	if (*len < 10) {
		/* Need more than 10chars for this format */
		*str_ptr = '\0';
		*str = '\0';
		(*len)--;
		return -EINVAL;
	}
	while (shift > 0) {

		shift -= 4;
		digit = ((num & mask) >> shift);
		if (digit == 0 && remove_leading_zeros) {
			*str_ptr = '0';
		} else {
			if (digit < 0xa)
				*str_ptr = digit + '0';
			else
				*str_ptr = digit - 0xa + 'a';

			remove_leading_zeros = 0;
			str_ptr++;
			(*len)--;
		}
		mask = mask >> 4;
		if (shift == 4*4) {
			if (remove_leading_zeros) {
				str_ptr++;
				(*len)--;
			}
			*str_ptr = '.';
			str_ptr++;
			(*len)--;
			remove_leading_zeros = 1;
		}
	}
	if (remove_leading_zeros)
		(*len)--;
	ret = scnprintf(str, *len, "%hx.%hx", num >> 16, num);
	*len -= ret;
	return 0;
}

static int bnx2x_3_seq_format_ver(u32 num, u8 *str, u16 *len)
{
	u8 *str_ptr = str;
	u32 mask = 0x00f00000;
	u8 shift = 8*3;
	u8 digit;
	u8 remove_leading_zeros = 1;
	u16 ret;

	if (*len < 10) {
		/* Need more than 10chars for this format */
		*str_ptr = '\0';
		*str = '\0';
		(*len)--;
		return -EINVAL;
	}

	while (shift > 0) {
		shift -= 4;
		digit = ((num & mask) >> shift);
		if (digit == 0 && remove_leading_zeros) {
			*str_ptr = '0';
		} else {
			if (digit < 0xa)
				*str_ptr = digit + '0';
			else
				*str_ptr = digit - 0xa + 'a';

			remove_leading_zeros = 0;
			str_ptr++;
			(*len)--;
		}
		mask = mask >> 4;
		if ((shift == 4*4) || (shift == 4*2)) {
			if (remove_leading_zeros) {
				str_ptr++;
				(*len)--;
			}
			*str_ptr = '.';
			str_ptr++;
			(*len)--;
			remove_leading_zeros = 1;
		}
	}
	if (remove_leading_zeros)
		(*len)--;
	ret = scnprintf(str, *len, "%hhx.%hhx.%hhx", num >> 16, num >> 8, num);
	*len -= ret;
	return 0;
}