[SCSI] fcoe: move packet handlers from fcoe_port to fcoe_interface

The packet handlers need to be tracked in fcoe_interface so there is only one
set per net_device.  When NPIV is enabled there will be multiple SCSI hosts
and multiple fcoe_port structures on a single net_device.

The packet handlers match by ethertype and netdev.  If the same handler gets
registered on a single netdev multiple times, the receive function will be
called multiple times for each frame.

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>
diff --git a/drivers/scsi/fcoe/fcoe.h b/drivers/scsi/fcoe/fcoe.h
index 3b3886e..685aa9d 100644
--- a/drivers/scsi/fcoe/fcoe.h
+++ b/drivers/scsi/fcoe/fcoe.h
@@ -83,6 +83,8 @@
 	 * moved out of fcoe_port */
 	struct fcoe_port *priv;
 	struct net_device *netdev;
+	struct packet_type  fcoe_packet_type;
+	struct packet_type  fip_packet_type;
 };
 
 /*
@@ -92,8 +94,6 @@
 struct fcoe_port {
 	struct fcoe_interface *fcoe;
 	struct fc_exch_mgr *oem;		/* offload exchange manger */
-	struct packet_type  fcoe_packet_type;
-	struct packet_type  fip_packet_type;
 	struct sk_buff_head fcoe_pending_queue;
 	u8	fcoe_pending_queue_active;
 	struct timer_list timer;		/* queue timer */