[SCSI] libfc: update fc_host mfs along with updating lport->mfs
Currently fc_host mfs is not getting updated in case its changed during FLOGI and that leaves fc_host to show its initial old value in sysfs, so instead have fc_host mfs updated along with updating lport mfs during FLOGI. Also in case of bad mfs during flogi, error out instead of continuing with flogi. [ Changes made by Robert Love: condition to '>=' and added printing of lport->mfs in DBG statement. FLOGI resp processing failed without being able to compare FCoE MFS 2112 against an incoming MFS of 2112 ] Signed-off-by: Vasu Dev <vasu.dev@intel.com> Tested-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
committed by
James Bottomley
parent
14619ea689
commit
73d67aa40b
@@ -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);
|
||||||
|
Reference in New Issue
Block a user