1. 26 1月, 2008 7 次提交
    • E
      IB/iser: update URLs of iSER docs · bd5d7a85
      Erez Zilber 提交于
      Signed-off-by: NErez Zilber <erezz@voltaire.com>
      bd5d7a85
    • J
      drivers/infiniband: Add missing "space" · 908cf9a5
      Joe Perches 提交于
      Add missing spaces in the middle of format strings.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      908cf9a5
    • P
      IPoIB/cm: Add connected mode support for devices without SRQs · 68e995a2
      Pradeep Satyanarayana 提交于
      Some IB adapters (notably IBM's eHCA) do not implement SRQs (shared
      receive queues).  The current IPoIB connected mode support only works
      on devices that support SRQs.
      
      Fix this by adding support for using the receive queue of each
      connected mode receive QP.  The disadvantage of this compared to using
      an SRQ is that it means a full queue of receives must be posted for
      each remote connected mode peer, which means that total memory usage
      is potentially much higher than when using SRQs.  To manage this, add
      a new module parameter "max_nonsrq_conn_qp" that limits the number of
      connections allowed per interface.
      
      The rest of the changes are fairly straightforward: we use a table of
      struct ipoib_cm_rx to hold all the active connections, and put the
      table index of the connection in the high bits of receive WR IDs.
      This is needed because we cannot rely on the struct ib_wc.qp field for
      non-SRQ receive completions.  Most of the rest of the changes just
      test whether or not an SRQ is available, and post receives or find
      received packets in the right place depending on the answer.
      
      Cleaning up dead connections actually becomes simpler, because we do
      not have to do the "last WQE reached" dance that is required to
      destroy QPs attached to an SRQ.  We just move the QP to the error
      state and wait for all pending receives to be flushed.
      Signed-off-by: NPradeep Satyanarayana <pradeeps@linux.vnet.ibm.com>
      
      [ Completely rewritten and split up, based on Pradeep's work.  Several
        bugs fixed and no doubt several bugs introduced.  - Roland ]
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      68e995a2
    • R
      IPoIB/cm: Factor out ipoib_cm_free_rx_reap_list() · efcd9971
      Roland Dreier 提交于
      Factor out the code for going through the rx_reap list of struct
      ipoib_cm_rx and freeing each one.  This consolidates the code
      duplicated between ipoib_cm_dev_stop() and ipoib_cm_rx_reap() and
      reduces the risk of error when adding additional accounting.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      efcd9971
    • R
      IPoIB/cm: Factor out ipoib_cm_create_srq() · 7b3687df
      Roland Dreier 提交于
      Factor out the code to create an SRQ and allocate the receive ring in
      ipoib_cm_dev_init() into a new function ipoib_cm_create_srq().  This
      will make the code neater when support for devices that don't implement
      SRQs is added.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      7b3687df
    • R
      IPoIB/cm: Factor out ipoib_cm_free_rx_ring() · 1efb6144
      Roland Dreier 提交于
      Factor out the code to unmap/free skbs and free the receive ring in
      ipoib_cm_dev_cleanup() into a new function ipoib_cm_free_rx_ring().
      This function will be called from a couple of other places when
      support for devices that don't implement SRQs is added.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      1efb6144
    • R
      IPoIB: Trivial formatting cleanups · 2337f809
      Roland Dreier 提交于
      Fix whitespace blunders, convert "foo* bar" to "foo *bar", etc.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      2337f809
  2. 09 1月, 2008 1 次提交
  3. 04 1月, 2008 1 次提交
  4. 28 11月, 2007 1 次提交
  5. 25 11月, 2007 1 次提交
  6. 27 10月, 2007 1 次提交
    • R
      IPoIB/cm: Fix receive QP cleanup · 09f60f8f
      Roland Dreier 提交于
      Commit 1b524963 ("IPoIB/cm: Use common CQ for CM send completions")
      changed how the high-order bits of work request IDs were used, which
      had the effect that IPOIB_CM_RX_DRAIN_WRID was no longer handled as a
      connected mode receive completion.  This leads to the messages
      
          ib1: cm send completion event with wrid 1073741823 (> 64)
          ib1: RX drain timing out
      
      when an interface with connected mode QPs is brought down.  Fix this
      by making sure that both IPOIB_OP_CM and IPOIB_OP_RECV are set in
      IPOIB_CM_RX_DRAIN_WRID.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      09f60f8f
  7. 23 10月, 2007 1 次提交
  8. 20 10月, 2007 1 次提交
  9. 18 10月, 2007 1 次提交
  10. 17 10月, 2007 1 次提交
  11. 16 10月, 2007 3 次提交
    • J
      infiniband: sg chaining support · 53d412fc
      Jens Axboe 提交于
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      53d412fc
    • M
      IB/ipoib: Verify address handle validity on send · 200d1713
      Moni Shoua 提交于
      When the bonding device senses a carrier loss of its active slave it replaces
      that slave with a new one. In between the times when the carrier of an IPoIB
      device goes down and ipoib_neigh is destroyed, it is possible that the
      bonding driver will send a packet on a new slave that uses an old ipoib_neigh.
      This patch detects and prevents this from happenning.
      
      Signed-off-by: Moni Shoua <monis at voltaire.com>
      Signed-off-by: Or Gerlitz <ogerlitz at voltaire.com>
      Acked-by: NRoland Dreier <rdreier@cisco.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      200d1713
    • M
      IB/ipoib: Bound the net device to the ipoib_neigh structue · 732a2170
      Moni Shoua 提交于
      IPoIB uses a two layer neighboring scheme, such that for each struct neighbour
      whose device is an ipoib one, there is a struct ipoib_neigh buddy which is
      created on demand at the tx flow by an ipoib_neigh_alloc(skb->dst->neighbour)
      call.
      
      When using the bonding driver, neighbours are created by the net stack on behalf
      of the bonding (master) device. On the tx flow the bonding code gets an skb such
      that skb->dev points to the master device, it changes this skb to point on the
      slave device and calls the slave hard_start_xmit function.
      
      Under this scheme, ipoib_neigh_destructor assumption that for each struct
      neighbour it gets, n->dev is an ipoib device and hence netdev_priv(n->dev)
      can be casted to struct ipoib_dev_priv is buggy.
      
      To fix it, this patch adds a dev field to struct ipoib_neigh which is used
      instead of the struct neighbour dev one, when n->dev->flags has the
      IFF_MASTER bit set.
      
      Signed-off-by: Moni Shoua <monis at voltaire.com>
      Signed-off-by: Or Gerlitz <ogerlitz at voltaire.com>
      Acked-by: NRoland Dreier <rdreier@cisco.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      732a2170
  12. 13 10月, 2007 2 次提交
  13. 11 10月, 2007 6 次提交
    • R
      IPoIB: Fix unused variable warning · 9153f66a
      Roland Dreier 提交于
      The conversion to use netdevice internal stats left an unused variable
      in ipoib_neigh_free(), since there's no longer any reason to get
      netdev_priv() in order to increment dropped packets.  Delete the
      unused priv variable.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      9153f66a
    • R
      [IPoIB]: Convert to netdevice internal stats · de903512
      Roland Dreier 提交于
      Use the stats member of struct netdevice in IPoIB, so we can save
      memory by deleting the stats member of struct ipoib_dev_priv, and save
      code by deleting ipoib_get_stats().
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      de903512
    • S
      [NET]: Move hardware header operations out of netdevice. · 3b04ddde
      Stephen Hemminger 提交于
      Since hardware header operations are part of the protocol class
      not the device instance, make them into a separate object and
      save memory.
      Signed-off-by: NStephen Hemminger <shemminger@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3b04ddde
    • R
      [NET]: Nuke SET_MODULE_OWNER macro. · 10d024c1
      Ralf Baechle 提交于
      It's been a useless no-op for long enough in 2.6 so I figured it's time to
      remove it.  The number of people that could object because they're
      maintaining unified 2.4 and 2.6 drivers is probably rather small.
      
      [ Handled drivers added by netdev tree and some missed IRDA cases... -DaveM ]
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: NJeff Garzik <jeff@garzik.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      10d024c1
    • S
      [NET]: Make NAPI polling independent of struct net_device objects. · bea3348e
      Stephen Hemminger 提交于
      Several devices have multiple independant RX queues per net
      device, and some have a single interrupt doorbell for several
      queues.
      
      In either case, it's easier to support layouts like that if the
      structure representing the poll is independant from the net
      device itself.
      
      The signature of the ->poll() call back goes from:
      
      	int foo_poll(struct net_device *dev, int *budget)
      
      to
      
      	int foo_poll(struct napi_struct *napi, int budget)
      
      The caller is returned the number of RX packets processed (or
      the number of "NAPI credits" consumed if you want to get
      abstract).  The callee no longer messes around bumping
      dev->quota, *budget, etc. because that is all handled in the
      caller upon return.
      
      The napi_struct is to be embedded in the device driver private data
      structures.
      
      Furthermore, it is the driver's responsibility to disable all NAPI
      instances in it's ->stop() device close handler.  Since the
      napi_struct is privatized into the driver's private data structures,
      only the driver knows how to get at all of the napi_struct instances
      it may have per-device.
      
      With lots of help and suggestions from Rusty Russell, Roland Dreier,
      Michael Chan, Jeff Garzik, and Jamal Hadi Salim.
      
      Bug fixes from Thomas Graf, Roland Dreier, Peter Zijlstra,
      Joseph Fannin, Scott Wood, Hans J. Koch, and Michael Chan.
      
      [ Ported to current tree and all drivers converted.  Integrated
        Stephen's follow-on kerneldoc additions, and restored poll_list
        handling to the old style to fix mutual exclusion issues.  -DaveM ]
      Signed-off-by: NStephen Hemminger <shemminger@linux-foundation.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bea3348e
    • O
      IPoIB: Allow setting policy to ignore multicast groups · 335a64a5
      Or Gerlitz 提交于
      The kernel IB stack allows (through the RDMA CM) userspace
      applications to join and use multicast groups from the IPoIB MGID
      range.  This allows multicast traffic to be handled directly from
      userspace QPs, without going through the kernel stack, which gives
      better performance for some applications.
      
      However, to fully interoperate with IP multicast, such userspace
      applications need to participate in IGMP reports and queries, or else
      routers may not forward the multicast traffic to the system where the
      application is running.  The simplest way to do this is to share the
      kernel IGMP implementation by using the IP_ADD_MEMBERSHIP option to
      join multicast groups that are being handled directly in userspace.
      
      However, in such cases, the actual multicast traffic should not also
      be handled by the IPoIB interface, because that would burn resources
      handling multicast packets that will just be discarded in the kernel.
      
      To handle this, this patch adds lookup on the database used for IB
      multicast group reference counting when IPoIB is joining multicast
      groups, and if a multicast group is already handled by user space,
      then the IPoIB kernel driver ignores the group.  This is controlled by
      a per-interface policy flag.  When the flag is set, IPoIB will not
      join and attach its QP to a multicast group which already has an entry
      in the database; when the flag is cleared, IPoIB will behave as before
      this change.
      
      For each IPoIB interface, the /sys/class/net/$intf/umcast attribute
      controls the policy flag.  The default value is off/0.
      Signed-off-by: NOr Gerlitz <ogerlitz@voltaire.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      335a64a5
  14. 10 10月, 2007 7 次提交
  15. 08 8月, 2007 1 次提交
  16. 04 8月, 2007 2 次提交
  17. 27 7月, 2007 1 次提交
  18. 20 7月, 2007 1 次提交
    • P
      mm: Remove slab destructors from kmem_cache_create(). · 20c2df83
      Paul Mundt 提交于
      Slab destructors were no longer supported after Christoph's
      c59def9f change. They've been
      BUGs for both slab and slub, and slob never supported them
      either.
      
      This rips out support for the dtor pointer from kmem_cache_create()
      completely and fixes up every single callsite in the kernel (there were
      about 224, not including the slab allocator definitions themselves,
      or the documentation references).
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      20c2df83
  19. 18 7月, 2007 1 次提交
    • R
      IB/iser: Make a couple of functions static · 41179e2d
      Roland Dreier 提交于
      Make iser_conn_release() and iser_start_rdma_unaligned_sg() static,
      since they are only used in the .c file where they are defined.  In
      addition to being a cleanup, this even shrinks the generated code by
      allowing the single call of iser_start_rdma_unaligned_sg() to be
      inlined into its callsite.  On x86_64:
      
      add/remove: 0/1 grow/shrink: 1/0 up/down: 466/-533 (-67)
      function                                     old     new   delta
      iser_reg_rdma_mem                           1518    1984    +466
      iser_start_rdma_unaligned_sg                 533       -    -533
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      41179e2d