[SCSI] fcoe: remove lport from net device before doing per cpu rx thread cleanup
authorVasu Dev <vasu.dev@intel.com>
Fri, 20 Apr 2012 19:16:27 +0000 (12:16 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Thu, 10 May 2012 07:59:24 +0000 (08:59 +0100)
commit433eba04c2cb53e0bbd2fb6da22d18f725bbf33f
treee97c20c561dff813324df87b1bbc5e61ff6d91c3
parent9941fa6e9725c8d27b60c4839ccebe93bda60231
[SCSI] fcoe: remove lport from net device before doing per cpu rx thread cleanup

Remove lport from net device and then do synchronize net device to flush
inflight rx frames for the lport before doing fcoe_percpu_clean.

In case of master lport, remove all rx packet handlers completely and
then only do fcoe_percpu_clean. This required splitting fcoe_interface_cleanup
to do remove part separately and for that added func fcoe_interface_remove
and then  call it from fcoe_if_destory before doing fcoe_percpu_clean.
However if fcoe_interface_remove() is already called then
don't call again from fcoe_interface_cleanup() to preserve its
existing flows.

This patch along with Neil's other patch to avoid soft irq context
on ingress will avoid passing up frames on disabled lport as
discussed in this mail thread:-
http://lists.open-fcoe.org/pipermail/devel/2012-February/011947.html

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/fcoe/fcoe.c
drivers/scsi/fcoe/fcoe.h