[SCSI] fcoe: Fix using VLAN ID in creating lport's WWWN/WWPN
If the underlying netdev is a VLAN device, make sure the VLAN ID is integrated into the WWNN/WWPN name generation. Also added/updated the comments to reflect this change. Signed-off-by: Yi Zou <yi.zou@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:
@@ -555,6 +555,7 @@ static int fcoe_netdev_config(struct fc_lport *lport, struct net_device *netdev)
|
|||||||
u64 wwnn, wwpn;
|
u64 wwnn, wwpn;
|
||||||
struct fcoe_interface *fcoe;
|
struct fcoe_interface *fcoe;
|
||||||
struct fcoe_port *port;
|
struct fcoe_port *port;
|
||||||
|
int vid = 0;
|
||||||
|
|
||||||
/* Setup lport private data to point to fcoe softc */
|
/* Setup lport private data to point to fcoe softc */
|
||||||
port = lport_priv(lport);
|
port = lport_priv(lport);
|
||||||
@@ -599,10 +600,16 @@ static int fcoe_netdev_config(struct fc_lport *lport, struct net_device *netdev)
|
|||||||
setup_timer(&port->timer, fcoe_queue_timer, (unsigned long)lport);
|
setup_timer(&port->timer, fcoe_queue_timer, (unsigned long)lport);
|
||||||
|
|
||||||
if (!lport->vport) {
|
if (!lport->vport) {
|
||||||
|
/*
|
||||||
|
* Use NAA 1&2 (FC-FS Rev. 2.0, Sec. 15) to generate WWNN/WWPN:
|
||||||
|
* For WWNN, we use NAA 1 w/ bit 27-16 of word 0 as 0.
|
||||||
|
* For WWPN, we use NAA 2 w/ bit 27-16 of word 0 from VLAN ID
|
||||||
|
*/
|
||||||
|
if (netdev->priv_flags & IFF_802_1Q_VLAN)
|
||||||
|
vid = vlan_dev_vlan_id(netdev);
|
||||||
wwnn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 1, 0);
|
wwnn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 1, 0);
|
||||||
fc_set_wwnn(lport, wwnn);
|
fc_set_wwnn(lport, wwnn);
|
||||||
/* XXX - 3rd arg needs to be vlan id */
|
wwpn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 2, vid);
|
||||||
wwpn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 2, 0);
|
|
||||||
fc_set_wwpn(lport, wwpn);
|
fc_set_wwpn(lport, wwpn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user