| 89 | int |
| 90 | #else |
| 91 | static int |
| 92 | /* Ensure all templates are also added to the userland template list. */ |
| 93 | __attribute__ ((constructor)) |
| 94 | #endif |
| 95 | tcp_stats_init() |
| 96 | { |
| 97 | int err, lasterr; |
| 98 | |
| 99 | err = lasterr = 0; |
| 100 | |
| 101 | V_tcp_perconn_stats_dflt_tpl = stats_tpl_alloc("TCP_DEFAULT", 0); |
| 102 | if (V_tcp_perconn_stats_dflt_tpl < 0) |
| 103 | return (-V_tcp_perconn_stats_dflt_tpl); |
| 104 | |
| 105 | struct voistatspec vss_sum[] = { |
| 106 | STATS_VSS_SUM(), |
| 107 | }; |
| 108 | err |= stats_tpl_add_voistats(V_tcp_perconn_stats_dflt_tpl, |
| 109 | VOI_TCP_TXPB, "TCP_TXPB", VSD_DTYPE_INT_U64, |
| 110 | NVSS(vss_sum), vss_sum, 0); |
| 111 | lasterr = err ? err : lasterr; |
| 112 | err |= stats_tpl_add_voistats(V_tcp_perconn_stats_dflt_tpl, |
| 113 | VOI_TCP_RETXPB, "TCP_RETXPB", VSD_DTYPE_INT_U32, |
| 114 | NVSS(vss_sum), vss_sum, 0); |
| 115 | lasterr = err ? err : lasterr; |
| 116 | |
| 117 | struct voistatspec vss_max[] = { |
| 118 | STATS_VSS_MAX(), |
| 119 | }; |
| 120 | err |= stats_tpl_add_voistats(V_tcp_perconn_stats_dflt_tpl, |
| 121 | VOI_TCP_FRWIN, "TCP_FRWIN", VSD_DTYPE_INT_ULONG, |
| 122 | NVSS(vss_max), vss_max, 0); |
| 123 | lasterr = err ? err : lasterr; |
| 124 | err |= stats_tpl_add_voistats(V_tcp_perconn_stats_dflt_tpl, |
| 125 | VOI_TCP_LCWIN, "TCP_LCWIN", VSD_DTYPE_INT_ULONG, |
| 126 | NVSS(vss_max), vss_max, 0); |
| 127 | lasterr = err ? err : lasterr; |
| 128 | |
| 129 | struct voistatspec vss_rtt[] = { |
| 130 | STATS_VSS_MAX(), |
| 131 | STATS_VSS_MIN(), |
| 132 | STATS_VSS_TDGSTCLUST32(20, 4), |
| 133 | }; |
| 134 | err |= stats_tpl_add_voistats(V_tcp_perconn_stats_dflt_tpl, |
| 135 | VOI_TCP_RTT, "TCP_RTT", VSD_DTYPE_INT_U32, |
| 136 | NVSS(vss_rtt), vss_rtt, 0); |
| 137 | lasterr = err ? err : lasterr; |
| 138 | |
| 139 | struct voistatspec vss_congsig[] = { |
| 140 | STATS_VSS_DVHIST32_USR(HBKTS(DVBKT(CC_ECN), DVBKT(CC_RTO), |
| 141 | DVBKT(CC_RTO_ERR), DVBKT(CC_NDUPACK)), 0) |
| 142 | }; |
| 143 | err |= stats_tpl_add_voistats(V_tcp_perconn_stats_dflt_tpl, |
| 144 | VOI_TCP_CSIG, "TCP_CSIG", VSD_DTYPE_INT_U32, |
| 145 | NVSS(vss_congsig), vss_congsig, 0); |
| 146 | lasterr = err ? err : lasterr; |
| 147 | |
| 148 | struct voistatspec vss_gput[] = { |
no test coverage detected