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.
This commit is contained in:
Harald Welte 2010-12-24 16:06:33 +01:00
parent 75e2defc7f
commit a29e43a26f
4 changed files with 21 additions and 10 deletions

View File

@ -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;

View File

@ -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);
}

View File

@ -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");

View File

@ -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;
}