OSDN Git Service

bnx2x: Replace custom scnprintf()
authorAndy Shevchenko <andy.shevchenko@gmail.com>
Thu, 27 Apr 2017 13:36:59 +0000 (16:36 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 May 2017 02:28:00 +0000 (22:28 -0400)
Use scnprintf() when printing version instead of custom open coded variants.

Signed-off-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Acked-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c

index b209b7f..2acc4f0 100644 (file)
@@ -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;
 }