IPoIB/cm: Set tx_wr.num_sge in connected mode post_send()
authorRoland Dreier <rolandd@cisco.com>
Wed, 12 Mar 2008 01:35:20 +0000 (18:35 -0700)
committerRoland Dreier <rolandd@cisco.com>
Wed, 12 Mar 2008 01:35:20 +0000 (18:35 -0700)
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 <rolandd@cisco.com>
drivers/infiniband/ulp/ipoib/ipoib_cm.c

index 52b1bebfa74482dc2586667e6c35c68f4b5e5c04..4e8d0281f8bc355129803285e2f098c295d2d41b 100644 (file)
@@ -637,6 +637,7 @@ static inline int post_send(struct ipoib_dev_priv *priv,
        priv->tx_sge[0].addr          = addr;
        priv->tx_sge[0].length        = len;
 
+       priv->tx_wr.num_sge     = 1;
        priv->tx_wr.wr_id       = wr_id | IPOIB_OP_CM;
 
        return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr);