Print this page
*** NO COMMENTS ***

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/inet/tcp/tcp_fusion.c
          +++ new/usr/src/uts/common/inet/tcp/tcp_fusion.c
↓ open down ↓ 769 lines elided ↑ open up ↑
 770  770          BUMP_MIB(&tcps->tcps_mib, tcpOutDataSegs);
 771  771          UPDATE_MIB(&tcps->tcps_mib, tcpOutDataBytes, send_size);
 772  772  
 773  773          BUMP_MIB(&tcps->tcps_mib, tcpInSegs);
 774  774          BUMP_MIB(&tcps->tcps_mib, tcpInDataInorderSegs);
 775  775          UPDATE_MIB(&tcps->tcps_mib, tcpInDataInorderBytes, send_size);
 776  776  
 777  777          BUMP_LOCAL(tcp->tcp_obsegs);
 778  778          BUMP_LOCAL(peer_tcp->tcp_ibsegs);
 779  779  
      780 +        DTRACE_TCPF5(send, void, NULL, conn_t *, NULL,
      781 +            __dtrace_tcpf_ipinfo_t *, tcp, tcp_t *, tcp, uint_t, send_size);
 780  782          DTRACE_PROBE2(tcp__fuse__output, tcp_t *, tcp, uint_t, send_size);
 781  783  
 782  784          if (!TCP_IS_DETACHED(peer_tcp)) {
 783  785                  /*
 784  786                   * Drain the peer's receive queue it has urgent data or if
 785  787                   * we're not flow-controlled.  There is no need for draining
 786  788                   * normal data when tcp_direct_sockfs is on because the peer
 787  789                   * will pull the data via tcp_fuse_rrw().
 788  790                   */
 789  791                  if (urgent || (!flow_stopped && !peer_tcp->tcp_direct_sockfs)) {
↓ open down ↓ 120 lines elided ↑ open up ↑
 910  912                          freemsg(mp);
 911  913                  } else {
 912  914                          putnext(q, mp);
 913  915                          TCP_STAT(tcps, tcp_fusion_putnext);
 914  916                  }
 915  917          }
 916  918  
 917  919          if (tcp->tcp_direct_sockfs && !sd_rd_eof)
 918  920                  (void) strrput_sig(q, B_TRUE);
 919  921  
      922 +        DTRACE_TCPF5(receive, void, NULL, conn_t *, NULL,
      923 +            __dtrace_tcpf_ipinfo_t *, tcp, tcp_t *, tcp, uint_t,
      924 +            tcp->tcp_rcv_cnt);
      925 +
 920  926          ASSERT(cnt == tcp->tcp_rcv_cnt);
 921  927          tcp->tcp_rcv_last_head = NULL;
 922  928          tcp->tcp_rcv_last_tail = NULL;
 923  929          tcp->tcp_rcv_cnt = 0;
 924  930          tcp->tcp_fuse_rcv_unread_cnt = 0;
 925  931          tcp->tcp_rwnd = q->q_hiwat;
 926  932  
 927  933          if (peer_tcp->tcp_flow_stopped && (TCP_UNSENT_BYTES(peer_tcp) <=
 928  934              peer_tcp->tcp_xmit_lowater)) {
 929  935                  tcp_clrqfull(peer_tcp);
↓ open down ↓ 89 lines elided ↑ open up ↑
1019 1025                          TCP_STAT(tcps, tcp_fusion_rrw_busy);
1020 1026                          return (EBUSY);
1021 1027                  }
1022 1028                  CONN_DEC_REF(peer_tcp->tcp_connp);
1023 1029          } else {
1024 1030                  mutex_enter(&peer_tcp->tcp_non_sq_lock);
1025 1031          }
1026 1032  
1027 1033          if ((mp = tcp->tcp_rcv_list) != NULL) {
1028 1034  
     1035 +                DTRACE_TCPF5(receive, void, NULL, conn_t *, NULL,
     1036 +                    __dtrace_tcpf_ipinfo_t *, tcp, tcp_t *, tcp, uint_t,
     1037 +                    tcp->tcp_rcv_cnt);
1029 1038                  DTRACE_PROBE3(tcp__fuse__rrw, tcp_t *, tcp,
1030 1039                      uint32_t, tcp->tcp_rcv_cnt, ssize_t, dp->d_uio.uio_resid);
1031 1040  
1032 1041                  tcp->tcp_rcv_list = NULL;
1033 1042                  TCP_STAT(tcps, tcp_fusion_rrw_msgcnt);
1034 1043  
1035 1044                  /*
1036 1045                   * At this point nothing should be left in tcp_rcv_list.
1037 1046                   * The only possible case where we would have a chain of
1038 1047                   * b_next-linked messages is urgent data, but we wouldn't
↓ open down ↓ 374 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX