summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-06-14 14:08:35 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2016-06-16 04:26:33 +0200
commit2ebacce4fa5ab8f3be42967033644739d78c80bf (patch)
tree3d3b0853e34e7464f3cae9c47e1db76a3a2408a5
parent0fcd2e2fec966ac4e17222e7f53f2d0e5a7bf0ba (diff)
dyn PDCH: TS flags: rename one, add three, as enum
Rename TS_F_PDCH_MODE to TS_F_PDCH_ACTIVE, to more accurately reflect the truth value's meaning. Add TS_F_PDCH_ACT_PENDING and TS_F_PDCH_DEACT_PENDING for sysmoBTS (and possibly other BTS implementations) to remember what to do when the PCU replies with a channel de/activation. Also add TS_F_PDCH_PENDING_MASK to test for both. Change from #define to an enum. Note: These flags are also used in the upcoming osmo-bts-sysmo dyn PDCH commits, so osmo-bts submission depends on this commit. Change-Id: I391a103ab599648b0c5d4f3ad613a6d7c48834b3
-rw-r--r--openbsc/include/openbsc/gsm_data_shared.h9
-rw-r--r--openbsc/src/libbsc/abis_rsl.c6
-rw-r--r--openbsc/src/libbsc/bsc_vty.c2
3 files changed, 12 insertions, 5 deletions
diff --git a/openbsc/include/openbsc/gsm_data_shared.h b/openbsc/include/openbsc/gsm_data_shared.h
index 0b6bf60..e46647c 100644
--- a/openbsc/include/openbsc/gsm_data_shared.h
+++ b/openbsc/include/openbsc/gsm_data_shared.h
@@ -332,7 +332,14 @@ struct gsm_lchan {
#endif
};
-#define TS_F_PDCH_MODE 0x1000
+enum {
+ TS_F_PDCH_ACTIVE = 0x1000,
+ TS_F_PDCH_ACT_PENDING = 0x2000,
+ TS_F_PDCH_DEACT_PENDING = 0x4000,
+ TS_F_PDCH_PENDING_MASK = 0x6000 /*<
+ TS_F_PDCH_ACT_PENDING | TS_F_PDCH_DEACT_PENDING */
+} gsm_bts_trx_ts_flags;
+
/* One Timeslot in a TRX */
struct gsm_bts_trx_ts {
struct gsm_bts_trx *trx;
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 59176df..338c00a 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -472,7 +472,7 @@ int rsl_chan_activate_lchan(struct gsm_lchan *lchan, uint8_t act_type,
/* if channel is in PDCH mode, deactivate PDCH first */
if (lchan->ts->pchan == GSM_PCHAN_TCH_F_PDCH
- && (lchan->ts->flags & TS_F_PDCH_MODE)) {
+ && (lchan->ts->flags & TS_F_PDCH_ACTIVE)) {
/* store activation type and handover reference */
lchan->dyn_pdch.act_type = act_type;
lchan->dyn_pdch.ho_ref = ho_ref;
@@ -1203,7 +1203,7 @@ static int rsl_rx_hando_det(struct msgb *msg)
static int rsl_rx_pdch_act_ack(struct msgb *msg)
{
- msg->lchan->ts->flags |= TS_F_PDCH_MODE;
+ msg->lchan->ts->flags |= TS_F_PDCH_ACTIVE;
/* We have activated PDCH, so now the channel is available again. */
do_lchan_free(msg->lchan);
@@ -1213,7 +1213,7 @@ static int rsl_rx_pdch_act_ack(struct msgb *msg)
static int rsl_rx_pdch_deact_ack(struct msgb *msg)
{
- msg->lchan->ts->flags &= ~TS_F_PDCH_MODE;
+ msg->lchan->ts->flags &= ~TS_F_PDCH_ACTIVE;
rsl_chan_activate_lchan(msg->lchan, msg->lchan->dyn_pdch.act_type,
msg->lchan->dyn_pdch.ho_ref);
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index b0f2f62..578b005 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -919,7 +919,7 @@ static void ts_dump_vty(struct vty *vty, struct gsm_bts_trx_ts *ts)
gsm_pchan_name(ts->pchan), gsm_ts_tsc(ts));
if (ts->pchan == GSM_PCHAN_TCH_F_PDCH)
vty_out(vty, " (%s mode)",
- ts->flags & TS_F_PDCH_MODE ? "PDCH" : "TCH/F");
+ ts->flags & TS_F_PDCH_ACTIVE ? "PDCH" : "TCH/F");
vty_out(vty, "%s", VTY_NEWLINE);
vty_out(vty, " NM State: ");
net_dump_nmstate(vty, &ts->mo.nm_state);