• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/infiniband/core/

Lines Matching defs:mad_send_wr

561 static int send_next_seg(struct ib_mad_send_wr_private *mad_send_wr)
567 rmpp_mad = mad_send_wr->send_buf.mad;
569 rmpp_mad->rmpp_hdr.seg_num = cpu_to_be32(++mad_send_wr->seg_num);
571 if (mad_send_wr->seg_num == 1) {
573 paylen = mad_send_wr->send_buf.seg_count * IB_MGMT_RMPP_DATA -
574 mad_send_wr->pad;
577 if (mad_send_wr->seg_num == mad_send_wr->send_buf.seg_count) {
579 paylen = IB_MGMT_RMPP_DATA - mad_send_wr->pad;
584 timeout = mad_send_wr->send_buf.timeout_ms;
586 mad_send_wr->timeout = msecs_to_jiffies(2000);
588 return ib_send_mad(mad_send_wr);
594 struct ib_mad_send_wr_private *mad_send_wr;
599 mad_send_wr = ib_find_send_mad(agent, mad_recv_wc);
600 if (!mad_send_wr)
603 if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) ||
604 (!mad_send_wr->timeout) || (mad_send_wr->status != IB_WC_SUCCESS))
607 ib_mark_mad_done(mad_send_wr);
612 wc.send_buf = &mad_send_wr->send_buf;
613 ib_mad_complete_send_wr(mad_send_wr, &wc);
644 struct ib_mad_send_wr_private *mad_send_wr;
665 mad_send_wr = ib_find_send_mad(agent, mad_recv_wc);
666 if (!mad_send_wr) {
672 if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) &&
673 (mad_send_wr->timeout)) {
679 if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) ||
680 (!mad_send_wr->timeout) || (mad_send_wr->status != IB_WC_SUCCESS))
683 if (seg_num > mad_send_wr->send_buf.seg_count ||
684 seg_num > mad_send_wr->newwin) {
691 if (newwin < mad_send_wr->newwin || seg_num < mad_send_wr->last_ack)
694 if (seg_num > mad_send_wr->last_ack) {
695 adjust_last_ack(mad_send_wr, seg_num);
696 mad_send_wr->retries_left = mad_send_wr->max_retries;
698 mad_send_wr->newwin = newwin;
699 if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) {
701 if (!mad_send_wr->send_buf.timeout_ms) {
704 ib_mark_mad_done(mad_send_wr);
709 wc.send_buf = &mad_send_wr->send_buf;
710 ib_mad_complete_send_wr(mad_send_wr, &wc);
713 if (mad_send_wr->refcount == 1)
714 ib_reset_mad_timeout(mad_send_wr,
715 mad_send_wr->send_buf.timeout_ms);
719 } else if (mad_send_wr->refcount == 1 &&
720 mad_send_wr->seg_num < mad_send_wr->newwin &&
721 mad_send_wr->seg_num < mad_send_wr->send_buf.seg_count) {
723 ret = send_next_seg(mad_send_wr);
727 mad_send_wr->refcount++;
728 list_move_tail(&mad_send_wr->agent_list,
729 &mad_send_wr->mad_agent_priv->send_list);
835 static int init_newwin(struct ib_mad_send_wr_private *mad_send_wr)
837 struct ib_mad_agent_private *agent = mad_send_wr->mad_agent_priv;
838 struct ib_mad_hdr *mad_hdr = mad_send_wr->send_buf.mad;
855 if (ib_query_ah(mad_send_wr->send_buf.ah, &ah_attr))
868 int ib_send_rmpp_mad(struct ib_mad_send_wr_private *mad_send_wr)
873 rmpp_mad = mad_send_wr->send_buf.mad;
879 mad_send_wr->seg_num = 1;
883 mad_send_wr->newwin = init_newwin(mad_send_wr);
886 mad_send_wr->refcount += (mad_send_wr->timeout == 0);
887 ret = send_next_seg(mad_send_wr);
893 int ib_process_rmpp_send_wc(struct ib_mad_send_wr_private *mad_send_wr,
899 rmpp_mad = mad_send_wr->send_buf.mad;
908 mad_send_wr->status != IB_WC_SUCCESS)
911 if (!mad_send_wr->timeout)
914 if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) {
915 mad_send_wr->timeout =
916 msecs_to_jiffies(mad_send_wr->send_buf.timeout_ms);
920 if (mad_send_wr->seg_num == mad_send_wr->newwin ||
921 mad_send_wr->seg_num == mad_send_wr->send_buf.seg_count)
924 ret = send_next_seg(mad_send_wr);
932 int ib_retry_rmpp(struct ib_mad_send_wr_private *mad_send_wr)
937 rmpp_mad = mad_send_wr->send_buf.mad;
942 if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count)
945 mad_send_wr->seg_num = mad_send_wr->last_ack;
946 mad_send_wr->cur_seg = mad_send_wr->last_ack_seg;
948 ret = send_next_seg(mad_send_wr);