提交 e6d902a3 编写于 作者: B Brian King 提交者: Jeff Garzik

[PATCH] libata: Conditionally set host->max_cmd_len

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: NBrian King <brking@us.ibm.com>
Signed-off-by: NJeff Garzik <jeff@garzik.org>
上级 a93620b8
...@@ -1325,6 +1325,19 @@ static void ata_dev_config_ncq(struct ata_device *dev, ...@@ -1325,6 +1325,19 @@ static void ata_dev_config_ncq(struct ata_device *dev,
snprintf(desc, desc_sz, "NCQ (depth %d/%d)", hdepth, ddepth); 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 * ata_dev_configure - Configure the specified ATA/ATAPI device
* @dev: Target device to configure * @dev: Target device to configure
...@@ -1344,7 +1357,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info) ...@@ -1344,7 +1357,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info)
struct ata_port *ap = dev->ap; struct ata_port *ap = dev->ap;
const u16 *id = dev->id; const u16 *id = dev->id;
unsigned int xfer_mask; unsigned int xfer_mask;
int i, rc; int rc;
if (!ata_dev_enabled(dev) && ata_msg_info(ap)) { if (!ata_dev_enabled(dev) && ata_msg_info(ap)) {
ata_dev_printk(dev, KERN_INFO, ata_dev_printk(dev, KERN_INFO,
...@@ -1474,11 +1487,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info) ...@@ -1474,11 +1487,7 @@ int ata_dev_configure(struct ata_device *dev, int print_info)
cdb_intr_string); cdb_intr_string);
} }
ap->host->max_cmd_len = 0; ata_set_port_max_cmd_len(ap);
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);
/* limit bridge transfers to udma5, 200 sectors */ /* limit bridge transfers to udma5, 200 sectors */
if (ata_dev_knobble(dev)) { if (ata_dev_knobble(dev)) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册