ib_mark_req_done(mad_send_wr); 
ib_mark_mad_done(mad_send_wr); 
static void ib_mad_complete_recv(struct ib_mad_agent_private *mad_agent_priv,				 struct ib_mad_recv_wc *mad_recv_wc){	struct ib_mad_send_wr_private *mad_send_wr;	struct ib_mad_send_wc mad_send_wc;	unsigned long flags;	u64 tid;	INIT_LIST_HEAD(&mad_recv_wc->recv_buf.list);	/* Complete corresponding request */	if (response_mad(mad_recv_wc->recv_buf.mad)) {		tid = mad_recv_wc->recv_buf.mad->mad_hdr.tid;		spin_lock_irqsave(&mad_agent_priv->lock, flags);		mad_send_wr = find_send_req(mad_agent_priv, tid);		if (!mad_send_wr) {			spin_unlock_irqrestore(&mad_agent_priv->lock, flags);			ib_free_recv_mad(mad_recv_wc);			if (atomic_dec_and_test(&mad_agent_priv->refcount))				wake_up(&mad_agent_priv->wait);			return;		}		ib_mark_req_done(mad_send_wr);		spin_unlock_irqrestore(&mad_agent_priv->lock, flags);		/* Defined behavior is to complete response before request */		mad_recv_wc->wc->wr_id = mad_send_wr->wr_id;		mad_agent_priv->agent.recv_handler(&mad_agent_priv->agent,						   mad_recv_wc);		atomic_dec(&mad_agent_priv->refcount);		mad_send_wc.status = IB_WC_SUCCESS;		mad_send_wc.vendor_err = 0;		mad_send_wc.wr_id = mad_send_wr->wr_id;		ib_mad_complete_send_wr(mad_send_wr, &mad_send_wc);	} else {		mad_agent_priv->agent.recv_handler(&mad_agent_priv->agent,						   mad_recv_wc);		if (atomic_dec_and_test(&mad_agent_priv->refcount))			wake_up(&mad_agent_priv->wait);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fa619a77046bef30478697aba0553991033afb8e/mad.c/clean/drivers/infiniband/core/mad.c