diff --git a/include/osmocom/mgcp/mgcp_internal.h b/include/osmocom/mgcp/mgcp_internal.h
index 8d82b14..9e7246e 100644
--- a/include/osmocom/mgcp/mgcp_internal.h
+++ b/include/osmocom/mgcp/mgcp_internal.h
@@ -71,13 +71,16 @@
 	struct mgcp_rtp_stream_state out_stream;
 
 	/* jitter and packet loss calculation */
-	int stats_initialized;
-	uint16_t stats_base_seq;
-	uint16_t stats_max_seq;
-	uint32_t stats_ssrc;
-	uint32_t stats_jitter;
-	int32_t stats_transit;
-	int stats_cycles;
+	struct {
+		int initialized;
+		uint16_t base_seq;
+		uint16_t max_seq;
+		uint32_t ssrc;
+		uint32_t jitter;
+		int32_t transit;
+		int cycles;
+	} stats;
+
 	bool patched_first_rtp_payload; /* FIXME: drop this, see OS#2459 */
 };
 
diff --git a/src/libosmo-mgcp/mgcp_network.c b/src/libosmo-mgcp/mgcp_network.c
index 8c0a7e3..2056a8e 100644
--- a/src/libosmo-mgcp/mgcp_network.c
+++ b/src/libosmo-mgcp/mgcp_network.c
@@ -434,14 +434,14 @@
 	int32_t d;
 
 	/* initialize or re-initialize */
-	if (!state->stats_initialized || state->stats_ssrc != ssrc) {
-		state->stats_initialized = 1;
-		state->stats_base_seq = seq;
-		state->stats_max_seq = seq - 1;
-		state->stats_ssrc = ssrc;
-		state->stats_jitter = 0;
-		state->stats_transit = transit;
-		state->stats_cycles = 0;
+	if (!state->stats.initialized || state->stats.ssrc != ssrc) {
+		state->stats.initialized = 1;
+		state->stats.base_seq = seq;
+		state->stats.max_seq = seq - 1;
+		state->stats.ssrc = ssrc;
+		state->stats.jitter = 0;
+		state->stats.transit = transit;
+		state->stats.cycles = 0;
 	} else {
 		uint16_t udelta;
 
@@ -452,10 +452,10 @@
 		 * It can't wrap during the initialization so let's
 		 * skip it here. The Appendix A probably doesn't have
 		 * this issue because of the probation. */
-		udelta = seq - state->stats_max_seq;
+		udelta = seq - state->stats.max_seq;
 		if (udelta < RTP_MAX_DROPOUT) {
-			if (seq < state->stats_max_seq)
-				state->stats_cycles += RTP_SEQ_MOD;
+			if (seq < state->stats.max_seq)
+				state->stats.cycles += RTP_SEQ_MOD;
 		} else if (udelta <= RTP_SEQ_MOD - RTP_MAX_MISORDER) {
 			LOGP(DRTP, LOGL_NOTICE,
 			     "RTP seqno made a very large jump on 0x%x delta: %u\n",
@@ -467,12 +467,12 @@
 	 * taken closer to the read function. This was taken from the
 	 * Appendix A of RFC 3550. Timestamp and arrival_time have a 1/rate
 	 * resolution. */
-	d = transit - state->stats_transit;
-	state->stats_transit = transit;
+	d = transit - state->stats.transit;
+	state->stats.transit = transit;
 	if (d < 0)
 		d = -d;
-	state->stats_jitter += d - ((state->stats_jitter + 8) >> 4);
-	state->stats_max_seq = seq;
+	state->stats.jitter += d - ((state->stats.jitter + 8) >> 4);
+	state->stats.max_seq = seq;
 }
 
 /* The RFC 3550 Appendix A assumes there are multiple sources but
diff --git a/src/libosmo-mgcp/mgcp_stat.c b/src/libosmo-mgcp/mgcp_stat.c
index b84f5f2..54c4b66 100644
--- a/src/libosmo-mgcp/mgcp_stat.c
+++ b/src/libosmo-mgcp/mgcp_stat.c
@@ -30,10 +30,10 @@
 			struct mgcp_rtp_end *end, uint32_t *expected,
 			int *loss)
 {
-	*expected = state->stats_cycles + state->stats_max_seq;
-	*expected = *expected - state->stats_base_seq + 1;
+	*expected = state->stats.cycles + state->stats.max_seq;
+	*expected = *expected - state->stats.base_seq + 1;
 
-	if (!state->stats_initialized) {
+	if (!state->stats.initialized) {
 		*expected = 0;
 		*loss = 0;
 		return;
@@ -56,9 +56,9 @@
 /* Helper function for mgcp_format_stats_rtp() to calculate jitter */
 uint32_t calc_jitter(struct mgcp_rtp_state *state)
 {
-	if (!state->stats_initialized)
+	if (!state->stats.initialized)
 		return 0;
-	return state->stats_jitter >> 4;
+	return state->stats.jitter >> 4;
 }
 
 /* Generate statistics for an RTP connection */
diff --git a/tests/mgcp/mgcp_test.c b/tests/mgcp/mgcp_test.c
index 330d24d..6f8e4ca 100644
--- a/tests/mgcp/mgcp_test.c
+++ b/tests/mgcp/mgcp_test.c
@@ -916,10 +916,10 @@
 		memset(&state, 0, sizeof(state));
 		memset(&rtp, 0, sizeof(rtp));
 
-		state.stats_initialized = 1;
-		state.stats_base_seq = pl_test_dat[i].base_seq;
-		state.stats_max_seq = pl_test_dat[i].max_seq;
-		state.stats_cycles = pl_test_dat[i].cycles;
+		state.stats.initialized = 1;
+		state.stats.base_seq = pl_test_dat[i].base_seq;
+		state.stats.max_seq = pl_test_dat[i].max_seq;
+		state.stats.cycles = pl_test_dat[i].cycles;
 
 		rtp.packets_rx = pl_test_dat[i].packets;
 		calc_loss(&state, &rtp, &expected, &loss);
@@ -1183,7 +1183,7 @@
 		       state.out_stream.err_ts_counter - last_out_ts_err_cnt);
 
 		printf("Stats: Jitter = %u, Transit = %d\n",
-		       calc_jitter(&state), state.stats_transit);
+		       calc_jitter(&state), state.stats.transit);
 
 		last_in_ts_err_cnt = state.in_stream.err_ts_counter;
 		last_out_ts_err_cnt = state.out_stream.err_ts_counter;
@@ -1362,29 +1362,29 @@
 	conn = mgcp_conn_get_rtp(endp, _conn->id);
 	OSMO_ASSERT(conn);
 
-	OSMO_ASSERT(conn->state.stats_initialized == 0);
+	OSMO_ASSERT(conn->state.stats.initialized == 0);
 
 	mgcp_rtp_annex_count(endp, &conn->state, 0, 0, 2342);
-	OSMO_ASSERT(conn->state.stats_initialized == 1);
-	OSMO_ASSERT(conn->state.stats_cycles == 0);
-	OSMO_ASSERT(conn->state.stats_max_seq == 0);
+	OSMO_ASSERT(conn->state.stats.initialized == 1);
+	OSMO_ASSERT(conn->state.stats.cycles == 0);
+	OSMO_ASSERT(conn->state.stats.max_seq == 0);
 
 	mgcp_rtp_annex_count(endp, &conn->state, 1, 0, 2342);
-	OSMO_ASSERT(conn->state.stats_initialized == 1);
-	OSMO_ASSERT(conn->state.stats_cycles == 0);
-	OSMO_ASSERT(conn->state.stats_max_seq == 1);
+	OSMO_ASSERT(conn->state.stats.initialized == 1);
+	OSMO_ASSERT(conn->state.stats.cycles == 0);
+	OSMO_ASSERT(conn->state.stats.max_seq == 1);
 
 	/* now jump.. */
 	mgcp_rtp_annex_count(endp, &conn->state, UINT16_MAX, 0, 2342);
-	OSMO_ASSERT(conn->state.stats_initialized == 1);
-	OSMO_ASSERT(conn->state.stats_cycles == 0);
-	OSMO_ASSERT(conn->state.stats_max_seq == UINT16_MAX);
+	OSMO_ASSERT(conn->state.stats.initialized == 1);
+	OSMO_ASSERT(conn->state.stats.cycles == 0);
+	OSMO_ASSERT(conn->state.stats.max_seq == UINT16_MAX);
 
 	/* and wrap */
 	mgcp_rtp_annex_count(endp, &conn->state, 0, 0, 2342);
-	OSMO_ASSERT(conn->state.stats_initialized == 1);
-	OSMO_ASSERT(conn->state.stats_cycles == UINT16_MAX + 1);
-	OSMO_ASSERT(conn->state.stats_max_seq == 0);
+	OSMO_ASSERT(conn->state.stats.initialized == 1);
+	OSMO_ASSERT(conn->state.stats.cycles == UINT16_MAX + 1);
+	OSMO_ASSERT(conn->state.stats.max_seq == 0);
 
 	mgcp_release_endp(endp);
 	talloc_free(cfg);
