<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/infiniband/ulp, branch v2.6.25</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/infiniband/ulp?h=v2.6.25</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/infiniband/ulp?h=v2.6.25'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2008-03-12T14:51:03Z</updated>
<entry>
<title>IPoIB: Allocate priv-&gt;tx_ring with vmalloc()</title>
<updated>2008-03-12T14:51:03Z</updated>
<author>
<name>Roland Dreier</name>
<email>rolandd@cisco.com</email>
</author>
<published>2008-03-12T14:51:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=10313cbb92206450b450e14f2b3f6ccde42d9a34'/>
<id>urn:sha1:10313cbb92206450b450e14f2b3f6ccde42d9a34</id>
<content type='text'>
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: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IPoIB/cm: Set tx_wr.num_sge in connected mode post_send()</title>
<updated>2008-03-12T01:35:20Z</updated>
<author>
<name>Roland Dreier</name>
<email>rolandd@cisco.com</email>
</author>
<published>2008-03-12T01:35:20Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4200406b8fbbf309f4fffb339bd16c4553ae0c30'/>
<id>urn:sha1:4200406b8fbbf309f4fffb339bd16c4553ae0c30</id>
<content type='text'>
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: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IPoIB: Don't drop multicast sends when they can be queued</title>
<updated>2008-03-11T21:12:03Z</updated>
<author>
<name>Or Gerlitz</name>
<email>ogerlitz@voltaire.com</email>
</author>
<published>2008-03-11T14:10:02Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b3e2749bf32f61e7beb259eb7cfb066d2ec6ad65'/>
<id>urn:sha1:b3e2749bf32f61e7beb259eb7cfb066d2ec6ad65</id>
<content type='text'>
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: Olga Shern &lt;olgas@voltaire.com&gt;
Signed-off-by: Or Gerlitz &lt;ogerlitz@voltaire.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/iser: Handle iser_device allocation error gracefully</title>
<updated>2008-03-11T04:17:51Z</updated>
<author>
<name>Arne Redlich</name>
<email>arne.redlich@xiranet.com</email>
</author>
<published>2008-03-04T12:11:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d33ed425c6cc14370d8c418b504328d2c3db58b4'/>
<id>urn:sha1:d33ed425c6cc14370d8c418b504328d2c3db58b4</id>
<content type='text'>
"iser_device" allocation failure is "handled" with a BUG_ON() right
before dereferencing the NULL-pointer - fix this!

Signed-off-by: Arne Redlich &lt;arne.redlich@xiranet.com&gt;
Signed-off-by: Erez Zilber &lt;erezz@voltaire.com&gt;
</content>
</entry>
<entry>
<title>IB/iser: Fix list iteration bug</title>
<updated>2008-03-11T04:15:49Z</updated>
<author>
<name>Arne Redlich</name>
<email>arne.redlich@xiranet.com</email>
</author>
<published>2008-03-04T12:07:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9a378270c085080b2f38dee6308de4d8413b5141'/>
<id>urn:sha1:9a378270c085080b2f38dee6308de4d8413b5141</id>
<content type='text'>
The iteration through the list of "iser_device"s during device
lookup/creation is broken -- it might result in an infinite loop if
more than one HCA is used with iSER.  Fix this by using
list_for_each_entry() instead of the open-coded flawed list iteration
code.

Signed-off-by: Arne Redlich &lt;arne.redlich@xiranet.com&gt;
Signed-off-by: Erez Zilber &lt;erezz@voltaire.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IPoIB/cm: Fix ipoib_cm_dev_stop() cleanup when drain times out</title>
<updated>2008-02-19T18:25:11Z</updated>
<author>
<name>Pradeep Satyanarayana</name>
<email>pradeeps@linux.vnet.ibm.com</email>
</author>
<published>2008-02-12T23:00:59Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ec229e5e81b3cf757e5e8b6a8bd0b4f32fe52f8c'/>
<id>urn:sha1:ec229e5e81b3cf757e5e8b6a8bd0b4f32fe52f8c</id>
<content type='text'>
Commit efcd9971 ("IPoIB/cm: Factor out ipoib_cm_free_rx_reap_list()")
introduced a bug in ipoib_cm_dev_stop() when the receive drain times
out.  In that case, the function moves all the pending rx stuff into a
private list but then calls ipoib_cm_free_rx_reap_list(), which
handles a different list.

Fix this by moving everything to the rx_reap_list that will actually
get freed up.

This fixes &lt;https://bugs.openfabrics.org/show_bug.cgi?id=906&gt;.

Signed-off-by: Pradeep Satyanarayana &lt;pradeeps@linux.vnet.ibm.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IPoIB: Remove unused struct ipoib_cm_tx.ibwc member</title>
<updated>2008-02-14T18:30:50Z</updated>
<author>
<name>Eli Cohen</name>
<email>eli@dev.mellanox.co.il</email>
</author>
<published>2008-02-14T11:15:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a9d1884925c80b96a621939a4fef5d74de58debe'/>
<id>urn:sha1:a9d1884925c80b96a621939a4fef5d74de58debe</id>
<content type='text'>
struct ipoib_cm_tx.ibwc is unused since commit 1b524963 ("IPoIB/cm:
Use common CQ for CM send completions"), so remove it.

Signed-off-by: Eli Cohen &lt;eli@mellanox.co.il&gt;
</content>
</entry>
<entry>
<title>IPoIB: On P_Key change event, reset state properly</title>
<updated>2008-02-14T18:15:06Z</updated>
<author>
<name>Jack Morgenstein</name>
<email>jackm@dev.mellanox.co.il</email>
</author>
<published>2008-02-13T14:23:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=167c42655cca188657aa9bb4e06d1194af3c73a5'/>
<id>urn:sha1:167c42655cca188657aa9bb4e06d1194af3c73a5</id>
<content type='text'>
In P_Key event handling, if the old P_Key is no longer available, the
driver must call ipoib_ib_dev_stop() -- just as it does when the P_Key
is still available (see procedure __ipoib_ib_dev_flush()).

When a P_Key becomes available, the driver will perform ipoib_open(),
which assumes that the QP is in RESET, the cm_id has been
destroyed/deleted, etc.  If ipoib_ib_dev_stop() is not called as
described above, then these assumptions will be false, and the attempt
to bring the interface up will fail.

Found by Mellanox QA.

Signed-off-by: Jack Morgenstein &lt;jackm@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IPoIB: Add send gather support</title>
<updated>2008-02-08T22:32:37Z</updated>
<author>
<name>Eli Cohen</name>
<email>eli@mellanox.co.il</email>
</author>
<published>2008-01-30T16:30:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7143740d26098aca84ecc7376ccfe2c58fd0412e'/>
<id>urn:sha1:7143740d26098aca84ecc7376ccfe2c58fd0412e</id>
<content type='text'>
This patch acts as a preparation for using checksum offload for IB
devices capable of inserting/verifying checksum in IP packets.  The
patch does not actaully turn on NETIF_F_SG - we defer that to the
patches adding checksum offload capabilities.

We only add support for send gathers for datagram mode, since existing
HW does not support checksum offload on connected QPs.

Signed-off-by: Michael S. Tsirkin &lt;mst@mellanox.co.il&gt;
Signed-off-by: Eli Cohen &lt;eli@mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IPoIB: Add high DMA feature flag</title>
<updated>2008-02-08T21:39:26Z</updated>
<author>
<name>Eli Cohen</name>
<email>eli@mellanox.co.il</email>
</author>
<published>2008-01-30T16:30:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=eb14032f9eb595621270f3269f40094adb3144e8'/>
<id>urn:sha1:eb14032f9eb595621270f3269f40094adb3144e8</id>
<content type='text'>
All current InfiniBand devices can handle all DMA addresses, and it's
hard to imagine anyone would be silly enough to build a new device
that couldn't.  Therefore, enable the NETIF_F_HIGHDMA feature for IPoIB.

This has no effect for no, but is needed when we enable gather/scatter
support and checksum stateless offloads.

Signed-off-by: Eli Cohen &lt;eli@mellnaox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
</feed>
