Lines Matching defs:agent

51 	struct ib_mad_agent_private *agent;
91 void ib_cancel_rmpp_recvs(struct ib_mad_agent_private *agent)
96 spin_lock_irqsave(&agent->lock, flags);
97 list_for_each_entry(rmpp_recv, &agent->rmpp_list, list) {
102 spin_unlock_irqrestore(&agent->lock, flags);
104 list_for_each_entry(rmpp_recv, &agent->rmpp_list, list) {
109 flush_workqueue(agent->qp_info->port_priv->wq);
112 &agent->rmpp_list, list) {
145 msg = ib_create_send_mad(&rmpp_recv->agent->agent, recv_wc->wc->src_qp,
159 static struct ib_mad_send_buf *alloc_response_msg(struct ib_mad_agent *agent,
166 ah = ib_create_ah_from_wc(agent->qp->pd, recv_wc->wc,
167 recv_wc->recv_buf.grh, agent->port_num);
172 msg = ib_create_send_mad(agent, recv_wc->wc->src_qp,
186 static void ack_ds_ack(struct ib_mad_agent_private *agent,
193 msg = alloc_response_msg(&agent->agent, recv_wc);
219 static void nack_recv(struct ib_mad_agent_private *agent,
226 msg = alloc_response_msg(&agent->agent, recv_wc);
255 spin_lock_irqsave(&rmpp_recv->agent->lock, flags);
257 spin_unlock_irqrestore(&rmpp_recv->agent->lock, flags);
262 spin_unlock_irqrestore(&rmpp_recv->agent->lock, flags);
265 nack_recv(rmpp_recv->agent, rmpp_wc, IB_MGMT_RMPP_STATUS_T2L);
276 spin_lock_irqsave(&rmpp_recv->agent->lock, flags);
278 spin_unlock_irqrestore(&rmpp_recv->agent->lock, flags);
282 spin_unlock_irqrestore(&rmpp_recv->agent->lock, flags);
287 create_rmpp_recv(struct ib_mad_agent_private *agent,
297 rmpp_recv->ah = ib_create_ah_from_wc(agent->agent.qp->pd,
300 agent->agent.port_num);
304 rmpp_recv->agent = agent;
334 find_rmpp_recv(struct ib_mad_agent_private *agent,
340 list_for_each_entry(rmpp_recv, &agent->rmpp_list, list) {
353 acquire_rmpp_recv(struct ib_mad_agent_private *agent,
359 spin_lock_irqsave(&agent->lock, flags);
360 rmpp_recv = find_rmpp_recv(agent, mad_recv_wc);
363 spin_unlock_irqrestore(&agent->lock, flags);
368 insert_rmpp_recv(struct ib_mad_agent_private *agent,
373 cur_rmpp_recv = find_rmpp_recv(agent, rmpp_recv->rmpp_wc);
375 list_add_tail(&rmpp_recv->list, &agent->rmpp_list);
405 static inline int window_size(struct ib_mad_agent_private *agent)
407 return max(agent->qp_info->recv_queue.max_active >> 3, 1);
442 bool opa = rdma_cap_opa_mad(rmpp_recv->agent->qp_info->port_priv->device,
443 rmpp_recv->agent->qp_info->port_priv->port_num);
474 queue_delayed_work(rmpp_recv->agent->qp_info->port_priv->wq,
480 continue_rmpp(struct ib_mad_agent_private *agent,
489 rmpp_recv = acquire_rmpp_recv(agent, mad_recv_wc);
521 rmpp_recv->newwin += window_size(agent);
539 start_rmpp(struct ib_mad_agent_private *agent,
545 rmpp_recv = create_rmpp_recv(agent, mad_recv_wc);
551 spin_lock_irqsave(&agent->lock, flags);
552 if (insert_rmpp_recv(agent, rmpp_recv)) {
553 spin_unlock_irqrestore(&agent->lock, flags);
556 return continue_rmpp(agent, mad_recv_wc);
562 spin_unlock_irqrestore(&agent->lock, flags);
565 spin_unlock_irqrestore(&agent->lock, flags);
567 queue_delayed_work(agent->qp_info->port_priv->wq,
570 rmpp_recv->newwin += window_size(agent);
609 static void abort_send(struct ib_mad_agent_private *agent,
616 spin_lock_irqsave(&agent->lock, flags);
617 mad_send_wr = ib_find_send_mad(agent, mad_recv_wc);
626 spin_unlock_irqrestore(&agent->lock, flags);
634 spin_unlock_irqrestore(&agent->lock, flags);
649 static void process_ds_ack(struct ib_mad_agent_private *agent,
654 rmpp_recv = find_rmpp_recv(agent, mad_recv_wc);
659 static void process_rmpp_ack(struct ib_mad_agent_private *agent,
669 abort_send(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BAD_STATUS);
670 nack_recv(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BAD_STATUS);
677 abort_send(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_W2S);
678 nack_recv(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_W2S);
682 spin_lock_irqsave(&agent->lock, flags);
683 mad_send_wr = ib_find_send_mad(agent, mad_recv_wc);
686 process_ds_ack(agent, mad_recv_wc, newwin);
692 spin_unlock_irqrestore(&agent->lock, flags);
693 ack_ds_ack(agent, mad_recv_wc);
703 spin_unlock_irqrestore(&agent->lock, flags);
704 abort_send(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_S2B);
705 nack_recv(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_S2B);
723 spin_unlock_irqrestore(&agent->lock, flags);
734 spin_unlock_irqrestore(&agent->lock, flags);
735 ack_ds_ack(agent, mad_recv_wc);
750 spin_unlock_irqrestore(&agent->lock, flags);
754 process_rmpp_data(struct ib_mad_agent_private *agent,
772 return start_rmpp(agent, mad_recv_wc);
778 return continue_rmpp(agent, mad_recv_wc);
781 nack_recv(agent, mad_recv_wc, rmpp_status);
786 static void process_rmpp_stop(struct ib_mad_agent_private *agent,
794 abort_send(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BAD_STATUS);
795 nack_recv(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BAD_STATUS);
797 abort_send(agent, mad_recv_wc, rmpp_mad->rmpp_hdr.rmpp_status);
800 static void process_rmpp_abort(struct ib_mad_agent_private *agent,
809 abort_send(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BAD_STATUS);
810 nack_recv(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BAD_STATUS);
812 abort_send(agent, mad_recv_wc, rmpp_mad->rmpp_hdr.rmpp_status);
816 ib_process_rmpp_recv_wc(struct ib_mad_agent_private *agent,
826 abort_send(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_UNV);
827 nack_recv(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_UNV);
833 return process_rmpp_data(agent, mad_recv_wc);
835 process_rmpp_ack(agent, mad_recv_wc);
838 process_rmpp_stop(agent, mad_recv_wc);
841 process_rmpp_abort(agent, mad_recv_wc);
844 abort_send(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BADT);
845 nack_recv(agent, mad_recv_wc, IB_MGMT_RMPP_STATUS_BADT);
855 struct ib_mad_agent_private *agent = mad_send_wr->mad_agent_priv;
865 spin_lock_irqsave(&agent->lock, flags);
866 list_for_each_entry(rmpp_recv, &agent->rmpp_list, list) {
881 spin_unlock_irqrestore(&agent->lock, flags);