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
This commit is contained in:
Neels Hofmeyr 2016-06-14 14:08:35 +02:00
parent 0fcd2e2fec
commit 2ebacce4fa
3 changed files with 12 additions and 5 deletions

View File

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

View File

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

View File

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