]> git.ipfire.org Git - people/ms/linux.git/commitdiff
ata: libata-scsi: Simplify scsi_XX_lba_len()
authorDamien Le Moal <damien.lemoal@opensource.wdc.com>
Tue, 25 Jan 2022 01:26:33 +0000 (10:26 +0900)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Mon, 31 Jan 2022 00:58:32 +0000 (09:58 +0900)
In scsi_10_lba_len() and scsi_16_lba_len() functions, use
get_unaligned_bexx() to access a cdb LBA and length fields instead of
hardcoding the byte retrieval. With these simplification, the functions
can also be declared inline.

Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
drivers/ata/libata-scsi.c

index 515c5599cece67f00a4058db7873e201b4f01bb6..eb40c3796a3fb0dc334a72343f402b4b580384ca 100644 (file)
@@ -1314,21 +1314,10 @@ static void scsi_6_lba_len(const u8 *cdb, u64 *plba, u32 *plen)
  *     @plba: the LBA
  *     @plen: the transfer length
  */
-static void scsi_10_lba_len(const u8 *cdb, u64 *plba, u32 *plen)
+static inline void scsi_10_lba_len(const u8 *cdb, u64 *plba, u32 *plen)
 {
-       u64 lba = 0;
-       u32 len = 0;
-
-       lba |= ((u64)cdb[2]) << 24;
-       lba |= ((u64)cdb[3]) << 16;
-       lba |= ((u64)cdb[4]) << 8;
-       lba |= ((u64)cdb[5]);
-
-       len |= ((u32)cdb[7]) << 8;
-       len |= ((u32)cdb[8]);
-
-       *plba = lba;
-       *plen = len;
+       *plba = get_unaligned_be32(&cdb[2]);
+       *plen = get_unaligned_be16(&cdb[7]);
 }
 
 /**
@@ -1341,27 +1330,10 @@ static void scsi_10_lba_len(const u8 *cdb, u64 *plba, u32 *plen)
  *     @plba: the LBA
  *     @plen: the transfer length
  */
-static void scsi_16_lba_len(const u8 *cdb, u64 *plba, u32 *plen)
+static inline void scsi_16_lba_len(const u8 *cdb, u64 *plba, u32 *plen)
 {
-       u64 lba = 0;
-       u32 len = 0;
-
-       lba |= ((u64)cdb[2]) << 56;
-       lba |= ((u64)cdb[3]) << 48;
-       lba |= ((u64)cdb[4]) << 40;
-       lba |= ((u64)cdb[5]) << 32;
-       lba |= ((u64)cdb[6]) << 24;
-       lba |= ((u64)cdb[7]) << 16;
-       lba |= ((u64)cdb[8]) << 8;
-       lba |= ((u64)cdb[9]);
-
-       len |= ((u32)cdb[10]) << 24;
-       len |= ((u32)cdb[11]) << 16;
-       len |= ((u32)cdb[12]) << 8;
-       len |= ((u32)cdb[13]);
-
-       *plba = lba;
-       *plen = len;
+       *plba = get_unaligned_be64(&cdb[2]);
+       *plen = get_unaligned_be32(&cdb[10]);
 }
 
 /**