diff options
Diffstat (limited to 'drivers/infiniband/ulp/ipoib/ipoib_ib.c')
| -rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_ib.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c index 8c91d9f37ad..ec6b4fbe25e 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c @@ -35,6 +35,7 @@  #include <linux/delay.h>  #include <linux/dma-mapping.h> +#include <linux/slab.h>  #include <linux/ip.h>  #include <linux/tcp.h> @@ -529,7 +530,7 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,  {  	struct ipoib_dev_priv *priv = netdev_priv(dev);  	struct ipoib_tx_buf *tx_req; -	int hlen; +	int hlen, rc;  	void *phead;  	if (skb_is_gso(skb)) { @@ -585,9 +586,10 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb,  		netif_stop_queue(dev);  	} -	if (unlikely(post_send(priv, priv->tx_head & (ipoib_sendq_size - 1), -			       address->ah, qpn, tx_req, phead, hlen))) { -		ipoib_warn(priv, "post_send failed\n"); +	rc = post_send(priv, priv->tx_head & (ipoib_sendq_size - 1), +		       address->ah, qpn, tx_req, phead, hlen); +	if (unlikely(rc)) { +		ipoib_warn(priv, "post_send failed, error %d\n", rc);  		++dev->stats.tx_errors;  		--priv->tx_outstanding;  		ipoib_dma_unmap_tx(priv->ca, tx_req);  |