libosmocore 1.9.0.196-9975
Osmocom core library
Statistics reporting

This module implements periodic reporting of statistics / counters. More...

Files

file  stats.h
 
file  stats.c
 
file  stats_statsd.c
 
file  stats_tcp.c
 

Data Structures

struct  osmo_stats_reporter
 One statistics reporter instance. More...
 
struct  osmo_stats_config
 
struct  stats_tcp_entry
 

Macros

#define TRACE(probe)
 
#define TRACE_ENABLED(probe)   (0)
 
#define STATS_DEFAULT_INTERVAL   5 /* secs */
 
#define STATS_DEFAULT_BUFLEN   256
 

Enumerations

enum  osmo_stats_class {
  OSMO_STATS_CLASS_UNKNOWN ,
  OSMO_STATS_CLASS_GLOBAL ,
  OSMO_STATS_CLASS_PEER ,
  OSMO_STATS_CLASS_SUBSCRIBER
}
 Statistics Class definitions. More...
 
enum  osmo_stats_reporter_type {
  OSMO_STATS_REPORTER_LOG ,
  OSMO_STATS_REPORTER_STATSD
}
 Statistics Reporter Type. More...
 
enum  {
  STATS_TCP_UNACKED ,
  STATS_TCP_LOST ,
  STATS_TCP_RETRANS ,
  STATS_TCP_RTT ,
  STATS_TCP_RCV_RTT ,
  STATS_TCP_NOTSENT_BYTES ,
  STATS_TCP_RWND_LIMITED ,
  STATS_TCP_SNDBUF_LIMITED ,
  STATS_TCP_REORD_SEEN
}
 

Functions

void vty_out_stat_item_group2 (struct vty *vty, const char *prefix, struct osmo_stat_item_group *statg, bool skip_zero)
 
void vty_out_stat_item_group (struct vty *vty, const char *prefix, struct osmo_stat_item_group *statg)
 
void osmo_stats_init (void *ctx)
 Initialize the stats reporting module; call this once in your program. More...
 
int osmo_stats_report (void)
 
int osmo_stats_set_interval (int interval)
 Set the reporting interval (common for all reporters) More...
 
struct osmo_stats_reporterosmo_stats_reporter_alloc (enum osmo_stats_reporter_type type, const char *name)
 
void osmo_stats_reporter_free (struct osmo_stats_reporter *srep)
 Destroy a given stats_reporter. More...
 
struct osmo_stats_reporterosmo_stats_reporter_find (enum osmo_stats_reporter_type type, const char *name)
 Find a stats_reporter of given type and name. More...
 
int osmo_stats_reporter_set_remote_addr (struct osmo_stats_reporter *srep, const char *addr)
 
int osmo_stats_reporter_set_remote_port (struct osmo_stats_reporter *srep, int port)
 
int osmo_stats_reporter_set_local_addr (struct osmo_stats_reporter *srep, const char *addr)
 
int osmo_stats_reporter_set_mtu (struct osmo_stats_reporter *srep, int mtu)
 
int osmo_stats_reporter_set_max_class (struct osmo_stats_reporter *srep, enum osmo_stats_class class_id)
 
int osmo_stats_reporter_set_name_prefix (struct osmo_stats_reporter *srep, const char *prefix)
 Set the name prefix of a given stats_reporter. More...
 
int osmo_stats_reporter_enable (struct osmo_stats_reporter *srep)
 Enable the given stats_reporter. More...
 
int osmo_stats_reporter_disable (struct osmo_stats_reporter *srep)
 Disable the given stats_reporter. More...
 
int osmo_stats_reporter_set_flush_period (struct osmo_stats_reporter *srep, unsigned int period)
 Set the regular flush period for a given stats_reporter. More...
 
struct osmo_stats_reporterosmo_stats_reporter_create_log (const char *name)
 Create a stats_reporter that logs via libosmocore logging. More...
 
struct osmo_stats_reporterosmo_stats_reporter_create_statsd (const char *name)
 Create a stats_reporter reporting to statsd. More...
 
int osmo_stats_reporter_send (struct osmo_stats_reporter *srep, const char *data, int data_len)
 
int osmo_stats_reporter_send_buffer (struct osmo_stats_reporter *srep)
 
int osmo_stats_reporter_udp_open (struct osmo_stats_reporter *srep)
 
int osmo_stats_reporter_udp_close (struct osmo_stats_reporter *srep)
 
 LLIST_HEAD (osmo_stats_reporter_list)
 
static int osmo_stats_reporter_log_send_counter (struct osmo_stats_reporter *srep, const struct rate_ctr_group *ctrg, const struct rate_ctr_desc *desc, int64_t value, int64_t delta)
 
static int osmo_stats_reporter_log_send_item (struct osmo_stats_reporter *srep, const struct osmo_stat_item_group *statg, const struct osmo_stat_item_desc *desc, int64_t value)
 
static int update_srep_config (struct osmo_stats_reporter *srep)
 
static int osmo_stats_timer_cb (struct osmo_fd *ofd, unsigned int what)
 
static int start_timer (void)
 
static int osmo_stats_reporter_log_send (struct osmo_stats_reporter *srep, const char *type, const char *name1, unsigned int index1, const char *name2, int value, const char *unit)
 
static int osmo_stats_reporter_check_config (struct osmo_stats_reporter *srep, unsigned int index, int class_id)
 
static int osmo_stats_reporter_send_counter (struct osmo_stats_reporter *srep, const struct rate_ctr_group *ctrg, const struct rate_ctr_desc *desc, int64_t value, int64_t delta)
 
static int rate_ctr_handler (struct rate_ctr_group *ctrg, struct rate_ctr *ctr, const struct rate_ctr_desc *desc, void *sctx_)
 
static int rate_ctr_group_handler (struct rate_ctr_group *ctrg, void *sctx_)
 
static int osmo_stats_reporter_send_item (struct osmo_stats_reporter *srep, const struct osmo_stat_item_group *statg, const struct osmo_stat_item_desc *desc, int32_t value)
 
static int osmo_stat_item_handler (struct osmo_stat_item_group *statg, struct osmo_stat_item *item, void *sctx_)
 
static int osmo_stat_item_group_handler (struct osmo_stat_item_group *statg, void *sctx_)
 
static int handle_counter (struct osmo_counter *counter, void *sctx_)
 
static void flush_all_reporters (void)
 
static int osmo_stats_reporter_statsd_send_counter (struct osmo_stats_reporter *srep, const struct rate_ctr_group *ctrg, const struct rate_ctr_desc *desc, int64_t value, int64_t delta)
 
static int osmo_stats_reporter_statsd_send_item (struct osmo_stats_reporter *srep, const struct osmo_stat_item_group *statg, const struct osmo_stat_item_desc *desc, int64_t value)
 
static void osmo_stats_reporter_sanitize_name (char *buf)
 Replace all illegal ':' in the stats name, but not when used as value seperator. More...
 
static int osmo_stats_reporter_statsd_send (struct osmo_stats_reporter *srep, const char *name1, const char *index1, const char *name2, int64_t value, const char *unit)
 
static LLIST_HEAD (stats_tcp)
 
static void fill_stats (struct stats_tcp_entry *stats_tcp_entry)
 
static bool is_tcp (const struct osmo_fd *fd)
 
int osmo_stats_tcp_osmo_fd_register (const struct osmo_fd *fd, const char *name)
 Register an osmo_fd for TCP stats monitoring. More...
 
static void next_stats_tcp_entry (void)
 
int osmo_stats_tcp_osmo_fd_unregister (const struct osmo_fd *fd)
 Register an osmo_fd for TCP stats monitoring. More...
 
static void stats_tcp_poll_timer_cb (void *data)
 
int osmo_stats_tcp_set_interval (int interval)
 Set the polling interval (common for all sockets) More...
 
static __attribute__ ((constructor))
 

Variables

struct llist_head osmo_stats_reporter_list
 
struct osmo_stats_configosmo_stats_config
 
static void * osmo_stats_ctx = NULL
 
static int is_initialised = 0
 
static struct osmo_stats_config s_stats_config
 
struct osmo_stats_configosmo_stats_config = &s_stats_config
 
static struct osmo_fd osmo_stats_timer = { .fd = -1 }
 
static struct osmo_tcp_stats_config s_tcp_stats_config
 
struct osmo_tcp_stats_configosmo_tcp_stats_config = &s_tcp_stats_config
 
static struct osmo_timer_list stats_tcp_poll_timer
 
static struct stats_tcp_entrystats_tcp_entry_cur
 
pthread_mutex_t stats_tcp_lock
 
struct llist_head stats_tcp_entry::entry
 
const struct osmo_fdstats_tcp_entry::fd
 
struct osmo_stat_item_groupstats_tcp_entry::stats_tcp
 
const char * stats_tcp_entry::name
 
static struct osmo_stat_item_desc stats_tcp_item_desc []
 
static struct osmo_stat_item_group_desc stats_tcp_desc
 

Detailed Description

This module implements periodic reporting of statistics / counters.

It supports the notion of multiple osmo_stats_reporter objects which independently of each other can report statistics at different configurable intervals to different destinations.

In order to use this facility, you have to call osmo_stats_init() once at application start-up and then create one or more osmo_stats_reporter, either using the direct API functions or by using the optional VTY bindings:

You can either use the above API functions directly to create osmo_stats_reporter instances, or you can use the VTY support contained in libosmovty. See the "stats" configuration node installed by osmo_stats_vty_Add_cmds().

An osmo_stats_reporter reports statistics on all of the following libosmocore internal counter/statistics objects:

You do not need to do anything in particular to expose a given counter or stat_item, they are all exported automatically via any osmo_stats_reporter. If you have multiple osmo_stats_reporter, they will each report all counters/stat_items.

Macro Definition Documentation

◆ STATS_DEFAULT_BUFLEN

#define STATS_DEFAULT_BUFLEN   256

◆ STATS_DEFAULT_INTERVAL

#define STATS_DEFAULT_INTERVAL   5 /* secs */

◆ TRACE

#define TRACE (   probe)

◆ TRACE_ENABLED

#define TRACE_ENABLED (   probe)    (0)

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
STATS_TCP_UNACKED 
STATS_TCP_LOST 
STATS_TCP_RETRANS 
STATS_TCP_RTT 
STATS_TCP_RCV_RTT 
STATS_TCP_NOTSENT_BYTES 
STATS_TCP_RWND_LIMITED 
STATS_TCP_SNDBUF_LIMITED 
STATS_TCP_REORD_SEEN 

◆ osmo_stats_class

Statistics Class definitions.

Enumerator
OSMO_STATS_CLASS_UNKNOWN 

unknown class

OSMO_STATS_CLASS_GLOBAL 

global counter/stat_item

OSMO_STATS_CLASS_PEER 

peer in a communications link

OSMO_STATS_CLASS_SUBSCRIBER 

subscriber

◆ osmo_stats_reporter_type

Statistics Reporter Type.

Enumerator
OSMO_STATS_REPORTER_LOG 

libosmocore logging

OSMO_STATS_REPORTER_STATSD 

statsd backend

Function Documentation

◆ __attribute__()

◆ fill_stats()

◆ flush_all_reporters()

◆ handle_counter()

◆ is_tcp()

static bool is_tcp ( const struct osmo_fd fd)
static

References osmo_fd::fd.

Referenced by osmo_stats_tcp_osmo_fd_register().

◆ LLIST_HEAD() [1/2]

LLIST_HEAD ( osmo_stats_reporter_list  )

◆ LLIST_HEAD() [2/2]

static LLIST_HEAD ( stats_tcp  )
static

◆ next_stats_tcp_entry()

◆ osmo_stat_item_group_handler()

static int osmo_stat_item_group_handler ( struct osmo_stat_item_group statg,
void *  sctx_ 
)
static

◆ osmo_stat_item_handler()

◆ osmo_stats_init()

void osmo_stats_init ( void *  ctx)

Initialize the stats reporting module; call this once in your program.

Parameters
[in]ctxTalloc context from which stats related memory is allocated

References osmo_tcp_stats_config::interval, is_initialised, osmo_stats_ctx, osmo_stats_tcp_set_interval(), and start_timer().

◆ osmo_stats_report()

◆ osmo_stats_reporter_alloc()

◆ osmo_stats_reporter_check_config()

static int osmo_stats_reporter_check_config ( struct osmo_stats_reporter srep,
unsigned int  index,
int  class_id 
)
static

◆ osmo_stats_reporter_create_log()

struct osmo_stats_reporter * osmo_stats_reporter_create_log ( const char *  name)

Create a stats_reporter that logs via libosmocore logging.

A stats_reporter created via this function will simply print the statistics via the libosmocore logging framework, using DLSTATS subsystem and LOGL_INFO priority. The configuration of the libosmocore log targets define where this information will end up (ignored, text file, stderr, syslog, ...).

Parameters
[in]nameName of the to-be-created stats_reporter
Returns
stats_reporter on success; NULL on error

References osmo_stats_reporter::have_net_config, name, osmo_stats_reporter_alloc(), OSMO_STATS_REPORTER_LOG, osmo_stats_reporter_log_send_counter(), osmo_stats_reporter_log_send_item(), osmo_stats_reporter::send_counter, and osmo_stats_reporter::send_item.

◆ osmo_stats_reporter_create_statsd()

struct osmo_stats_reporter * osmo_stats_reporter_create_statsd ( const char *  name)

Create a stats_reporter reporting to statsd.

This creates a stats_reporter instance which reports the related statistics data to statsd.

Parameters
[in]nameName of the to-be-created stats_reporter
Returns
stats_reporter on success; NULL on error

References osmo_stats_reporter::close, osmo_stats_reporter::have_net_config, name, osmo_stats_reporter::open, osmo_stats_reporter_alloc(), OSMO_STATS_REPORTER_STATSD, osmo_stats_reporter_statsd_send_counter(), osmo_stats_reporter_statsd_send_item(), osmo_stats_reporter_udp_close(), osmo_stats_reporter_udp_open(), osmo_stats_reporter::send_counter, and osmo_stats_reporter::send_item.

◆ osmo_stats_reporter_disable()

int osmo_stats_reporter_disable ( struct osmo_stats_reporter srep)

Disable the given stats_reporter.

Parameters
[in]srepstats_reporter who is to be disabled
Returns
0 on success; negative on error

References osmo_stats_reporter::enabled, and update_srep_config().

Referenced by osmo_stats_reporter_free().

◆ osmo_stats_reporter_enable()

int osmo_stats_reporter_enable ( struct osmo_stats_reporter srep)

Enable the given stats_reporter.

Parameters
[in]srepstats_reporter who is to be enabled
Returns
0 on success; negative on error

References osmo_stats_reporter::enabled, and update_srep_config().

◆ osmo_stats_reporter_find()

struct osmo_stats_reporter * osmo_stats_reporter_find ( enum osmo_stats_reporter_type  type,
const char *  name 
)

Find a stats_reporter of given type and name.

Parameters
[in]typeType of stats_reporter to find
[in]nameName of stats_reporter to find
Returns
stats_reporter matching type and name; NULL otherwise

References list, llist_for_each_entry, name, osmo_stats_reporter::name, osmo_stats_reporter_list, type, and osmo_stats_reporter::type.

◆ osmo_stats_reporter_free()

void osmo_stats_reporter_free ( struct osmo_stats_reporter srep)

Destroy a given stats_reporter.

Takes care of first disabling it.

Parameters
[in]srepstats_reporter that shall be disabled + destroyed

References osmo_stats_reporter::list, llist_del(), and osmo_stats_reporter_disable().

◆ osmo_stats_reporter_log_send()

static int osmo_stats_reporter_log_send ( struct osmo_stats_reporter srep,
const char *  type,
const char *  name1,
unsigned int  index1,
const char *  name2,
int  value,
const char *  unit 
)
static

◆ osmo_stats_reporter_log_send_counter()

static int osmo_stats_reporter_log_send_counter ( struct osmo_stats_reporter srep,
const struct rate_ctr_group ctrg,
const struct rate_ctr_desc desc,
int64_t  value,
int64_t  delta 
)
static

◆ osmo_stats_reporter_log_send_item()

static int osmo_stats_reporter_log_send_item ( struct osmo_stats_reporter srep,
const struct osmo_stat_item_group statg,
const struct osmo_stat_item_desc desc,
int64_t  value 
)
static

◆ osmo_stats_reporter_sanitize_name()

static void osmo_stats_reporter_sanitize_name ( char *  buf)
static

Replace all illegal ':' in the stats name, but not when used as value seperator.

':' is used as seperator between the name and the value in the statsd protocol.

Parameters
[in,out]bufis a null terminated string containing name, value, unit.

Referenced by osmo_stats_reporter_statsd_send().

◆ osmo_stats_reporter_send()

int osmo_stats_reporter_send ( struct osmo_stats_reporter srep,
const char *  data,
int  data_len 
)

◆ osmo_stats_reporter_send_buffer()

int osmo_stats_reporter_send_buffer ( struct osmo_stats_reporter srep)

◆ osmo_stats_reporter_send_counter()

static int osmo_stats_reporter_send_counter ( struct osmo_stats_reporter srep,
const struct rate_ctr_group ctrg,
const struct rate_ctr_desc desc,
int64_t  value,
int64_t  delta 
)
static

◆ osmo_stats_reporter_send_item()

static int osmo_stats_reporter_send_item ( struct osmo_stats_reporter srep,
const struct osmo_stat_item_group statg,
const struct osmo_stat_item_desc desc,
int32_t  value 
)
static

◆ osmo_stats_reporter_set_flush_period()

int osmo_stats_reporter_set_flush_period ( struct osmo_stats_reporter srep,
unsigned int  period 
)

Set the regular flush period for a given stats_reporter.

Send all stats even if they have not changed (i.e. force the flush) every N-th reporting interval. Set to 0 to disable regular flush, set to 1 to flush every time, set to 2 to flush every 2nd time, etc.

Parameters
[in]srepstats_reporter to set flush period for
[in]periodReporting interval in seconds
Returns
0 on success; negative on error

References osmo_stats_reporter::flush_period, osmo_stats_reporter::flush_period_counter, and osmo_stats_reporter::force_single_flush.

◆ osmo_stats_reporter_set_local_addr()

int osmo_stats_reporter_set_local_addr ( struct osmo_stats_reporter srep,
const char *  addr 
)

◆ osmo_stats_reporter_set_max_class()

int osmo_stats_reporter_set_max_class ( struct osmo_stats_reporter srep,
enum osmo_stats_class  class_id 
)

◆ osmo_stats_reporter_set_mtu()

int osmo_stats_reporter_set_mtu ( struct osmo_stats_reporter srep,
int  mtu 
)

◆ osmo_stats_reporter_set_name_prefix()

int osmo_stats_reporter_set_name_prefix ( struct osmo_stats_reporter srep,
const char *  prefix 
)

Set the name prefix of a given stats_reporter.

Parameters
[in]srepstats_reporter whose name prefix is to be set
[in]prefixName prefix to pre-pend for any reported value
Returns
0 on success; negative on error

References osmo_stats_reporter::name_prefix, and update_srep_config().

◆ osmo_stats_reporter_set_remote_addr()

int osmo_stats_reporter_set_remote_addr ( struct osmo_stats_reporter srep,
const char *  addr 
)

◆ osmo_stats_reporter_set_remote_port()

int osmo_stats_reporter_set_remote_port ( struct osmo_stats_reporter srep,
int  port 
)

◆ osmo_stats_reporter_statsd_send()

static int osmo_stats_reporter_statsd_send ( struct osmo_stats_reporter srep,
const char *  name1,
const char *  index1,
const char *  name2,
int64_t  value,
const char *  unit 
)
static

◆ osmo_stats_reporter_statsd_send_counter()

static int osmo_stats_reporter_statsd_send_counter ( struct osmo_stats_reporter srep,
const struct rate_ctr_group ctrg,
const struct rate_ctr_desc desc,
int64_t  value,
int64_t  delta 
)
static

◆ osmo_stats_reporter_statsd_send_item()

static int osmo_stats_reporter_statsd_send_item ( struct osmo_stats_reporter srep,
const struct osmo_stat_item_group statg,
const struct osmo_stat_item_desc desc,
int64_t  value 
)
static

◆ osmo_stats_reporter_udp_close()

int osmo_stats_reporter_udp_close ( struct osmo_stats_reporter srep)

◆ osmo_stats_reporter_udp_open()

int osmo_stats_reporter_udp_open ( struct osmo_stats_reporter srep)

◆ osmo_stats_set_interval()

int osmo_stats_set_interval ( int  interval)

Set the reporting interval (common for all reporters)

Parameters
[in]intervalReporting interval in seconds
Returns
0 on success; negative on error

References osmo_stats_config::interval, is_initialised, and start_timer().

◆ osmo_stats_tcp_osmo_fd_register()

int osmo_stats_tcp_osmo_fd_register ( const struct osmo_fd fd,
const char *  name 
)

Register an osmo_fd for TCP stats monitoring.

Parameters
[in]fdosmocom file descriptor to be registered.
[in]humanreadbla name that is used as prefix for the related stats item.
Returns
0 on success; negative in case of error.

References stats_tcp_entry::entry, stats_tcp_entry::fd, is_tcp(), llist_add_tail(), name, stats_tcp_entry::name, OSMO_ASSERT, osmo_stats_tcp_osmo_fd_unregister(), OTC_GLOBAL, stats_tcp_entry::stats_tcp, and stats_tcp_lock.

◆ osmo_stats_tcp_osmo_fd_unregister()

int osmo_stats_tcp_osmo_fd_unregister ( const struct osmo_fd fd)

Register an osmo_fd for TCP stats monitoring.

Parameters
[in]fdosmocom file descriptor to be unregistered.
Returns
0 on success; negative in case of error.

References stats_tcp_entry::entry, osmo_fd::fd, stats_tcp_entry::fd, llist_count(), llist_del(), llist_for_each_entry, next_stats_tcp_entry(), osmo_stat_item_group_free(), stats_tcp_entry::stats_tcp, stats_tcp_entry_cur, and stats_tcp_lock.

Referenced by osmo_stats_tcp_osmo_fd_register().

◆ osmo_stats_tcp_set_interval()

int osmo_stats_tcp_set_interval ( int  interval)

Set the polling interval (common for all sockets)

Parameters
[in]intervalPoll interval in seconds
Returns
0 on success; negative on error

References osmo_tcp_stats_config::interval, osmo_timer_schedule(), and stats_tcp_poll_timer.

Referenced by osmo_stats_init().

◆ osmo_stats_timer_cb()

static int osmo_stats_timer_cb ( struct osmo_fd ofd,
unsigned int  what 
)
static

◆ rate_ctr_group_handler()

static int rate_ctr_group_handler ( struct rate_ctr_group ctrg,
void *  sctx_ 
)
static

◆ rate_ctr_handler()

◆ start_timer()

◆ stats_tcp_poll_timer_cb()

◆ update_srep_config()

Variable Documentation

◆ entry

◆ fd

const struct osmo_fd* stats_tcp_entry::fd

◆ is_initialised

int is_initialised = 0
static

◆ name

const char* stats_tcp_entry::name

◆ osmo_stats_config [1/2]

◆ osmo_stats_config [2/2]

◆ osmo_stats_ctx

void* osmo_stats_ctx = NULL
static

◆ osmo_stats_reporter_list

◆ osmo_stats_timer

struct osmo_fd osmo_stats_timer = { .fd = -1 }
static

Referenced by start_timer().

◆ osmo_tcp_stats_config

◆ s_stats_config

struct osmo_stats_config s_stats_config
static
Initial value:
= {
}
#define STATS_DEFAULT_INTERVAL
Definition: stats.c:103

◆ s_tcp_stats_config

struct osmo_tcp_stats_config s_tcp_stats_config
static
Initial value:
= {
}
#define TCP_STATS_DEFAULT_INTERVAL
Definition: stats_tcp.h:3

◆ stats_tcp

◆ stats_tcp_desc

struct osmo_stat_item_group_desc stats_tcp_desc
static
Initial value:
= {
.group_name_prefix = "tcp",
.group_description = "stats tcp",
.item_desc = stats_tcp_item_desc,
}
static struct osmo_stat_item_desc stats_tcp_item_desc[]
Definition: stats_tcp.c:77
@ OSMO_STATS_CLASS_GLOBAL
global counter/stat_item
Definition: stats.h:45
#define ARRAY_SIZE(x)
Determine number of elements in an array of static size.
Definition: utils.h:19

Referenced by fill_stats().

◆ stats_tcp_entry_cur

◆ stats_tcp_item_desc

struct osmo_stat_item_desc stats_tcp_item_desc[]
static
Initial value:
= {
[STATS_TCP_UNACKED] = { "tcp:unacked", "unacknowledged packets", "", 60, 0 },
[STATS_TCP_LOST] = { "tcp:lost", "lost packets", "", 60, 0 },
[STATS_TCP_RETRANS] = { "tcp:retrans", "retransmitted packets", "", 60, 0 },
[STATS_TCP_RTT] = { "tcp:rtt", "roundtrip-time", "", 60, 0 },
[STATS_TCP_RCV_RTT] = { "tcp:rcv_rtt", "roundtrip-time (receive)", "", 60, 0 },
[STATS_TCP_NOTSENT_BYTES] = { "tcp:notsent_bytes", "bytes not yet sent", "", 60, 0 },
[STATS_TCP_RWND_LIMITED] = { "tcp:rwnd_limited", "time (usec) limited by receive window", "", 60, 0 },
[STATS_TCP_SNDBUF_LIMITED] = { "tcp:sndbuf_limited", "Time (usec) limited by send buffer", "", 60, 0 },
[STATS_TCP_REORD_SEEN] = { "tcp:reord_seen", "reordering events seen", "", 60, 0 },
}
@ STATS_TCP_RWND_LIMITED
Definition: stats_tcp.c:72
@ STATS_TCP_RETRANS
Definition: stats_tcp.c:68
@ STATS_TCP_LOST
Definition: stats_tcp.c:67
@ STATS_TCP_RCV_RTT
Definition: stats_tcp.c:70
@ STATS_TCP_NOTSENT_BYTES
Definition: stats_tcp.c:71
@ STATS_TCP_REORD_SEEN
Definition: stats_tcp.c:74
@ STATS_TCP_UNACKED
Definition: stats_tcp.c:66
@ STATS_TCP_SNDBUF_LIMITED
Definition: stats_tcp.c:73
@ STATS_TCP_RTT
Definition: stats_tcp.c:69

◆ stats_tcp_lock

◆ stats_tcp_poll_timer

struct osmo_timer_list stats_tcp_poll_timer
static