rmpp_mad = (struct ib_rmpp_mad *)mad_send_wr->send_wr.wr.ud.mad_hdr; 
rmpp_mad = mad_send_wr->send_buf.mad; 
int ib_process_rmpp_send_wc(struct ib_mad_send_wr_private *mad_send_wr,			    struct ib_mad_send_wc *mad_send_wc){	struct ib_rmpp_mad *rmpp_mad;	struct ib_mad_send_buf *msg;	int ret;	rmpp_mad = (struct ib_rmpp_mad *)mad_send_wr->send_wr.wr.ud.mad_hdr;	if (!(ib_get_rmpp_flags(&rmpp_mad->rmpp_hdr) &	      IB_MGMT_RMPP_FLAG_ACTIVE))		return IB_RMPP_RESULT_UNHANDLED; /* RMPP not active */	if (rmpp_mad->rmpp_hdr.rmpp_type != IB_MGMT_RMPP_TYPE_DATA) {		msg = (struct ib_mad_send_buf *) (unsigned long)		      mad_send_wc->wr_id;		if (rmpp_mad->rmpp_hdr.rmpp_type == IB_MGMT_RMPP_TYPE_ACK)			ib_free_send_mad(msg);		else			free_msg(msg);		return IB_RMPP_RESULT_INTERNAL;	 /* ACK, STOP, or ABORT */	}	if (mad_send_wc->status != IB_WC_SUCCESS ||	    mad_send_wr->status != IB_WC_SUCCESS)		return IB_RMPP_RESULT_PROCESSED; /* Canceled or send error */	if (!mad_send_wr->timeout)		return IB_RMPP_RESULT_PROCESSED; /* Response received */	if (mad_send_wr->last_ack == mad_send_wr->total_seg) {		mad_send_wr->timeout =			msecs_to_jiffies(mad_send_wr->send_wr.wr.ud.timeout_ms);		return IB_RMPP_RESULT_PROCESSED; /* Send done */	}	if (mad_send_wr->seg_num > mad_send_wr->newwin ||	    mad_send_wr->seg_num > mad_send_wr->total_seg)		return IB_RMPP_RESULT_PROCESSED; /* Wait for ACK */	ret = send_next_seg(mad_send_wr);	if (ret) {		mad_send_wc->status = IB_WC_GENERAL_ERR;		return IB_RMPP_RESULT_PROCESSED;	}	return IB_RMPP_RESULT_CONSUMED;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/34816ad98efe4d47ffd858a0345321f9d85d9420/mad_rmpp.c/buggy/drivers/infiniband/core/mad_rmpp.c