• Kiran Patil's avatar
    [SCSI] libfc:Fix for exchange/seq loopup failure when FCoE stack is used as... · e3e65c69
    Kiran Patil authored
    [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: default avatarKiran Patil <kiran.patil@intel.com>
    Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    e3e65c69
fc_exch.c 64.3 KB