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:
parent
75e2defc7f
commit
a29e43a26f
|
@ -637,9 +637,10 @@ struct gsmnet_stats {
|
||||||
struct counter *rp_err_other;
|
struct counter *rp_err_other;
|
||||||
} sms;
|
} sms;
|
||||||
struct {
|
struct {
|
||||||
struct counter *dialled; /* total number of dialled calls */
|
struct counter *mo_setup;
|
||||||
struct counter *alerted; /* we alerted the other end */
|
struct counter *mo_connect_ack;
|
||||||
struct counter *connected;/* how many calls were accepted */
|
struct counter *mt_setup;
|
||||||
|
struct counter *mt_connect;
|
||||||
} call;
|
} call;
|
||||||
struct {
|
struct {
|
||||||
struct counter *rf_fail;
|
struct counter *rf_fail;
|
||||||
|
|
|
@ -1759,6 +1759,8 @@ static int gsm48_cc_rx_setup(struct gsm_trans *trans, struct msgb *msg)
|
||||||
subscr_name(trans->subscr), trans->subscr->extension,
|
subscr_name(trans->subscr), trans->subscr->extension,
|
||||||
setup.called.number);
|
setup.called.number);
|
||||||
|
|
||||||
|
counter_inc(trans->subscr->net->stats.call.mo_setup);
|
||||||
|
|
||||||
/* indicate setup to MNCC */
|
/* indicate setup to MNCC */
|
||||||
mncc_recvmsg(trans->subscr->net, trans, MNCC_SETUP_IND, &setup);
|
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);
|
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);
|
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);
|
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);
|
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);
|
gsm48_stop_cc_timer(trans);
|
||||||
|
|
||||||
new_cc_state(trans, GSM_CSTATE_ACTIVE);
|
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));
|
memset(&connect_ack, 0, sizeof(struct gsm_mncc));
|
||||||
connect_ack.callref = trans->callref;
|
connect_ack.callref = trans->callref;
|
||||||
|
|
||||||
return mncc_recvmsg(trans->subscr->net, trans, MNCC_SETUP_COMPL_IND,
|
return mncc_recvmsg(trans->subscr->net, trans, MNCC_SETUP_COMPL_IND,
|
||||||
&connect_ack);
|
&connect_ack);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.delivered = counter_alloc("net.sms.delivered");
|
||||||
net->stats.sms.rp_err_mem = counter_alloc("net.sms.rp_err_mem");
|
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.sms.rp_err_other = counter_alloc("net.sms.rp_err_other");
|
||||||
net->stats.call.dialled = counter_alloc("net.call.dialled");
|
net->stats.call.mo_setup = counter_alloc("net.call.mo_setup");
|
||||||
net->stats.call.alerted = counter_alloc("net.call.alerted");
|
net->stats.call.mo_connect_ack = counter_alloc("net.call.mo_connect_ack");
|
||||||
net->stats.call.connected = counter_alloc("net.call.connected");
|
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.rf_fail = counter_alloc("net.chan.rf_fail");
|
||||||
net->stats.chan.rll_err = counter_alloc("net.chan.rll_err");
|
net->stats.chan.rll_err = counter_alloc("net.chan.rll_err");
|
||||||
net->stats.bts.oml_fail = counter_alloc("net.bts.oml_fail");
|
net->stats.bts.oml_fail = counter_alloc("net.bts.oml_fail");
|
||||||
|
|
|
@ -589,10 +589,12 @@ DEFUN(show_stats,
|
||||||
counter_get(net->stats.sms.delivered),
|
counter_get(net->stats.sms.delivered),
|
||||||
counter_get(net->stats.sms.rp_err_mem),
|
counter_get(net->stats.sms.rp_err_mem),
|
||||||
counter_get(net->stats.sms.rp_err_other), VTY_NEWLINE);
|
counter_get(net->stats.sms.rp_err_other), VTY_NEWLINE);
|
||||||
vty_out(vty, "Calls : %lu dialled, %lu alerted, %lu connected%s",
|
vty_out(vty, "MO Calls : %lu setup, %lu connect ack%s",
|
||||||
counter_get(net->stats.call.dialled),
|
counter_get(net->stats.call.mo_setup),
|
||||||
counter_get(net->stats.call.alerted),
|
counter_get(net->stats.call.mo_connect_ack), VTY_NEWLINE);
|
||||||
counter_get(net->stats.call.connected), 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;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue