1. 10 Feb, 2007 6 commits
    • Sean Hefty's avatar
      RDMA/cma: Increment port number after close to avoid re-use · aedec080
      Sean Hefty authored
      Randomize the starting port number and avoid re-using port values
      immediately after they are closed.  Instead keep track of the last
      port value used and increment it every time a new port number is
      assigned, to better replicate other port spaces.
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      aedec080
    • Akinobu Mita's avatar
      IB/ehca: Fix memleak on module unloading · 65e5c026
      Akinobu Mita authored
      Percpu data is not freed on module unloading.
      
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Christoph Raisch <raisch@de.ibm.com>
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarHoang-Nam Nguyen <hnguyen@de.ibm.com>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      65e5c026
    • David Howells's avatar
      IB/mthca: Work around gcc bug on sparc64 · 6bdd61d8
      David Howells authored
      For some reason gcc-3.4.5 on sparc64 does:
      
       WARNING: "____ilog2_NaN" [drivers/infiniband/hw/mthca/ib_mthca.ko] undefined!
      
      Points to note:
      
       (1) The asm volatile flush/flushw are just markers for viewing what comes out
           in the assembly; removing them has no effect on the result.
      
       (2) Changing almost anything else in dwh__mthca_arbel_init_srq_context() or
           dwh__mthca_alloc_srq() causes the problem to go away.
      
      The compiler command line issued by the kernel build is:
      
      /opt/crosstool/gcc-3.4.5-glibc-2.3.6/sparc64-unknown-linux-gnu/bin/sparc64-unknown-linux-gnu-gcc -fno-strict-aliasing -fno-common -Os -m64 -mno-fpu -mcpu=ultrasparc -mcmodel=medlow -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wa,--undeclared-regs -pg -fno-omit-frame-pointer -fno-optimize-sibling-calls -fasynchronous-unwind-tables -g  -c -o drivers/infiniband/hw/mthca/.tmp_mthca_srq.o drivers/infiniband/hw/mthca/mthca_srq.c
      
      This can be reduced to this whilst still retaining the problem:
      
      /opt/crosstool/gcc-3.4.5-glibc-2.3.6/sparc64-unknown-linux-gnu/bin/sparc64-unknown-linux-gnu-gcc -m64 -c -o drivers/infiniband/hw/mthca/mthca_srq.o drivers/infiniband/hw/mthca/mthca_srq.c -Os
      
      Removing -Os or changing it to -O or -O0 thru -O6 gets rid of the problem.
      
      This patch to the kernel code fixes the problem:
      
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      6bdd61d8
    • Michael S. Tsirkin's avatar
      IPoIB: Connected mode experimental support · 839fcaba
      Michael S. Tsirkin authored
      The following patch adds experimental support for IPoIB connected
      mode, as defined by the draft from the IETF ipoib working group.  The
      idea is to increase performance by increasing the MTU from the maximum
      of 2K (theoretically 4K) supported by IPoIB on top of UD.  With this
      code, I'm able to get 800MByte/sec or more with netperf without
      options on a Mellanox 4x back-to-back DDR system.
      
      Some notes on code:
      1. SRQ is used for scalability to large cluster sizes
      2. Only RC connections are used (UC does not support SRQ now)
      3. Retry count is set to 0 since spec draft warns against retries
      4. Each connection is used for data transfers in only 1 direction, so
         each connection is either active(TX) or passive (RX).  2 sides that
         want to communicate create 2 connections.
      5. Each active (TX) connection has a separate CQ for send completions -
         this keeps the code simple without CQ resize and other tricks
      6. To detect stale passive side connections (where the remote side is
         down), we keep an LRU list of passive connections (updated once per
         second per connection) and destroy a connection after it has been
         unused for several seconds. The LRU rule makes it possible to avoid
         scanning connections that have recently been active.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@mellanox.co.il>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      839fcaba
    • Ahmed S. Darwish's avatar
      IB/core: Use ARRAY_SIZE macro for mandatory_table · 9a6b090c
      Ahmed S. Darwish authored
      Use ARRAY_SIZE() macro already defined in kernel.h instead of open
      coding equivalent code.
      Signed-off-by: default avatarAhmed S. Darwish <darwish.07@gmail.com>
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      9a6b090c
    • Roland Dreier's avatar
      IB/mthca: Use correct structure size in call to memset() · 99d4f22e
      Roland Dreier authored
      When clearing the ib_ah_attr parameter in to_ib_ah_attr(), use sizeof
      *ib_ah_attr instead of sizeof *path.
      
      Pointed out by Jack Morgenstein <jackm@mellanox.co.il>.
      Signed-off-by: default avatarRoland Dreier <rolandd@cisco.com>
      99d4f22e
  2. 09 Feb, 2007 34 commits