• Dust Li's avatar
    net/smc: don't send in the BH context if sock_owned_by_user · 6b88af83
    Dust Li authored
    Send data all the way down to the RDMA device is a time
    consuming operation(get a new slot, maybe do RDMA Write
    and send a CDC, etc). Moving those operations from BH
    to user context is good for performance.
    
    If the sock_lock is hold by user, we don't try to send
    data out in the BH context, but just mark we should
    send. Since the user will release the sock_lock soon, we
    can do the sending there.
    
    Add smc_release_cb() which will be called in release_sock()
    and try send in the callback if needed.
    
    This patch moves the sending part out from BH if sock lock
    is hold by user. In my testing environment, this saves about
    20% softirq in the qperf 4K tcp_bw test in the sender side
    with no noticeable throughput drop.
    Signed-off-by: default avatarDust Li <dust.li@linux.alibaba.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    6b88af83
af_smc.c 83.7 KB