diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2011-07-17 22:26:37 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-07-18 11:31:43 -0700 |
commit | 81fc70d86527a1450560709500ca5f52e661da1f (patch) | |
tree | 81533323709564030b859af95191a2c64bfac4f8 /drivers/net/can/slcan.c | |
parent | 61b8013a114cb041db2c56f747953cac69637f26 (diff) | |
download | linux-81fc70d86527a1450560709500ca5f52e661da1f.tar.bz2 |
net: can: remove custom hex_to_bin()
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Wolfgang Grandegger <wg@grandegger.com>
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/can/slcan.c')
-rw-r--r-- | drivers/net/can/slcan.c | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/drivers/net/can/slcan.c b/drivers/net/can/slcan.c index aa8ad73477ba..65e54fd0a8d7 100644 --- a/drivers/net/can/slcan.c +++ b/drivers/net/can/slcan.c @@ -56,6 +56,7 @@ #include <linux/sched.h> #include <linux/delay.h> #include <linux/init.h> +#include <linux/kernel.h> #include <linux/can.h> static __initdata const char banner[] = @@ -142,21 +143,6 @@ static struct net_device **slcan_devs; * STANDARD SLCAN DECAPSULATION * ************************************************************************/ -static int asc2nibble(char c) -{ - - if ((c >= '0') && (c <= '9')) - return c - '0'; - - if ((c >= 'A') && (c <= 'F')) - return c - 'A' + 10; - - if ((c >= 'a') && (c <= 'f')) - return c - 'a' + 10; - - return 16; /* error */ -} - /* Send one completely decapsulated can_frame to the network layer */ static void slc_bump(struct slcan *sl) { @@ -195,18 +181,16 @@ static void slc_bump(struct slcan *sl) *(u64 *) (&cf.data) = 0; /* clear payload */ for (i = 0, dlc_pos++; i < cf.can_dlc; i++) { - - tmp = asc2nibble(sl->rbuff[dlc_pos++]); - if (tmp > 0x0F) + tmp = hex_to_bin(sl->rbuff[dlc_pos++]); + if (tmp < 0) return; cf.data[i] = (tmp << 4); - tmp = asc2nibble(sl->rbuff[dlc_pos++]); - if (tmp > 0x0F) + tmp = hex_to_bin(sl->rbuff[dlc_pos++]); + if (tmp < 0) return; cf.data[i] |= tmp; } - skb = dev_alloc_skb(sizeof(struct can_frame)); if (!skb) return; |