1. 18 Jan, 2018 1 commit
  2. 17 Jan, 2018 14 commits
  3. 15 Jan, 2018 11 commits
  4. 11 Jan, 2018 11 commits
  5. 10 Jan, 2018 2 commits
    • Bart Van Assche's avatar
      RDMA/rxe: Fix a race condition related to the QP error state · 6f301e06
      Bart Van Assche authored
      The following sequence:
      * Change queue pair state into IB_QPS_ERR.
      * Post a work request on the queue pair.
      
      Triggers the following race condition in the rdma_rxe driver:
      * rxe_qp_error() triggers an asynchronous call of rxe_completer(), the function
        that examines the QP send queue.
      * rxe_post_send() posts a work request on the QP send queue.
      
      If rxe_completer() runs prior to rxe_post_send(), it will drain the send
      queue and the driver will assume no further action is necessary.
      However, once we post the send to the send queue, because the queue is
      in error, no send completion will ever happen and the send will get
      stuck.  In order to process the send, we need to make sure that
      rxe_completer() gets run after a send is posted to a queue pair in an
      error state.  This patch ensures that happens.
      Signed-off-by: default avatarBart Van Assche <bart.vanassche@wdc.com>
      Cc: Moni Shoua <monis@mellanox.com>
      Cc: <stable@vger.kernel.org> # v4.8
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      6f301e06
    • Colin Ian King's avatar
      IB/mlx5: remove redundant assignment of mdev · da005f9f
      Colin Ian King authored
      The initial assignment to mdev is redundant as mdev is re-assigned
      later and the first assigned value is never read. Remove this
      redundant assignment.
      
      Cleans up clang warning:
      drivers/infiniband/hw/mlx5/main.c:359:24: warning: Value stored
      to 'mdev' during its initialization is never read
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Acked-by: default avatarLeon Romanovsky <leonro@mellanox.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      da005f9f
  6. 08 Jan, 2018 1 commit
    • Zhu Yanjun's avatar
      IB/rxe: remove unnecessary skb_clone in xmit · 5793b465
      Zhu Yanjun authored
      In xmit, there is a skb_clone. This function copies the struct sk_buff.
      And some parameters are changed to the new skb. Then the new skb is sent
      while the old skb is freed.
      
      While the function skb_clone is removed, the parameter changes are made on
      the old skb, then the old skb is sent. It can also work well.
      
      The following tests are made.
      
       server                       client
      ---------                    ---------
      |1.1.1.1|<----rxe-channel--->|1.1.1.2|
      ---------                    ---------
      
      On server: rping -s -a 1.1.1.1 -v -C 1000 -S 512
      On client: rping -c -a 1.1.1.1 -v -C 1000 -S 512
      
      The kernel config CONFIG_DEBUG_KMEMLEAK is enabled on both server
      and client.
      
      This test runs for several hours. There is no memory leak and the whole
      system can work well.
      
      As the above network, the following tests are made.
      
      Server: ibv_rc_pingpong -d rxe0 -g 1
      Client: ibv_rc_pingpong -d rxe0 -g 1 1.1.1.1
      
      The result on Server.
      Before:
      8192000 bytes in 0.88 seconds = 74.36 Mbit/sec
      1000 iters in 0.88 seconds = 881.30 usec/iter
      
      After:
      8192000 bytes in 0.81 seconds = 81.15 Mbit/sec
      1000 iters in 0.81 seconds = 807.62 usec/iter
      
      The throughput is enhanced and the latency is reduced.
      
      CC: Srinivas Eeda <srinivas.eeda@oracle.com>
      CC: Joe Jin <joe.jin@oracle.com>
      CC: Junxiao Bi <junxiao.bi@oracle.com>
      Signed-off-by: default avatarZhu Yanjun <yanjun.zhu@oracle.com>
      Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
      5793b465