Introduce gsm_lchans_name() for human readable lchan state name

Also, use this new function to dump lchan state on VTY and to
improve readability of RSL log messages.
This commit is contained in:
Harald Welte 2009-12-29 10:52:38 +01:00
parent 8e93b7908f
commit 1887f9d153
4 changed files with 25 additions and 6 deletions

View File

@ -632,6 +632,7 @@ const char *gsm_lchant_name(enum gsm_chan_t c);
const char *gsm_chreq_name(enum gsm_chreq_reason_t c);
char *gsm_ts_name(struct gsm_bts_trx_ts *ts);
char *gsm_lchan_name(struct gsm_lchan *lchan);
const char *gsm_lchans_name(enum gsm_lchan_state s);
enum gsm_e1_event {
EVT_E1_NONE,

View File

@ -940,8 +940,9 @@ static int rsl_rx_chan_act_ack(struct msgb *msg)
return -EINVAL;
if (msg->lchan->state != LCHAN_S_ACT_REQ)
LOGP(DRSL, LOGL_NOTICE, "%s CHAN ACT ACK, but state %u\n",
gsm_lchan_name(msg->lchan), msg->lchan->state);
LOGP(DRSL, LOGL_NOTICE, "%s CHAN ACT ACK, but state %s\n",
gsm_lchan_name(msg->lchan),
gsm_lchans_name(msg->lchan->state));
msg->lchan->state = LCHAN_S_ACTIVE;
dispatch_signal(SS_LCHAN, S_LCHAN_ACTIVATE_ACK, msg->lchan);
@ -1171,8 +1172,9 @@ static int abis_rsl_rx_dchan(struct msgb *msg)
case RSL_MT_RF_CHAN_REL_ACK:
DEBUGP(DRSL, "%s RF CHANNEL RELEASE ACK\n", ts_name);
if (msg->lchan->state != LCHAN_S_REL_REQ)
LOGP(DRSL, LOGL_NOTICE, "%s CHAN REL ACK but state=%u\n",
gsm_lchan_name(msg->lchan), msg->lchan->state);
LOGP(DRSL, LOGL_NOTICE, "%s CHAN REL ACK but state %s\n",
gsm_lchan_name(msg->lchan),
gsm_lchans_name(msg->lchan->state));
msg->lchan->state = LCHAN_S_NONE;
lchan_free(msg->lchan);
break;
@ -1312,7 +1314,8 @@ static int rsl_rx_chan_rqd(struct msgb *msg)
if (lchan->state != LCHAN_S_NONE)
LOGP(DRSL, LOGL_NOTICE, "%s lchan_alloc() returned channel "
"in state %u\n", gsm_lchan_name(lchan), lchan->state);
"in state %s\n", gsm_lchan_name(lchan),
gsm_lchans_name(lchan->state));
lchan->state = LCHAN_S_ACT_REQ;
ts_number = lchan->ts->nr;

View File

@ -88,6 +88,20 @@ const char *gsm_lchant_name(enum gsm_chan_t c)
return lchan_names[c];
}
static const struct value_string lchan_s_names[] = {
{ LCHAN_S_NONE, "NONE" },
{ LCHAN_S_ACT_REQ, "ACTIVATION REQUESTED" },
{ LCHAN_S_ACTIVE, "ACTIVE" },
{ LCHAN_S_INACTIVE, "INACTIVE" },
{ LCHAN_S_REL_REQ, "RELEASE REQUESTED" },
{ 0, NULL },
};
const char *gsm_lchans_name(enum gsm_lchan_state s)
{
return get_value_string(lchan_s_names, s);
}
static const char *chreq_names[] = {
[GSM_CHREQ_REASON_EMERG] = "EMERGENCY",
[GSM_CHREQ_REASON_PAG] = "PAGING",

View File

@ -571,7 +571,8 @@ static void lchan_dump_vty(struct vty *vty, struct gsm_lchan *lchan)
lchan->nr, lchan->ts->nr, lchan->ts->trx->nr,
lchan->ts->trx->bts->nr, gsm_lchant_name(lchan->type),
VTY_NEWLINE);
vty_out(vty, " Use Count: %u%s", lchan->use_count, VTY_NEWLINE);
vty_out(vty, " Use Count: %u, State: %s%s", lchan->use_count,
gsm_lchans_name(lchan->state), VTY_NEWLINE);
vty_out(vty, " BS Power: %u dBm, MS Power: %u dBm%s",
lchan->ts->trx->nominal_power - lchan->ts->trx->max_power_red
- lchan->bs_power*2,