aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-12-24 16:06:33 +0100
committerHarald Welte <laforge@gnumonks.org>2010-12-24 16:07:40 +0100
commita29e43a26fae23d5132461cf7bfa43a1ca64761f (patch)
tree82f893561e7a5c55391f436985f5595a88d468e9 /openbsc
parent75e2defc7f15b4c8e349af090acfdf31973272bf (diff)
BSC Call Control: Actually implement call statistics
The existing call realated statistics counters apparently were never used. This introduces a new set of counters, two for the MO and MT case.
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/include/openbsc/gsm_data.h7
-rw-r--r--openbsc/src/gsm_04_08.c7
-rw-r--r--openbsc/src/gsm_data.c7
-rw-r--r--openbsc/src/vty_interface_layer3.c10
4 files changed, 21 insertions, 10 deletions
diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index b5f17ac74..b9ec94cf9 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -637,9 +637,10 @@ struct gsmnet_stats {
struct counter *rp_err_other;
} sms;
struct {
- struct counter *dialled; /* total number of dialled calls */
- struct counter *alerted; /* we alerted the other end */
- struct counter *connected;/* how many calls were accepted */
+ struct counter *mo_setup;
+ struct counter *mo_connect_ack;
+ struct counter *mt_setup;
+ struct counter *mt_connect;
} call;
struct {
struct counter *rf_fail;
diff --git a/openbsc/src/gsm_04_08.c b/openbsc/src/gsm_04_08.c
index 02854b6fd..42dd1b70e 100644
--- a/openbsc/src/gsm_04_08.c
+++ b/openbsc/src/gsm_04_08.c
@@ -1759,6 +1759,8 @@ static int gsm48_cc_rx_setup(struct gsm_trans *trans, struct msgb *msg)
subscr_name(trans->subscr), trans->subscr->extension,
setup.called.number);
+ counter_inc(trans->subscr->net->stats.call.mo_setup);
+
/* indicate setup to MNCC */
mncc_recvmsg(trans->subscr->net, trans, MNCC_SETUP_IND, &setup);
@@ -1834,6 +1836,8 @@ static int gsm48_cc_tx_setup(struct gsm_trans *trans, void *arg)
new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
+ counter_inc(trans->subscr->net->stats.call.mt_setup);
+
return gsm48_conn_sendmsg(msg, trans->conn, trans);
}
@@ -2053,6 +2057,7 @@ static int gsm48_cc_rx_connect(struct gsm_trans *trans, struct msgb *msg)
}
new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST);
+ counter_inc(trans->subscr->net->stats.call.mt_connect);
return mncc_recvmsg(trans->subscr->net, trans, MNCC_SETUP_CNF, &connect);
}
@@ -2065,9 +2070,11 @@ static int gsm48_cc_rx_connect_ack(struct gsm_trans *trans, struct msgb *msg)
gsm48_stop_cc_timer(trans);
new_cc_state(trans, GSM_CSTATE_ACTIVE);
+ counter_inc(trans->subscr->net->stats.call.mo_connect_ack);
memset(&connect_ack, 0, sizeof(struct gsm_mncc));
connect_ack.callref = trans->callref;
+
return mncc_recvmsg(trans->subscr->net, trans, MNCC_SETUP_COMPL_IND,
&connect_ack);
}
diff --git a/openbsc/src/gsm_data.c b/openbsc/src/gsm_data.c
index 1d07cbf50..f6920480c 100644
--- a/openbsc/src/gsm_data.c
+++ b/openbsc/src/gsm_data.c
@@ -305,9 +305,10 @@ struct gsm_network *gsm_network_init(u_int16_t country_code, u_int16_t network_c
net->stats.sms.delivered = counter_alloc("net.sms.delivered");
net->stats.sms.rp_err_mem = counter_alloc("net.sms.rp_err_mem");
net->stats.sms.rp_err_other = counter_alloc("net.sms.rp_err_other");
- net->stats.call.dialled = counter_alloc("net.call.dialled");
- net->stats.call.alerted = counter_alloc("net.call.alerted");
- net->stats.call.connected = counter_alloc("net.call.connected");
+ net->stats.call.mo_setup = counter_alloc("net.call.mo_setup");
+ net->stats.call.mo_connect_ack = counter_alloc("net.call.mo_connect_ack");
+ net->stats.call.mt_setup = counter_alloc("net.call.mt_setup");
+ net->stats.call.mt_connect = counter_alloc("net.call.mt_connect");
net->stats.chan.rf_fail = counter_alloc("net.chan.rf_fail");
net->stats.chan.rll_err = counter_alloc("net.chan.rll_err");
net->stats.bts.oml_fail = counter_alloc("net.bts.oml_fail");
diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c
index 0697c7d98..cc6bd9470 100644
--- a/openbsc/src/vty_interface_layer3.c
+++ b/openbsc/src/vty_interface_layer3.c
@@ -589,10 +589,12 @@ DEFUN(show_stats,
counter_get(net->stats.sms.delivered),
counter_get(net->stats.sms.rp_err_mem),
counter_get(net->stats.sms.rp_err_other), VTY_NEWLINE);
- vty_out(vty, "Calls : %lu dialled, %lu alerted, %lu connected%s",
- counter_get(net->stats.call.dialled),
- counter_get(net->stats.call.alerted),
- counter_get(net->stats.call.connected), VTY_NEWLINE);
+ vty_out(vty, "MO Calls : %lu setup, %lu connect ack%s",
+ counter_get(net->stats.call.mo_setup),
+ counter_get(net->stats.call.mo_connect_ack), VTY_NEWLINE);
+ vty_out(vty, "MT Calls : %lu setup, %lu connect%s",
+ counter_get(net->stats.call.mt_setup),
+ counter_get(net->stats.call.mt_connect), VTY_NEWLINE);
return CMD_SUCCESS;
}