|
@@ -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) &
|
|
mfs = ntohs(flp->fl_csp.sp_bb_data) &
|
|
FC_SP_BB_DATA_MASK;
|
|
FC_SP_BB_DATA_MASK;
|
|
if (mfs >= FC_SP_MIN_MAX_PAYLOAD &&
|
|
if (mfs >= FC_SP_MIN_MAX_PAYLOAD &&
|
|
- mfs < lport->mfs)
|
|
|
|
|
|
+ mfs <= lport->mfs) {
|
|
lport->mfs = 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);
|
|
csp_flags = ntohs(flp->fl_csp.sp_features);
|
|
r_a_tov = ntohl(flp->fl_csp.sp_r_a_tov);
|
|
r_a_tov = ntohl(flp->fl_csp.sp_r_a_tov);
|
|
e_d_tov = ntohl(flp->fl_csp.sp_e_d_tov);
|
|
e_d_tov = ntohl(flp->fl_csp.sp_e_d_tov);
|