Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b4671a0 authored by Bart Van Assche's avatar Bart Van Assche Committed by Jason Gunthorpe
Browse files

IB/IPoIB: Simplify ib_post_(send|recv|srq_recv)() calls



Instead of declaring and passing a dummy 'bad_wr' pointer, pass NULL
as third argument to ib_post_(send|recv|srq_recv)().

Signed-off-by: default avatarBart Van Assche <bart.vanassche@wdc.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 1fec77bf
Loading
Loading
Loading
Loading
+4 −9
Original line number Original line Diff line number Diff line
@@ -94,7 +94,6 @@ static void ipoib_cm_dma_unmap_rx(struct ipoib_dev_priv *priv, int frags,
static int ipoib_cm_post_receive_srq(struct net_device *dev, int id)
static int ipoib_cm_post_receive_srq(struct net_device *dev, int id)
{
{
	struct ipoib_dev_priv *priv = ipoib_priv(dev);
	struct ipoib_dev_priv *priv = ipoib_priv(dev);
	struct ib_recv_wr *bad_wr;
	int i, ret;
	int i, ret;


	priv->cm.rx_wr.wr_id = id | IPOIB_OP_CM | IPOIB_OP_RECV;
	priv->cm.rx_wr.wr_id = id | IPOIB_OP_CM | IPOIB_OP_RECV;
@@ -102,7 +101,7 @@ static int ipoib_cm_post_receive_srq(struct net_device *dev, int id)
	for (i = 0; i < priv->cm.num_frags; ++i)
	for (i = 0; i < priv->cm.num_frags; ++i)
		priv->cm.rx_sge[i].addr = priv->cm.srq_ring[id].mapping[i];
		priv->cm.rx_sge[i].addr = priv->cm.srq_ring[id].mapping[i];


	ret = ib_post_srq_recv(priv->cm.srq, &priv->cm.rx_wr, &bad_wr);
	ret = ib_post_srq_recv(priv->cm.srq, &priv->cm.rx_wr, NULL);
	if (unlikely(ret)) {
	if (unlikely(ret)) {
		ipoib_warn(priv, "post srq failed for buf %d (%d)\n", id, ret);
		ipoib_warn(priv, "post srq failed for buf %d (%d)\n", id, ret);
		ipoib_cm_dma_unmap_rx(priv, priv->cm.num_frags - 1,
		ipoib_cm_dma_unmap_rx(priv, priv->cm.num_frags - 1,
@@ -120,7 +119,6 @@ static int ipoib_cm_post_receive_nonsrq(struct net_device *dev,
					struct ib_sge *sge, int id)
					struct ib_sge *sge, int id)
{
{
	struct ipoib_dev_priv *priv = ipoib_priv(dev);
	struct ipoib_dev_priv *priv = ipoib_priv(dev);
	struct ib_recv_wr *bad_wr;
	int i, ret;
	int i, ret;


	wr->wr_id = id | IPOIB_OP_CM | IPOIB_OP_RECV;
	wr->wr_id = id | IPOIB_OP_CM | IPOIB_OP_RECV;
@@ -128,7 +126,7 @@ static int ipoib_cm_post_receive_nonsrq(struct net_device *dev,
	for (i = 0; i < IPOIB_CM_RX_SG; ++i)
	for (i = 0; i < IPOIB_CM_RX_SG; ++i)
		sge[i].addr = rx->rx_ring[id].mapping[i];
		sge[i].addr = rx->rx_ring[id].mapping[i];


	ret = ib_post_recv(rx->qp, wr, &bad_wr);
	ret = ib_post_recv(rx->qp, wr, NULL);
	if (unlikely(ret)) {
	if (unlikely(ret)) {
		ipoib_warn(priv, "post recv failed for buf %d (%d)\n", id, ret);
		ipoib_warn(priv, "post recv failed for buf %d (%d)\n", id, ret);
		ipoib_cm_dma_unmap_rx(priv, IPOIB_CM_RX_SG - 1,
		ipoib_cm_dma_unmap_rx(priv, IPOIB_CM_RX_SG - 1,
@@ -212,7 +210,6 @@ static void ipoib_cm_free_rx_ring(struct net_device *dev,


static void ipoib_cm_start_rx_drain(struct ipoib_dev_priv *priv)
static void ipoib_cm_start_rx_drain(struct ipoib_dev_priv *priv)
{
{
	struct ib_send_wr *bad_wr;
	struct ipoib_cm_rx *p;
	struct ipoib_cm_rx *p;


	/* We only reserved 1 extra slot in CQ for drain WRs, so
	/* We only reserved 1 extra slot in CQ for drain WRs, so
@@ -227,7 +224,7 @@ static void ipoib_cm_start_rx_drain(struct ipoib_dev_priv *priv)
	 */
	 */
	p = list_entry(priv->cm.rx_flush_list.next, typeof(*p), list);
	p = list_entry(priv->cm.rx_flush_list.next, typeof(*p), list);
	ipoib_cm_rx_drain_wr.wr_id = IPOIB_CM_RX_DRAIN_WRID;
	ipoib_cm_rx_drain_wr.wr_id = IPOIB_CM_RX_DRAIN_WRID;
	if (ib_post_send(p->qp, &ipoib_cm_rx_drain_wr, &bad_wr))
	if (ib_post_send(p->qp, &ipoib_cm_rx_drain_wr, NULL))
		ipoib_warn(priv, "failed to post drain wr\n");
		ipoib_warn(priv, "failed to post drain wr\n");


	list_splice_init(&priv->cm.rx_flush_list, &priv->cm.rx_drain_list);
	list_splice_init(&priv->cm.rx_flush_list, &priv->cm.rx_drain_list);
@@ -699,13 +696,11 @@ static inline int post_send(struct ipoib_dev_priv *priv,
			    unsigned int wr_id,
			    unsigned int wr_id,
			    struct ipoib_tx_buf *tx_req)
			    struct ipoib_tx_buf *tx_req)
{
{
	struct ib_send_wr *bad_wr;

	ipoib_build_sge(priv, tx_req);
	ipoib_build_sge(priv, tx_req);


	priv->tx_wr.wr.wr_id	= wr_id | IPOIB_OP_CM;
	priv->tx_wr.wr.wr_id	= wr_id | IPOIB_OP_CM;


	return ib_post_send(tx->qp, &priv->tx_wr.wr, &bad_wr);
	return ib_post_send(tx->qp, &priv->tx_wr.wr, NULL);
}
}


void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_tx *tx)
void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_tx *tx)
+2 −4
Original line number Original line Diff line number Diff line
@@ -101,7 +101,6 @@ static void ipoib_ud_dma_unmap_rx(struct ipoib_dev_priv *priv,
static int ipoib_ib_post_receive(struct net_device *dev, int id)
static int ipoib_ib_post_receive(struct net_device *dev, int id)
{
{
	struct ipoib_dev_priv *priv = ipoib_priv(dev);
	struct ipoib_dev_priv *priv = ipoib_priv(dev);
	struct ib_recv_wr *bad_wr;
	int ret;
	int ret;


	priv->rx_wr.wr_id   = id | IPOIB_OP_RECV;
	priv->rx_wr.wr_id   = id | IPOIB_OP_RECV;
@@ -109,7 +108,7 @@ static int ipoib_ib_post_receive(struct net_device *dev, int id)
	priv->rx_sge[1].addr = priv->rx_ring[id].mapping[1];
	priv->rx_sge[1].addr = priv->rx_ring[id].mapping[1];




	ret = ib_post_recv(priv->qp, &priv->rx_wr, &bad_wr);
	ret = ib_post_recv(priv->qp, &priv->rx_wr, NULL);
	if (unlikely(ret)) {
	if (unlikely(ret)) {
		ipoib_warn(priv, "receive failed for buf %d (%d)\n", id, ret);
		ipoib_warn(priv, "receive failed for buf %d (%d)\n", id, ret);
		ipoib_ud_dma_unmap_rx(priv, priv->rx_ring[id].mapping);
		ipoib_ud_dma_unmap_rx(priv, priv->rx_ring[id].mapping);
@@ -542,7 +541,6 @@ static inline int post_send(struct ipoib_dev_priv *priv,
			    struct ipoib_tx_buf *tx_req,
			    struct ipoib_tx_buf *tx_req,
			    void *head, int hlen)
			    void *head, int hlen)
{
{
	struct ib_send_wr *bad_wr;
	struct sk_buff *skb = tx_req->skb;
	struct sk_buff *skb = tx_req->skb;


	ipoib_build_sge(priv, tx_req);
	ipoib_build_sge(priv, tx_req);
@@ -559,7 +557,7 @@ static inline int post_send(struct ipoib_dev_priv *priv,
	} else
	} else
		priv->tx_wr.wr.opcode	= IB_WR_SEND;
		priv->tx_wr.wr.opcode	= IB_WR_SEND;


	return ib_post_send(priv->qp, &priv->tx_wr.wr, &bad_wr);
	return ib_post_send(priv->qp, &priv->tx_wr.wr, NULL);
}
}


int ipoib_send(struct net_device *dev, struct sk_buff *skb,
int ipoib_send(struct net_device *dev, struct sk_buff *skb,