mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
[SCSI] libfc, libfcoe: FDISC ELS for NPIV
Add FDISC ELS handling to libfc and libfcoe, treat it the same as FLOGI where appropriate. Add checking for NPIV support in the FLOGI LS_ACC service parameters. Signed-off-by: Chris Leech <christopher.leech@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
8faecddb21
commit
db36c06cc6
4 changed files with 40 additions and 5 deletions
|
@ -198,6 +198,31 @@ static inline void fc_flogi_fill(struct fc_lport *lport, struct fc_frame *fp)
|
|||
sp->sp_bb_data = htons((u16) lport->mfs);
|
||||
cp = &flogi->fl_cssp[3 - 1]; /* class 3 parameters */
|
||||
cp->cp_class = htons(FC_CPC_VALID | FC_CPC_SEQ);
|
||||
if (lport->does_npiv)
|
||||
sp->sp_features = htons(FC_SP_FT_NPIV);
|
||||
}
|
||||
|
||||
/**
|
||||
* fc_fdisc_fill - Fill in a fdisc request frame.
|
||||
*/
|
||||
static inline void fc_fdisc_fill(struct fc_lport *lport, struct fc_frame *fp)
|
||||
{
|
||||
struct fc_els_csp *sp;
|
||||
struct fc_els_cssp *cp;
|
||||
struct fc_els_flogi *fdisc;
|
||||
|
||||
fdisc = fc_frame_payload_get(fp, sizeof(*fdisc));
|
||||
memset(fdisc, 0, sizeof(*fdisc));
|
||||
fdisc->fl_cmd = (u8) ELS_FDISC;
|
||||
put_unaligned_be64(lport->wwpn, &fdisc->fl_wwpn);
|
||||
put_unaligned_be64(lport->wwnn, &fdisc->fl_wwnn);
|
||||
sp = &fdisc->fl_csp;
|
||||
sp->sp_hi_ver = 0x20;
|
||||
sp->sp_lo_ver = 0x20;
|
||||
sp->sp_bb_cred = htons(10); /* this gets set by gateway */
|
||||
sp->sp_bb_data = htons((u16) lport->mfs);
|
||||
cp = &fdisc->fl_cssp[3 - 1]; /* class 3 parameters */
|
||||
cp->cp_class = htons(FC_CPC_VALID | FC_CPC_SEQ);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -296,6 +321,10 @@ static inline int fc_els_fill(struct fc_lport *lport,
|
|||
fc_flogi_fill(lport, fp);
|
||||
break;
|
||||
|
||||
case ELS_FDISC:
|
||||
fc_fdisc_fill(lport, fp);
|
||||
break;
|
||||
|
||||
case ELS_LOGO:
|
||||
fc_logo_fill(lport, fp);
|
||||
break;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue