mad_agent_priv->agent.send_handler(&mad_agent_priv->agent, mad_send_wc); 
if (ret != IB_RMPP_RESULT_INTERNAL) mad_agent_priv->agent.send_handler(&mad_agent_priv->agent, mad_send_wc); 
static void ib_mad_complete_send_wr(struct ib_mad_send_wr_private *mad_send_wr,				    struct ib_mad_send_wc *mad_send_wc){	struct ib_mad_agent_private	*mad_agent_priv;	unsigned long			flags;	mad_agent_priv = mad_send_wr->mad_agent_priv;	spin_lock_irqsave(&mad_agent_priv->lock, flags);	if (mad_send_wc->status != IB_WC_SUCCESS &&	    mad_send_wr->status == IB_WC_SUCCESS) {		mad_send_wr->status = mad_send_wc->status;		mad_send_wr->refcount -= (mad_send_wr->timeout > 0);	}	if (--mad_send_wr->refcount > 0) {		if (mad_send_wr->refcount == 1 && mad_send_wr->timeout &&		    mad_send_wr->status == IB_WC_SUCCESS) {			wait_for_response(mad_send_wr);		}		spin_unlock_irqrestore(&mad_agent_priv->lock, flags);		return;	}	/* Remove send from MAD agent and notify client of completion */	list_del(&mad_send_wr->agent_list);	adjust_timeout(mad_agent_priv);	spin_unlock_irqrestore(&mad_agent_priv->lock, flags);	if (mad_send_wr->status != IB_WC_SUCCESS )		mad_send_wc->status = mad_send_wr->status;	mad_agent_priv->agent.send_handler(&mad_agent_priv->agent,					    mad_send_wc);	/* Release reference on agent taken when sending */	if (atomic_dec_and_test(&mad_agent_priv->refcount))		wake_up(&mad_agent_priv->wait);	kfree(mad_send_wr);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/fa619a77046bef30478697aba0553991033afb8e/mad.c/clean/drivers/infiniband/core/mad.c