• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/drivers/infiniband/core/

Lines Matching defs:mad_send_wr

552 static int send_next_seg(struct ib_mad_send_wr_private *mad_send_wr)
558 rmpp_mad = mad_send_wr->send_buf.mad;
560 rmpp_mad->rmpp_hdr.seg_num = cpu_to_be32(++mad_send_wr->seg_num);
562 if (mad_send_wr->seg_num == 1) {
564 paylen = mad_send_wr->send_buf.seg_count * IB_MGMT_RMPP_DATA -
565 mad_send_wr->pad;
568 if (mad_send_wr->seg_num == mad_send_wr->send_buf.seg_count) {
570 paylen = IB_MGMT_RMPP_DATA - mad_send_wr->pad;
575 timeout = mad_send_wr->send_buf.timeout_ms;
577 mad_send_wr->timeout = msecs_to_jiffies(2000);
579 return ib_send_mad(mad_send_wr);
585 struct ib_mad_send_wr_private *mad_send_wr;
590 mad_send_wr = ib_find_send_mad(agent, mad_recv_wc);
591 if (!mad_send_wr)
594 if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) ||
595 (!mad_send_wr->timeout) || (mad_send_wr->status != IB_WC_SUCCESS))
598 ib_mark_mad_done(mad_send_wr);
603 wc.send_buf = &mad_send_wr->send_buf;
604 ib_mad_complete_send_wr(mad_send_wr, &wc);
635 struct ib_mad_send_wr_private *mad_send_wr;
656 mad_send_wr = ib_find_send_mad(agent, mad_recv_wc);
657 if (!mad_send_wr) {
663 if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) &&
664 (mad_send_wr->timeout)) {
670 if ((mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) ||
671 (!mad_send_wr->timeout) || (mad_send_wr->status != IB_WC_SUCCESS))
674 if (seg_num > mad_send_wr->send_buf.seg_count ||
675 seg_num > mad_send_wr->newwin) {
682 if (newwin < mad_send_wr->newwin || seg_num < mad_send_wr->last_ack)
685 if (seg_num > mad_send_wr->last_ack) {
686 adjust_last_ack(mad_send_wr, seg_num);
687 mad_send_wr->retries = mad_send_wr->send_buf.retries;
689 mad_send_wr->newwin = newwin;
690 if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) {
692 if (!mad_send_wr->send_buf.timeout_ms) {
695 ib_mark_mad_done(mad_send_wr);
700 wc.send_buf = &mad_send_wr->send_buf;
701 ib_mad_complete_send_wr(mad_send_wr, &wc);
704 if (mad_send_wr->refcount == 1)
705 ib_reset_mad_timeout(mad_send_wr,
706 mad_send_wr->send_buf.timeout_ms);
710 } else if (mad_send_wr->refcount == 1 &&
711 mad_send_wr->seg_num < mad_send_wr->newwin &&
712 mad_send_wr->seg_num < mad_send_wr->send_buf.seg_count) {
714 ret = send_next_seg(mad_send_wr);
718 mad_send_wr->refcount++;
719 list_move_tail(&mad_send_wr->agent_list,
720 &mad_send_wr->mad_agent_priv->send_list);
826 static int init_newwin(struct ib_mad_send_wr_private *mad_send_wr)
828 struct ib_mad_agent_private *agent = mad_send_wr->mad_agent_priv;
829 struct ib_mad_hdr *mad_hdr = mad_send_wr->send_buf.mad;
846 if (ib_query_ah(mad_send_wr->send_buf.ah, &ah_attr))
859 int ib_send_rmpp_mad(struct ib_mad_send_wr_private *mad_send_wr)
864 rmpp_mad = mad_send_wr->send_buf.mad;
870 mad_send_wr->seg_num = 1;
874 mad_send_wr->newwin = init_newwin(mad_send_wr);
877 mad_send_wr->refcount += (mad_send_wr->timeout == 0);
878 ret = send_next_seg(mad_send_wr);
884 int ib_process_rmpp_send_wc(struct ib_mad_send_wr_private *mad_send_wr,
890 rmpp_mad = mad_send_wr->send_buf.mad;
899 mad_send_wr->status != IB_WC_SUCCESS)
902 if (!mad_send_wr->timeout)
905 if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count) {
906 mad_send_wr->timeout =
907 msecs_to_jiffies(mad_send_wr->send_buf.timeout_ms);
911 if (mad_send_wr->seg_num == mad_send_wr->newwin ||
912 mad_send_wr->seg_num == mad_send_wr->send_buf.seg_count)
915 ret = send_next_seg(mad_send_wr);
923 int ib_retry_rmpp(struct ib_mad_send_wr_private *mad_send_wr)
928 rmpp_mad = mad_send_wr->send_buf.mad;
933 if (mad_send_wr->last_ack == mad_send_wr->send_buf.seg_count)
936 mad_send_wr->seg_num = mad_send_wr->last_ack;
937 mad_send_wr->cur_seg = mad_send_wr->last_ack_seg;
939 ret = send_next_seg(mad_send_wr);