aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/fcoe
diff options
context:
space:
mode:
authorYi Zou <yi.zou@intel.com>2009-11-03 14:49:59 -0500
committerJames Bottomley <James.Bottomley@suse.de>2009-12-04 13:01:24 -0500
commitcc0136c2e9c10e889cb36e39710c0eb10707b396 (patch)
treeb486a0e899ee7d06365f3efbe1e08c876b91b422 /drivers/scsi/fcoe
parent349e11faa84ebdd6e484572cfe66f2cf4cb483a1 (diff)
[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>
Diffstat (limited to 'drivers/scsi/fcoe')
-rw-r--r--drivers/scsi/fcoe/fcoe.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index fba7ba00c71b..28029a342892 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -555,6 +555,7 @@ static int fcoe_netdev_config(struct fc_lport *lport, struct net_device *netdev)
555 u64 wwnn, wwpn; 555 u64 wwnn, wwpn;
556 struct fcoe_interface *fcoe; 556 struct fcoe_interface *fcoe;
557 struct fcoe_port *port; 557 struct fcoe_port *port;
558 int vid = 0;
558 559
559 /* Setup lport private data to point to fcoe softc */ 560 /* Setup lport private data to point to fcoe softc */
560 port = lport_priv(lport); 561 port = lport_priv(lport);
@@ -599,10 +600,16 @@ static int fcoe_netdev_config(struct fc_lport *lport, struct net_device *netdev)
599 setup_timer(&port->timer, fcoe_queue_timer, (unsigned long)lport); 600 setup_timer(&port->timer, fcoe_queue_timer, (unsigned long)lport);
600 601
601 if (!lport->vport) { 602 if (!lport->vport) {
603 /*
604 * Use NAA 1&2 (FC-FS Rev. 2.0, Sec. 15) to generate WWNN/WWPN:
605 * For WWNN, we use NAA 1 w/ bit 27-16 of word 0 as 0.
606 * For WWPN, we use NAA 2 w/ bit 27-16 of word 0 from VLAN ID
607 */
608 if (netdev->priv_flags & IFF_802_1Q_VLAN)
609 vid = vlan_dev_vlan_id(netdev);
602 wwnn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 1, 0); 610 wwnn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 1, 0);
603 fc_set_wwnn(lport, wwnn); 611 fc_set_wwnn(lport, wwnn);
604 /* XXX - 3rd arg needs to be vlan id */ 612 wwpn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 2, vid);
605 wwpn = fcoe_wwn_from_mac(fcoe->ctlr.ctl_src_addr, 2, 0);
606 fc_set_wwpn(lport, wwpn); 613 fc_set_wwpn(lport, wwpn);
607 } 614 }
608 615