• Vasu Dev's avatar
    [SCSI] fcoe, libfc: fully makes use of per cpu exch pool and then removes em_lock · b2f0091f
    Vasu Dev authored
    
    
    1. Updates fcoe_rcv() to queue incoming frames to the fcoe per
       cpu thread on which this frame's exch was originated and simply
       use current cpu for request exch not originated by initiator.
       It is redundant to add this code under CONFIG_SMP, so removes
       CONFIG_SMP uses around this code.
    
    2. Updates fc_exch_em_alloc, fc_exch_delete, fc_exch_find to use
       per cpu exch pools, here fc_exch_delete is rename of older
       fc_exch_mgr_delete_ep since ep/exch are now deleted in pools
       of EM and so brief new name is sufficient and better name.
    
       Updates these functions to map exch id to their index into exch
       pool using fc_cpu_mask, fc_cpu_order and EM min_xid.
       This mapping is as per detailed explanation about this in
       last patch and basically this is just as lower fc_cpu_mask
       bits of exch id as cpu number and upper bit sum of EM min_xid
       and exch index in pool.
    
       Uses pool next_index to keep track of exch allocation from
       pool along with pool_max_index as upper bound of exches array
       in pool.
    
    3. Adds exch pool ptr to fc_exch to free exch to its pool in
       fc_exch_delete.
    
    4. Updates fc_exch_mgr_reset to reset all exch pools of an EM,
       this required adding fc_exch_pool_reset func to reset exches
       in pool and then have fc_exch_mgr_reset call fc_exch_pool_reset
       for each pool within each EM for a lport.
    
    5. Removes no longer needed exches array, em_lock, next_xid, and
       total_exches from struct fc_exch_mgr, these are not needed after
       use of per cpu exch pool, also removes not used max_read,
       last_read from struct fc_exch_mgr.
    
    6. Updates locking notes for exch pool lock with fc_exch lock and
       uses pool lock in exch allocation, lookup and reset.
    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@suse.de>
    b2f0091f
libfc.h 27.6 KB