]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
[SCSI] libfc: use lso_max for sequence offload
authorYi Zou <yi.zou@intel.com>
Fri, 27 Feb 2009 22:07:10 +0000 (14:07 -0800)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Fri, 13 Mar 2009 20:14:33 +0000 (15:14 -0500)
Make sure for large send is supported by LLD in outgoing FCP data, we are only
sending the lso_max a time in one single large send, since that is what
supported by LLD.

Signed-off-by: Yi Zou <yi.zou@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/libfc/fc_fcp.c

index a070e571243976edc0b345f9dde68931351f7c3e..48adb89d911aa7d67de6d13cfba93d1dfc2ac548 100644 (file)
@@ -435,7 +435,13 @@ static int fc_fcp_send_data(struct fc_fcp_pkt *fsp, struct fc_seq *seq,
         * burst length (t_blen) to seq_blen, otherwise set t_blen
         * to max FC frame payload previously set in fsp->max_payload.
         */
-       t_blen = lp->seq_offload ? seq_blen : fsp->max_payload;
+       t_blen = fsp->max_payload;
+       if (lp->seq_offload) {
+               t_blen = min(seq_blen, (size_t)lp->lso_max);
+               FC_DEBUG_FCP("fsp=%p:lso:blen=%zx lso_max=0x%x t_blen=%zx\n",
+                          fsp, seq_blen, lp->lso_max, t_blen);
+       }
+
        WARN_ON(t_blen < FC_MIN_MAX_PAYLOAD);
        if (t_blen > 512)
                t_blen &= ~(512 - 1);   /* round down to block size */