1. 12 7月, 2008 13 次提交
  2. 21 5月, 2008 1 次提交
  3. 01 5月, 2008 1 次提交
    • E
      IB/ipoib: Fix transmit queue stalling forever · 57ce41d1
      Eli Cohen 提交于
      Commit f56bcd80 ("IPoIB: Use separate CQ for UD send completions")
      introduced a bug where the transmit queue could get stopped and never
      woken up.  The problem is that send completions are only polled at the
      end of the xmit function, so if the send queue fills up and the xmit
      path stops the queue, then there is no way for send completions to
      ever get polled, and so the transmit queue stays stopped forever.
      
      Fix this by arming the send CQ just before posting the last send
      request that fills the send queue.  Then, when the completion event
      handler is called, drain the send CQ.  Since it is possible that not
      enough send completions are in the CQ, verify that the the net queue
      has been woken up after draining the send CQ, and if not arm a timer
      and drain again at the timer function.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      57ce41d1
  4. 30 4月, 2008 4 次提交
  5. 24 4月, 2008 1 次提交
  6. 20 4月, 2008 2 次提交
  7. 17 4月, 2008 9 次提交
  8. 12 3月, 2008 3 次提交
    • R
      IPoIB: Allocate priv->tx_ring with vmalloc() · 10313cbb
      Roland Dreier 提交于
      Commit 7143740d ("IPoIB: Add send gather support") made struct
      ipoib_tx_buf significantly larger, since the mapping member changed
      from a single u64 to an array with MAX_SKB_FRAGS + 1 entries.  This
      means that allocating tx_rings with kzalloc() may fail because there
      is not enough contiguous memory for the new, much bigger size.  Fix
      this regression by allocating the rings with vmalloc() instead.
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      10313cbb
    • R
      IPoIB/cm: Set tx_wr.num_sge in connected mode post_send() · 4200406b
      Roland Dreier 提交于
      Commit 7143740d ("IPoIB: Add send gather support") made it possible
      for tx_wr.num_sge to be != 1 -- this happens if send gather support is
      enabled.  However, the code in the connected mode post_send() function
      assumes the old invariant, namely that tx_wr.num_sge is always 1.  Fix
      this by explicitly setting tx_wr.num_sge to 1 in the CM post_send().
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      4200406b
    • O
      IPoIB: Don't drop multicast sends when they can be queued · b3e2749b
      Or Gerlitz 提交于
      When set_multicast_list() is called the multicast task is restarted
      and the IPOIB_MCAST_STARTED bit is cleared.  As a result for some
      window of time, multicast packets are not transmitted nor queued but
      rather dropped by ipoib_mcast_send().  These dropped packets are
      painful in two cases:
      
       - bonding fail-over which both calls set_multicast_list() on the new
         active slave and sends Gratuitous ARP through that slave.
      
       - IP_DROP_MEMBERSHIP code which both calls set_multicast_list() on the
         device and issues IGMP leave.
      
      In both these cases, depending on the scheduling of the IPoIB
      multicast task, the packets would be dropped.  As a result, in the
      bonding case, the failover would not be detected by the peers until
      their neighbour is renewed the neighbour (which takes a few tens of
      seconds).  In the IGMP case, the IP router doesn't get an IGMP leave
      and would only learn on that from further probes on the group (also a
      delay of at least a few tens of seconds).
      
      Fix this by allowing transmission (or queuing) depending on the
      IPOIB_FLAG_OPER_UP flag instead of the IPOIB_MCAST_STARTED flag.
      Signed-off-by: NOlga Shern <olgas@voltaire.com>
      Signed-off-by: NOr Gerlitz <ogerlitz@voltaire.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      b3e2749b
  9. 11 3月, 2008 2 次提交
  10. 20 2月, 2008 1 次提交
  11. 15 2月, 2008 2 次提交
  12. 09 2月, 2008 1 次提交