aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/hpsa.c34
1 files changed, 15 insertions, 19 deletions
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index d048b69962ea..4e7df2e5701e 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -1637,30 +1637,26 @@ static void figure_bus_target_lun(struct ctlr_info *h,
1637 1637
1638 if (is_logical_dev_addr_mode(lunaddrbytes)) { 1638 if (is_logical_dev_addr_mode(lunaddrbytes)) {
1639 /* logical device */ 1639 /* logical device */
1640 if (unlikely(is_scsi_rev_5(h))) { 1640 lunid = le32_to_cpu(*((__le32 *) lunaddrbytes));
1641 /* p1210m, logical drives lun assignments 1641 if (is_msa2xxx(h, device)) {
1642 * match SCSI REPORT LUNS data. 1642 /* msa2xxx way, put logicals on bus 1
1643 * and match target/lun numbers box
1644 * reports.
1643 */ 1645 */
1644 lunid = le32_to_cpu(*((__le32 *) lunaddrbytes)); 1646 *bus = 1;
1645 *bus = 0; 1647 *target = (lunid >> 16) & 0x3fff;
1646 *target = 0; 1648 *lun = lunid & 0x00ff;
1647 *lun = (lunid & 0x3fff) + 1;
1648 } else { 1649 } else {
1649 /* not p1210m... */ 1650 if (likely(is_scsi_rev_5(h))) {
1650 lunid = le32_to_cpu(*((__le32 *) lunaddrbytes)); 1651 /* All current smart arrays (circa 2011) */
1651 if (is_msa2xxx(h, device)) { 1652 *bus = 0;
1652 /* msa2xxx way, put logicals on bus 1 1653 *target = 0;
1653 * and match target/lun numbers box 1654 *lun = (lunid & 0x3fff) + 1;
1654 * reports.
1655 */
1656 *bus = 1;
1657 *target = (lunid >> 16) & 0x3fff;
1658 *lun = lunid & 0x00ff;
1659 } else { 1655 } else {
1660 /* Traditional smart array way. */ 1656 /* Traditional old smart array way. */
1661 *bus = 0; 1657 *bus = 0;
1662 *lun = 0;
1663 *target = lunid & 0x3fff; 1658 *target = lunid & 0x3fff;
1659 *lun = 0;
1664 } 1660 }
1665 } 1661 }
1666 } else { 1662 } else {