[SCSI] fcoe: allow SCSI-FCP to be processed directly in softirq context
authorChris Leech <christopher.leech@intel.com>
Fri, 20 Nov 2009 22:54:47 +0000 (14:54 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Fri, 4 Dec 2009 18:01:54 +0000 (12:01 -0600)
commit859b7b649ab58ee5cbfb761491317d5b315c1b0f
tree8827d80feead5e90c12d31885b735068b693b40f
parent70d919fbd9ab78f3eca5ea7bd060fefd7b508641
[SCSI] fcoe: allow SCSI-FCP to be processed directly in softirq context

Allow FCP frames to bypass the FCoE receive processing threads and handle
them directly in softirq context, if they are received on the correct CPU.
This preserves the queuing to threads for scaling out receive processing
to multiple CPUs, but allows FCoE-aware multi-queue network drivers that
direct frames to the originating CPUs to handle FCP processing with less
scheduling latency.

Only FCP is handled directly, because libfc makes use of mutexes in ELS
handling routines.

The bulk of this change is just moving the FCoE receive processing out of
the receive thread function, leaving behind just the thread and queue
management.  The interesting bits are in fcoe_rcv()

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>
drivers/scsi/fcoe/fcoe.c