Add Fabric assigned WWN support.
Adding support for Fabric assigned WWPN and WWNN. Firmware sends first FLOGI to fabric with vendor version changes. On link up driver gets updated service parameter with FAWWN assigned port name. Driver sends 2nd FLOGI with updated fawwpn and modifies the vport->fc_portname in driver. Note: Soft wwpn will not be allowed when fawwpn is enabled. Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by: James Smart <james.smart@broadcom.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
This commit is contained in:

committed by
Christoph Hellwig

parent
4d4c4a4ac7
commit
aeb3c8170b
@@ -2292,6 +2292,8 @@ lpfc_soft_wwn_enable_store(struct device *dev, struct device_attribute *attr,
|
||||
struct lpfc_vport *vport = (struct lpfc_vport *) shost->hostdata;
|
||||
struct lpfc_hba *phba = vport->phba;
|
||||
unsigned int cnt = count;
|
||||
uint8_t vvvl = vport->fc_sparam.cmn.valid_vendor_ver_level;
|
||||
u32 *fawwpn_key = (uint32_t *)&vport->fc_sparam.un.vendorVersion[0];
|
||||
|
||||
/*
|
||||
* We're doing a simple sanity check for soft_wwpn setting.
|
||||
@@ -2305,6 +2307,12 @@ lpfc_soft_wwn_enable_store(struct device *dev, struct device_attribute *attr,
|
||||
* here. The intent is to protect against the random user or
|
||||
* application that is just writing attributes.
|
||||
*/
|
||||
if (vvvl == 1 && cpu_to_be32(*fawwpn_key) == FAPWWN_KEY_VENDOR) {
|
||||
lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
|
||||
"0051 "LPFC_DRIVER_NAME" soft wwpn can not"
|
||||
" be enabled: fawwpn is enabled\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* count may include a LF at end of string */
|
||||
if (buf[cnt-1] == '\n')
|
||||
|
Reference in New Issue
Block a user