Skip to content
  • Chris Leech's avatar
    [SCSI] fcoe: fix handling of pending queue, prevent out of order frames (v3) · 55c8bafb
    Chris Leech authored
    
    
    In fcoe_check_wait_queue() the queue length could temporarily drop to 0,
    before the last frame was successfully sent.  This resulted in out of order
    data frames within a single sequence, leading to IO timeout errors.
    
    This builds on the approach from Vasu Dev to only fix the queue management in
    fcoe_check_wait_queue, where my first patch added locking to the transmit
    path even when the pending queue was not in use.
    
    This patch continues to use fcoe_pending_queue.qlen instead of introducing a
    new length counter, but takes precautions to ensure it never drops to 0 before
    the final frame in the queue has successfully been passed to the netdev qdisc
    layer.  It also includes some cleanup of fcoe_check_wait_queue and removes the
    fcoe_insert_wait_queue(_head) wrapper functions.
    
    Signed-off-by: default avatarChris Leech <christopher.leech@intel.com>
    Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    55c8bafb