mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 10:20:17 -04:00
ata: libata-scsi: Simplify scsi_XX_lba_len()
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>
This commit is contained in:
@@ -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]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user