[SCSI] libfc:Fix for exchange/seq loopup failure when FCoE stack is used as target...
authorKiran Patil <kiran.patil@intel.com>
Mon, 20 Jun 2011 23:59:30 +0000 (16:59 -0700)
committerJames Bottomley <JBottomley@Parallels.com>
Wed, 29 Jun 2011 21:30:17 +0000 (16:30 -0500)
commite3e65c69c3cfe8e407797c78fd11808aee1a8a81
tree7c4991ae5419e5f94c5fb7cfd13945d2e6d28d06
parent29bdd2bb3e48c742e6b5a0be2ff2fa00e9838fe0
[SCSI] libfc:Fix for exchange/seq loopup failure when FCoE stack is used as target and connected to windows initaitor

Problem: Linux based SW target (TCM) connected to windows initiator
was unable to satisfy write request of size > 2K.

Fix: Existing linux implememtation of FCoE stack is expecting sequence
number to match w.r.t incoming framme. When DDP is used on target in
response to write request from initiator, SW stack is notified only
when last data frame arrives and only the pakcket header of last data
frame is posted to NetRx queue of storage. When that last packet was
processed in libfc:Exchange layer, implementation was expecting
sequence number to match, but in this case sequence number which is
embedded in FC Header is assigned by windows initaitor, hence due to
sequence number mismatch post-processing which shall result into
sending RSP is not done. Enhanced the code to utilize the sequence
number of incoming last frame and process the packet so that, it will
eventually complete the write request by sending write response (RSP)
GOOD.

Notes/Dependencies: This patch is validated using windows and linux
initiator to make sure, it doesn't break anything.

Signed-off-by: Kiran Patil <kiran.patil@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/libfc/fc_exch.c