diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-12-24 16:06:33 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-12-24 16:07:40 +0100 |
commit | a29e43a26fae23d5132461cf7bfa43a1ca64761f (patch) | |
tree | 82f893561e7a5c55391f436985f5595a88d468e9 | |
parent | 75e2defc7f15b4c8e349af090acfdf31973272bf (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.
-rw-r--r-- | openbsc/include/openbsc/gsm_data.h | 7 | ||||
-rw-r--r-- | openbsc/src/gsm_04_08.c | 7 | ||||
-rw-r--r-- | openbsc/src/gsm_data.c | 7 | ||||
-rw-r--r-- | openbsc/src/vty_interface_layer3.c | 10 |
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; } |