diff options
Diffstat (limited to 'drivers/infiniband/sw/rxe/rxe_req.c')
| -rw-r--r-- | drivers/infiniband/sw/rxe/rxe_req.c | 5 | 
1 files changed, 4 insertions, 1 deletions
| diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c index f30eeba3f772..8be27238a86e 100644 --- a/drivers/infiniband/sw/rxe/rxe_req.c +++ b/drivers/infiniband/sw/rxe/rxe_req.c @@ -645,6 +645,9 @@ next_wqe:  		} else {  			goto exit;  		} +		if ((wqe->wr.send_flags & IB_SEND_SIGNALED) || +		    qp->sq_sig_type == IB_SIGNAL_ALL_WR) +			rxe_run_task(&qp->comp.task, 1);  		qp->req.wqe_index = next_index(qp->sq.queue,  						qp->req.wqe_index);  		goto next_wqe; @@ -709,6 +712,7 @@ next_wqe:  	if (fill_packet(qp, wqe, &pkt, skb, payload)) {  		pr_debug("qp#%d Error during fill packet\n", qp_num(qp)); +		kfree_skb(skb);  		goto err;  	} @@ -740,7 +744,6 @@ next_wqe:  	goto next_wqe;  err: -	kfree_skb(skb);  	wqe->status = IB_WC_LOC_PROT_ERR;  	wqe->state = wqe_state_error;  	__rxe_do_task(&qp->comp.task); |