• Li RongQing's avatar
    net/smc: remove unneeded atomic operations in smc_tx_sndbuf_nonempty · e7bed88e
    Li RongQing authored
    The commit dcd2cf5f ("net/smc: add autocorking support") adds an
    atomic variable tx_pushing in smc_connection to make sure only one can
    send to let it cork more and save CDC slot. since smc_tx_pending can be
    called in the soft IRQ without checking sock_owned_by_user() at that
    time, which would cause a race condition because bh_lock_sock() did
    not honor sock_lock()
    
    After commit 6b88af83 ("net/smc: don't send in the BH context if
    sock_owned_by_user"), the transmission is deferred to when sock_lock()
    is held by the user. Therefore, we no longer need tx_pending to hold
    message.
    
    So remove atomic variable tx_pushing and its operation, and
    smc_tx_sndbuf_nonempty becomes a wrapper of __smc_tx_sndbuf_nonempty,
    so rename __smc_tx_sndbuf_nonempty back to smc_tx_sndbuf_nonempty
    Suggested-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
    Co-developed-by: default avatarDust Li <dust.li@linux.alibaba.com>
    Signed-off-by: default avatarDust Li <dust.li@linux.alibaba.com>
    Signed-off-by: default avatarLi RongQing <lirongqing@baidu.com>
    Reviewed-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
    
    diff v4: remove atomic variable tx_pushing
    diff v3: improvements in the commit body and comments
    diff v2: fix a typo in commit body and add net-next subject-prefix
    
     net/smc/smc.h    |  1 -
     net/smc/smc_tx.c | 30 +-----------------------------
     2 files changed, 1 insertion(+), 30 deletions(-)
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e7bed88e
smc_tx.c 21.2 KB