From cf307fb8ff3eee348fd18e331141435faca2163a Mon Sep 17 00:00:00 2001 From: Max Date: Tue, 5 Sep 2017 13:31:09 +0200 Subject: [PATCH] Move channel state assignment to macro Previously we've used function so debug print always pointed to the same place which is not very useful. Replace it with macro so proper file:line is printed. Also, make sure that we always change state only through this macro. Change-Id: I21789f8021290965b61a54a2b23177ccbbfe8321 --- include/openbsc/abis_rsl.h | 8 +++++++- src/libbsc/abis_rsl.c | 27 +++++++++------------------ src/libbsc/bsc_api.c | 2 +- src/libbsc/chan_alloc.c | 4 ++-- src/libbsc/handover_logic.c | 2 +- 5 files changed, 20 insertions(+), 23 deletions(-) diff --git a/include/openbsc/abis_rsl.h b/include/openbsc/abis_rsl.h index f983fceec..ecab0fe93 100644 --- a/include/openbsc/abis_rsl.h +++ b/include/openbsc/abis_rsl.h @@ -34,6 +34,13 @@ struct gsm_bts_trx_ts; #define GSM48_LEN2PLEN(a) (((a) << 2) | 1) +#define LCHAN_SET_ST(lch_, st_) \ + do { \ + DEBUGP(DRSL, "%s state %s -> %s\n", \ + gsm_lchan_name(lch_), gsm_lchans_name((lch_)->state), gsm_lchans_name(st_)); \ + (lch_)->state = st_; \ + } while (0) + int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len); int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data, int len); @@ -74,7 +81,6 @@ uint64_t str_to_imsi(const char *imsi_str); int rsl_release_request(struct gsm_lchan *lchan, uint8_t link_id, enum rsl_rel_mode release_mode); -int rsl_lchan_set_state(struct gsm_lchan *lchan, int); int rsl_lchan_mark_broken(struct gsm_lchan *lchan, const char *broken); /* to be provided by external code */ diff --git a/src/libbsc/abis_rsl.c b/src/libbsc/abis_rsl.c index 75229a55f..fabb47a1b 100644 --- a/src/libbsc/abis_rsl.c +++ b/src/libbsc/abis_rsl.c @@ -79,7 +79,7 @@ static void do_lchan_free(struct gsm_lchan *lchan) osmo_timer_schedule(&lchan->error_timer, lchan->ts->trx->bts->network->T3111 + 2, 0); } else { - rsl_lchan_set_state(lchan, LCHAN_S_NONE); + LCHAN_SET_ST(lchan, LCHAN_S_NONE); } lchan_free(lchan); } @@ -509,7 +509,7 @@ static int rsl_chan_activate_lchan_as_pdch(struct gsm_lchan *lchan) * the calling code passes the correct lchan. */ OSMO_ASSERT(lchan == lchan->ts->lchan); - rsl_lchan_set_state(lchan, LCHAN_S_ACT_REQ); + LCHAN_SET_ST(lchan, LCHAN_S_ACT_REQ); msg = rsl_msgb_alloc(); dh = (struct abis_rsl_dchan_hdr *) msgb_put(msg, sizeof(*dh)); @@ -622,7 +622,7 @@ int rsl_chan_activate_lchan(struct gsm_lchan *lchan, uint8_t act_type, return rc; } - rsl_lchan_set_state(lchan, LCHAN_S_ACT_REQ); + LCHAN_SET_ST(lchan, LCHAN_S_ACT_REQ); ta = lchan->rqd_ta; @@ -825,7 +825,7 @@ static void error_timeout_cb(void *data) /* go back to the none state */ LOGP(DRSL, LOGL_INFO, "%s is back in operation.\n", gsm_lchan_name(lchan)); - rsl_lchan_set_state(lchan, LCHAN_S_NONE); + LCHAN_SET_ST(lchan, LCHAN_S_NONE); /* Put PDCH channel back into PDCH mode, if GPRS is enabled */ if (lchan->ts->pchan == GSM_PCHAN_TCH_F_PDCH @@ -896,7 +896,7 @@ static int rsl_rf_chan_release(struct gsm_lchan *lchan, int error, /* * TODO: start T3109 now. */ - rsl_lchan_set_state(lchan, LCHAN_S_REL_ERR); + LCHAN_SET_ST(lchan, LCHAN_S_REL_ERR); } /* Start another timer or assume the BTS sends a ACK/NACK? */ @@ -1220,20 +1220,11 @@ int rsl_lchan_mark_broken(struct gsm_lchan *lchan, const char *reason) { LOGP(DRSL, LOGL_ERROR, "%s %s lchan broken: %s\n", gsm_lchan_name(lchan), gsm_lchant_name(lchan->type), reason); - rsl_lchan_set_state(lchan, LCHAN_S_BROKEN); + LCHAN_SET_ST(lchan, LCHAN_S_BROKEN); lchan->broken_reason = reason; return 0; } -int rsl_lchan_set_state(struct gsm_lchan *lchan, int state) -{ - DEBUGP(DRSL, "%s state %s -> %s\n", - gsm_lchan_name(lchan), gsm_lchans_name(lchan->state), - gsm_lchans_name(state)); - lchan->state = state; - return 0; -} - /* Chapter 8.4.2: Channel Activate Acknowledge */ static int rsl_rx_chan_act_ack(struct msgb *msg) { @@ -1257,7 +1248,7 @@ static int rsl_rx_chan_act_ack(struct msgb *msg) talloc_free(lchan->rqd_ref); lchan->rqd_ref = NULL; lchan->rqd_ta = 0; - rsl_lchan_set_state(msg->lchan, LCHAN_S_ACTIVE); + LCHAN_SET_ST(msg->lchan, LCHAN_S_ACTIVE); if (ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH) { /* * lchan_act_tmr_cb() already called @@ -1282,7 +1273,7 @@ static int rsl_rx_chan_act_ack(struct msgb *msg) LOGP(DRSL, LOGL_NOTICE, "%s CHAN ACT ACK, but state %s\n", gsm_lchan_name(lchan), gsm_lchans_name(lchan->state)); - rsl_lchan_set_state(lchan, LCHAN_S_ACTIVE); + LCHAN_SET_ST(lchan, LCHAN_S_ACTIVE); if (ts->pchan == GSM_PCHAN_TCH_F_TCH_H_PDCH) dyn_ts_switchover_complete(lchan); @@ -2614,7 +2605,7 @@ int dyn_ts_switchover_start(struct gsm_bts_trx_ts *ts, * rsl_rx_rf_chan_rel_ack(). PDCH is always on lchan[0]. */ if (ts->dyn.pchan_is == GSM_PCHAN_PDCH) { - rsl_lchan_set_state(ts->lchan, LCHAN_S_REL_REQ); + LCHAN_SET_ST(ts->lchan, LCHAN_S_REL_REQ); rc = rsl_rf_chan_release(ts->lchan, 0, SACCH_NONE); if (rc) { LOGP(DRSL, LOGL_ERROR, diff --git a/src/libbsc/bsc_api.c b/src/libbsc/bsc_api.c index a0ba69a91..2c64dde5e 100644 --- a/src/libbsc/bsc_api.c +++ b/src/libbsc/bsc_api.c @@ -246,7 +246,7 @@ static int handle_new_assignment(struct gsm_subscriber_connection *conn, int cha conn->secondary_lchan = new_lchan; new_lchan->conn = conn; - rsl_lchan_set_state(new_lchan, LCHAN_S_ACT_REQ); + LCHAN_SET_ST(new_lchan, LCHAN_S_ACT_REQ); return 0; } diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c index 4192d65f7..8d31dcfdb 100644 --- a/src/libbsc/chan_alloc.c +++ b/src/libbsc/chan_alloc.c @@ -448,7 +448,7 @@ void lchan_reset(struct gsm_lchan *lchan) osmo_timer_del(&lchan->error_timer); lchan->type = GSM_LCHAN_NONE; - lchan->state = LCHAN_S_NONE; + LCHAN_SET_ST(lchan, LCHAN_S_NONE); if (lchan->abis_ip.rtp_socket) { rtp_socket_free(lchan->abis_ip.rtp_socket); @@ -485,7 +485,7 @@ static void _lchan_handle_release(struct gsm_lchan *lchan, int lchan_release(struct gsm_lchan *lchan, int sacch_deact, enum rsl_rel_mode mode) { DEBUGP(DRLL, "%s starting release sequence\n", gsm_lchan_name(lchan)); - rsl_lchan_set_state(lchan, LCHAN_S_REL_REQ); + LCHAN_SET_ST(lchan, LCHAN_S_REL_REQ); lchan->conn = NULL; _lchan_handle_release(lchan, sacch_deact, mode); diff --git a/src/libbsc/handover_logic.c b/src/libbsc/handover_logic.c index 8ced74fd5..5202cc9d3 100644 --- a/src/libbsc/handover_logic.c +++ b/src/libbsc/handover_logic.c @@ -152,7 +152,7 @@ int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *bts) return rc; } - rsl_lchan_set_state(new_lchan, LCHAN_S_ACT_REQ); + LCHAN_SET_ST(new_lchan, LCHAN_S_ACT_REQ); llist_add(&ho->list, &bsc_handovers); /* we continue in the SS_LCHAN handler / ho_chan_activ_ack */