diff options
author | Vasu Dev <vasu.dev@intel.com> | 2012-03-09 17:49:58 -0500 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-03-28 04:04:51 -0400 |
commit | 73d67aa40b1f94a4e5edecbbc3b94d352eeeae0a (patch) | |
tree | 95a72d5091271f7cb40580990b34db98ca603019 /drivers/scsi/libfc/fc_lport.c | |
parent | 14619ea689cc0b257cf998469005d0515133d7bc (diff) |
[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>
Diffstat (limited to 'drivers/scsi/libfc/fc_lport.c')
-rw-r--r-- | drivers/scsi/libfc/fc_lport.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/scsi/libfc/fc_lport.c b/drivers/scsi/libfc/fc_lport.c index 9a0b2a9caad6..4f7ef76aa795 100644 --- a/drivers/scsi/libfc/fc_lport.c +++ b/drivers/scsi/libfc/fc_lport.c | |||
@@ -1743,8 +1743,16 @@ void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp, | |||
1743 | mfs = ntohs(flp->fl_csp.sp_bb_data) & | 1743 | mfs = ntohs(flp->fl_csp.sp_bb_data) & |
1744 | FC_SP_BB_DATA_MASK; | 1744 | FC_SP_BB_DATA_MASK; |
1745 | if (mfs >= FC_SP_MIN_MAX_PAYLOAD && | 1745 | if (mfs >= FC_SP_MIN_MAX_PAYLOAD && |
1746 | mfs < lport->mfs) | 1746 | mfs <= lport->mfs) { |
1747 | lport->mfs = mfs; | 1747 | lport->mfs = mfs; |
1748 | fc_host_maxframe_size(lport->host) = mfs; | ||
1749 | } else { | ||
1750 | FC_LPORT_DBG(lport, "FLOGI bad mfs:%hu response, " | ||
1751 | "lport->mfs:%hu\n", mfs, lport->mfs); | ||
1752 | fc_lport_error(lport, fp); | ||
1753 | goto err; | ||
1754 | } | ||
1755 | |||
1748 | csp_flags = ntohs(flp->fl_csp.sp_features); | 1756 | csp_flags = ntohs(flp->fl_csp.sp_features); |
1749 | r_a_tov = ntohl(flp->fl_csp.sp_r_a_tov); | 1757 | r_a_tov = ntohl(flp->fl_csp.sp_r_a_tov); |
1750 | e_d_tov = ntohl(flp->fl_csp.sp_e_d_tov); | 1758 | e_d_tov = ntohl(flp->fl_csp.sp_e_d_tov); |