There are some things in fcoe_netdev_config that should not be done for
VN_Ports: registering protocol handlers and setting world wide names from
the MAC address.

Signed-off-by: Chris Leech <[email protected]>
---

 drivers/scsi/fcoe/fcoe.c |   32 ++++++++++++++++++--------------
 1 files changed, 18 insertions(+), 14 deletions(-)

diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index a0c44a9..4cd95b9 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -415,11 +415,13 @@ static int fcoe_netdev_config(struct fc_lport *lp, struct 
net_device *netdev)
                memcpy(fc->ctlr.ctl_src_addr, fc->real_dev->dev_addr,
                       fc->real_dev->addr_len);
 
-       wwnn = fcoe_wwn_from_mac(fc->real_dev->dev_addr, 1, 0);
-       fc_set_wwnn(lp, wwnn);
-       /* XXX - 3rd arg needs to be vlan id */
-       wwpn = fcoe_wwn_from_mac(fc->real_dev->dev_addr, 2, 0);
-       fc_set_wwpn(lp, wwpn);
+       if (!lp->vport) {
+               wwnn = fcoe_wwn_from_mac(fc->real_dev->dev_addr, 1, 0);
+               fc_set_wwnn(lp, wwnn);
+               /* XXX - 3rd arg needs to be vlan id */
+               wwpn = fcoe_wwn_from_mac(fc->real_dev->dev_addr, 2, 0);
+               fc_set_wwpn(lp, wwpn);
+       }
 
        /*
         * Add FCoE MAC address as second unicast MAC address
@@ -438,15 +440,17 @@ static int fcoe_netdev_config(struct fc_lport *lp, struct 
net_device *netdev)
         * setup the receive function from ethernet driver
         * on the ethertype for the given device
         */
-       fc->fcoe_packet_type.func = fcoe_rcv;
-       fc->fcoe_packet_type.type = __constant_htons(ETH_P_FCOE);
-       fc->fcoe_packet_type.dev = fc->real_dev;
-       dev_add_pack(&fc->fcoe_packet_type);
-
-       fc->fip_packet_type.func = fcoe_fip_recv;
-       fc->fip_packet_type.type = htons(ETH_P_FIP);
-       fc->fip_packet_type.dev = fc->real_dev;
-       dev_add_pack(&fc->fip_packet_type);
+       if (!lp->vn_port) {
+               fc->fcoe_packet_type.func = fcoe_rcv;
+               fc->fcoe_packet_type.type = __constant_htons(ETH_P_FCOE);
+               fc->fcoe_packet_type.dev = fc->real_dev;
+               dev_add_pack(&fc->fcoe_packet_type);
+
+               fc->fip_packet_type.func = fcoe_fip_recv;
+               fc->fip_packet_type.type = htons(ETH_P_FIP);
+               fc->fip_packet_type.dev = fc->real_dev;
+               dev_add_pack(&fc->fip_packet_type);
+       }
 
        return 0;
 }

_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to