[PATCH] libata: Conditionally set host->max_cmd_len
authorBrian King <brking@us.ibm.com>
Wed, 28 Jun 2006 13:30:31 +0000 (08:30 -0500)
committerJeff Garzik <jeff@garzik.org>
Thu, 6 Jul 2006 01:47:47 +0000 (21:47 -0400)
In preparation for SAS attached SATA devices, which will
not have a libata scsi_host, only setup host->max_cmd_len
if ap->host exists.

Signed-off-by: Brian King <brking@us.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/libata-core.c

index 1c960ac..fd0e6cc 100644 (file)
@@ -1325,6 +1325,19 @@ static void ata_dev_config_ncq(struct ata_device *dev,
                snprintf(desc, desc_sz, "NCQ (depth %d/%d)", hdepth, ddepth);
 }
 
+static void ata_set_port_max_cmd_len(struct ata_port *ap)
+{
+       int i;
+
+       if (ap->host) {
+               ap->host->max_cmd_len = 0;
+               for (i = 0; i < ATA_MAX_DEVICES; i++)
+                       ap->host->max_cmd_len = max_t(unsigned int,
+                                                     ap->host->max_cmd_len,
+                                                     ap->device[i].cdb_len);
+       }
+}
+
 /**
  *     ata_dev_configure - Configure the specified ATA/ATAPI device
  *     @dev: Target device to configure
@@ -1344,7 +1357,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info)
        struct ata_port *ap = dev->ap;
        const u16 *id = dev->id;
        unsigned int xfer_mask;
-       int i, rc;
+       int rc;
 
        if (!ata_dev_enabled(dev) && ata_msg_info(ap)) {
                ata_dev_printk(dev, KERN_INFO,
@@ -1474,11 +1487,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info)
                                       cdb_intr_string);
        }
 
-       ap->host->max_cmd_len = 0;
-       for (i = 0; i < ATA_MAX_DEVICES; i++)
-               ap->host->max_cmd_len = max_t(unsigned int,
-                                             ap->host->max_cmd_len,
-                                             ap->device[i].cdb_len);
+       ata_set_port_max_cmd_len(ap);
 
        /* limit bridge transfers to udma5, 200 sectors */
        if (ata_dev_knobble(dev)) {