|
@@ -1644,10 +1644,14 @@ static void srp_process_rsp(struct srp_target_port *target, struct srp_rsp *rsp)
|
|
|
SCSI_SENSE_BUFFERSIZE));
|
|
|
}
|
|
|
|
|
|
- if (rsp->flags & (SRP_RSP_FLAG_DOOVER | SRP_RSP_FLAG_DOUNDER))
|
|
|
- scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt));
|
|
|
- else if (rsp->flags & (SRP_RSP_FLAG_DIOVER | SRP_RSP_FLAG_DIUNDER))
|
|
|
+ if (unlikely(rsp->flags & SRP_RSP_FLAG_DIUNDER))
|
|
|
scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt));
|
|
|
+ else if (unlikely(rsp->flags & SRP_RSP_FLAG_DIOVER))
|
|
|
+ scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt));
|
|
|
+ else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOUNDER))
|
|
|
+ scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt));
|
|
|
+ else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOOVER))
|
|
|
+ scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt));
|
|
|
|
|
|
srp_free_req(target, req, scmnd,
|
|
|
be32_to_cpu(rsp->req_lim_delta));
|