Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi...
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / scsi / libfc / fc_lport.c
index bd5d31d..ef9560d 100644 (file)
@@ -1743,8 +1743,16 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
        mfs = ntohs(flp->fl_csp.sp_bb_data) &
                FC_SP_BB_DATA_MASK;
        if (mfs >= FC_SP_MIN_MAX_PAYLOAD &&
-           mfs < lport->mfs)
+           mfs <= lport->mfs) {
                lport->mfs = mfs;
+               fc_host_maxframe_size(lport->host) = mfs;
+       } else {
+               FC_LPORT_DBG(lport, "FLOGI bad mfs:%hu response, "
+                            "lport->mfs:%hu\n", mfs, lport->mfs);
+               fc_lport_error(lport, fp);
+               goto err;
+       }
+
        csp_flags = ntohs(flp->fl_csp.sp_features);
        r_a_tov = ntohl(flp->fl_csp.sp_r_a_tov);
        e_d_tov = ntohl(flp->fl_csp.sp_e_d_tov);