drivers: scsi: use newly introduced hex_to_bin() method
Andy Shevchenko [Wed, 11 Aug 2010 01:01:27 +0000 (18:01 -0700)]
Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
Cc: Adaptec OEM Raid Solutions <aacraid@adaptec.com>
Cc: "James E.J. Bottomley" <James.Bottomley@suse.de>
Cc: James Smart <james.smart@emulex.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

drivers/scsi/aacraid/rx.c
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/scsi_transport_fc.c

index 04057ab..84d77fd 100644 (file)
@@ -352,9 +352,8 @@ static int aac_rx_check_health(struct aac_dev *dev)
                pci_free_consistent(dev->pdev, sizeof(struct POSTSTATUS),
                  post, paddr);
                if (likely((buffer[0] == '0') && ((buffer[1] == 'x') || (buffer[1] == 'X')))) {
-                       ret = (buffer[2] <= '9') ? (buffer[2] - '0') : (buffer[2] - 'A' + 10);
-                       ret <<= 4;
-                       ret += (buffer[3] <= '9') ? (buffer[3] - '0') : (buffer[3] - 'A' + 10);
+                       ret = (hex_to_bin(buffer[2]) << 4) +
+                               hex_to_bin(buffer[3]);
                }
                pci_free_consistent(dev->pdev, 512, buffer, baddr);
                return ret;
index 162704c..ad05b26 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/interrupt.h>
 #include <linux/aer.h>
 #include <linux/gfp.h>
+#include <linux/kernel.h>
 
 #include <scsi/scsi.h>
 #include <scsi/scsi_device.h>
@@ -1795,12 +1796,11 @@ lpfc_soft_wwpn_store(struct device *dev, struct device_attribute *attr,
 
        /* Validate and store the new name */
        for (i=0, j=0; i < 16; i++) {
-               if ((*buf >= 'a') && (*buf <= 'f'))
-                       j = ((j << 4) | ((*buf++ -'a') + 10));
-               else if ((*buf >= 'A') && (*buf <= 'F'))
-                       j = ((j << 4) | ((*buf++ -'A') + 10));
-               else if ((*buf >= '0') && (*buf <= '9'))
-                       j = ((j << 4) | (*buf++ -'0'));
+               int value;
+
+               value = hex_to_bin(*buf++);
+               if (value >= 0)
+                       j = (j << 4) | value;
                else
                        return -EINVAL;
                if (i % 2) {
@@ -1888,12 +1888,11 @@ lpfc_soft_wwnn_store(struct device *dev, struct device_attribute *attr,
 
        /* Validate and store the new name */
        for (i=0, j=0; i < 16; i++) {
-               if ((*buf >= 'a') && (*buf <= 'f'))
-                       j = ((j << 4) | ((*buf++ -'a') + 10));
-               else if ((*buf >= 'A') && (*buf <= 'F'))
-                       j = ((j << 4) | ((*buf++ -'A') + 10));
-               else if ((*buf >= '0') && (*buf <= '9'))
-                       j = ((j << 4) | (*buf++ -'0'));
+               int value;
+
+               value = hex_to_bin(*buf++);
+               if (value >= 0)
+                       j = (j << 4) | value;
                else
                        return -EINVAL;
                if (i % 2) {
index edb6b36..d7e470a 100644 (file)
@@ -29,6 +29,7 @@
 #include <linux/init.h>
 #include <linux/slab.h>
 #include <linux/delay.h>
+#include <linux/kernel.h>
 #include <scsi/scsi_device.h>
 #include <scsi/scsi_host.h>
 #include <scsi/scsi_transport.h>
@@ -1730,12 +1731,11 @@ fc_parse_wwn(const char *ns, u64 *nm)
 
        /* Validate and store the new name */
        for (i=0, j=0; i < 16; i++) {
-               if ((*ns >= 'a') && (*ns <= 'f'))
-                       j = ((j << 4) | ((*ns++ -'a') + 10));
-               else if ((*ns >= 'A') && (*ns <= 'F'))
-                       j = ((j << 4) | ((*ns++ -'A') + 10));
-               else if ((*ns >= '0') && (*ns <= '9'))
-                       j = ((j << 4) | (*ns++ -'0'));
+               int value;
+
+               value = hex_to_bin(*ns++);
+               if (value >= 0)
+                       j = (j << 4) | value;
                else
                        return -EINVAL;
                if (i % 2) {