diff options
| -rw-r--r-- | drivers/firewire/sbp2.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/firewire/sbp2.c b/drivers/firewire/sbp2.c index 2353643721c1..d27cb058da82 100644 --- a/drivers/firewire/sbp2.c +++ b/drivers/firewire/sbp2.c | |||
| @@ -201,6 +201,12 @@ static struct fw_device *target_device(struct sbp2_target *tgt) | |||
| 201 | #define SBP2_CYCLE_LIMIT (0xc8 << 12) /* 200 125us cycles */ | 201 | #define SBP2_CYCLE_LIMIT (0xc8 << 12) /* 200 125us cycles */ |
| 202 | 202 | ||
| 203 | /* | 203 | /* |
| 204 | * There is no transport protocol limit to the CDB length, but we implement | ||
| 205 | * a fixed length only. 16 bytes is enough for disks larger than 2 TB. | ||
| 206 | */ | ||
| 207 | #define SBP2_MAX_CDB_SIZE 16 | ||
| 208 | |||
| 209 | /* | ||
| 204 | * The default maximum s/g segment size of a FireWire controller is | 210 | * The default maximum s/g segment size of a FireWire controller is |
| 205 | * usually 0x10000, but SBP-2 only allows 0xffff. Since buffers have to | 211 | * usually 0x10000, but SBP-2 only allows 0xffff. Since buffers have to |
| 206 | * be quadlet-aligned, we set the length limit to 0xffff & ~3. | 212 | * be quadlet-aligned, we set the length limit to 0xffff & ~3. |
| @@ -312,7 +318,7 @@ struct sbp2_command_orb { | |||
| 312 | struct sbp2_pointer next; | 318 | struct sbp2_pointer next; |
| 313 | struct sbp2_pointer data_descriptor; | 319 | struct sbp2_pointer data_descriptor; |
| 314 | __be32 misc; | 320 | __be32 misc; |
| 315 | u8 command_block[12]; | 321 | u8 command_block[SBP2_MAX_CDB_SIZE]; |
| 316 | } request; | 322 | } request; |
| 317 | struct scsi_cmnd *cmd; | 323 | struct scsi_cmnd *cmd; |
| 318 | scsi_done_fn_t done; | 324 | scsi_done_fn_t done; |
| @@ -1146,6 +1152,8 @@ static int sbp2_probe(struct device *dev) | |||
| 1146 | if (fw_device_enable_phys_dma(device) < 0) | 1152 | if (fw_device_enable_phys_dma(device) < 0) |
| 1147 | goto fail_shost_put; | 1153 | goto fail_shost_put; |
| 1148 | 1154 | ||
| 1155 | shost->max_cmd_len = SBP2_MAX_CDB_SIZE; | ||
| 1156 | |||
| 1149 | if (scsi_add_host(shost, &unit->device) < 0) | 1157 | if (scsi_add_host(shost, &unit->device) < 0) |
| 1150 | goto fail_shost_put; | 1158 | goto fail_shost_put; |
| 1151 | 1159 | ||
