Merge remote-tracking branch 'sysmocom/tbf-vty' into sysmocom/master
This commit is contained in:
commit
b293043e2d
|
@ -284,6 +284,27 @@ DEFUN(show_bts_stats,
|
|||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN(show_tbf,
|
||||
show_tbf_cmd,
|
||||
"show tbf all",
|
||||
SHOW_STR "information about all current TBFs\n")
|
||||
{
|
||||
struct gprs_rlcmac_bts *bts = bts_main_data();
|
||||
struct llist_head *tbf;
|
||||
|
||||
vty_out(vty, "UL TBFs%s", VTY_NEWLINE);
|
||||
llist_for_each(tbf, &bts->ul_tbfs) {
|
||||
tbf_print_vty_info(vty, tbf);
|
||||
}
|
||||
|
||||
vty_out(vty, "%sDL TBFs%s", VTY_NEWLINE, VTY_NEWLINE);
|
||||
llist_for_each(tbf, &bts->dl_tbfs) {
|
||||
tbf_print_vty_info(vty, tbf);
|
||||
}
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
static const char pcu_copyright[] =
|
||||
"Copyright (C) 2012 by Ivan Kluchnikov <kluchnikovi@gmail.com> and \r\n"
|
||||
" Andreas Eversberg <jolly@eversberg.eu>\r\n"
|
||||
|
@ -322,6 +343,7 @@ int pcu_vty_init(const struct log_info *cat)
|
|||
install_element(PCU_NODE, &ournode_end_cmd);
|
||||
|
||||
install_element_ve(&show_bts_stats_cmd);
|
||||
install_element_ve(&show_tbf_cmd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
22
src/tbf.cpp
22
src/tbf.cpp
|
@ -508,6 +508,7 @@ struct gprs_rlcmac_tbf *tbf_alloc(struct gprs_rlcmac_bts *bts,
|
|||
if (!tbf)
|
||||
return NULL;
|
||||
|
||||
tbf->m_create_ts = time(NULL);
|
||||
tbf->bts = bts->bts;
|
||||
tbf->direction = dir;
|
||||
tbf->m_tfi = tfi;
|
||||
|
@ -1753,3 +1754,24 @@ uint8_t gprs_rlcmac_tbf::tsc() const
|
|||
{
|
||||
return trx->pdch[first_ts].tsc;
|
||||
}
|
||||
|
||||
void tbf_print_vty_info(struct vty *vty, llist_head *ltbf)
|
||||
{
|
||||
gprs_rlcmac_tbf *tbf = llist_entry(ltbf, gprs_rlcmac_tbf, list);
|
||||
|
||||
vty_out(vty, "TBF: TFI=%d TLLI=0x%08x (%s) DIR=%s IMSI=%s%s", tbf->tfi(),
|
||||
tbf->tlli(), tbf->is_tlli_valid() ? "valid" : "invalid",
|
||||
tbf->direction == GPRS_RLCMAC_UL_TBF ? "UL" : "DL",
|
||||
tbf->imsi(), VTY_NEWLINE);
|
||||
vty_out(vty, " created=%lu state=%08x 1st_TS=%d 1st_cTS=%d ctrl_TS=%d "
|
||||
"MS_CLASS=%d%s",
|
||||
tbf->create_ts(), tbf->state_flags, tbf->first_ts,
|
||||
tbf->first_common_ts, tbf->control_ts, tbf->ms_class,
|
||||
VTY_NEWLINE);
|
||||
vty_out(vty, " TS_alloc=");
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (tbf->pdch[i])
|
||||
vty_out(vty, "%d ", i);
|
||||
}
|
||||
vty_out(vty, " CS=%d%s%s", tbf->cs, VTY_NEWLINE, VTY_NEWLINE);
|
||||
}
|
||||
|
|
23
src/tbf.h
23
src/tbf.h
|
@ -18,6 +18,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include "gprs_rlcmac.h"
|
||||
#include "llc.h"
|
||||
#include "rlc.h"
|
||||
|
@ -136,6 +138,8 @@ struct gprs_rlcmac_tbf {
|
|||
|
||||
uint16_t sns() const;
|
||||
|
||||
time_t create_ts() const;
|
||||
|
||||
/* attempt to make things a bit more fair */
|
||||
void rotate_in_list();
|
||||
|
||||
|
@ -223,6 +227,7 @@ struct gprs_rlcmac_tbf {
|
|||
uint32_t m_tlli;
|
||||
uint8_t m_tlli_valid;
|
||||
uint8_t m_tfi;
|
||||
time_t m_create_ts;
|
||||
|
||||
/* store IMSI for look-up and PCH retransmission */
|
||||
char m_imsi[16];
|
||||
|
@ -309,3 +314,21 @@ inline uint16_t gprs_rlcmac_tbf::sns() const
|
|||
|
||||
const char *tbf_name(gprs_rlcmac_tbf *tbf);
|
||||
|
||||
inline time_t gprs_rlcmac_tbf::create_ts() const
|
||||
{
|
||||
return m_create_ts;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#include <osmocom/vty/command.h>
|
||||
#include <osmocom/vty/vty.h>
|
||||
|
||||
|
||||
void tbf_print_vty_info(struct vty *vty, llist_head *tbf);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue