|
@@ -984,6 +984,7 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done)
|
|
|
struct fw_unit *unit = sd->unit;
|
|
|
struct fw_device *device = fw_device(unit->device.parent);
|
|
|
struct sbp2_command_orb *orb;
|
|
|
+ unsigned max_payload;
|
|
|
|
|
|
/*
|
|
|
* Bidirectional commands are not yet implemented, and unknown
|
|
@@ -1017,8 +1018,10 @@ static int sbp2_scsi_queuecommand(struct scsi_cmnd *cmd, scsi_done_fn_t done)
|
|
|
* specifies the max payload size as 2 ^ (max_payload + 2), so
|
|
|
* if we set this to max_speed + 7, we get the right value.
|
|
|
*/
|
|
|
+ max_payload = min(device->max_speed + 7,
|
|
|
+ device->card->max_receive - 1);
|
|
|
orb->request.misc =
|
|
|
- COMMAND_ORB_MAX_PAYLOAD(device->max_speed + 7) |
|
|
|
+ COMMAND_ORB_MAX_PAYLOAD(max_payload) |
|
|
|
COMMAND_ORB_SPEED(device->max_speed) |
|
|
|
COMMAND_ORB_NOTIFY;
|
|
|
|