• Vasu Dev's avatar
    [SCSI] fcoe, libfc: adds offload EM per eth device with only single xid range per EM · d7179680
    Vasu Dev authored
    Updates fcoe_em_config to allocate a single instance of sharable offload
    EM for supported lp->lro_xid per eth device, and then share this EM
    for subsequently more lports creation on same eth device (e.g when using
    VLAN).
    
    Adds tiny fcoe_oem_match function for offload EM to return true for read
    types IO to have read IO exchanges allocated from offload shared EM.
    
    Removes fc_em_alloc_xid function completely which was needed to manage
    two xid ranges within a EM, this is not needed any more with allocation
    of separate sharable offload EM per eth device. Instead this patch adds
    simple xid allocation logic to manage single xid range.
    
    Adds fc_exch_em_alloc with mp->next_xid as cursor to allocate new xid
    from single xid range of EM, uses mp->next_xid instead removed mp->last_xid
    which slightly increase probability of finding empty xid on exch allocation.
    
    Removes restriction of not allowing use of xid zero along with changing
    two xid range change to single xid range.
    
    Makes fc_fcp_ddp_setup calling conditional to only xid allocated from
    shared offload EM.
    Signed-off-by: default avatarVasu Dev <vasu.dev@intel.com>
    Signed-off-by: default avatarRobert Love <robert.w.love@intel.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
    Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
    d7179680
fc_exch.c 48.9 KB