aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmocom/bsc/abis_rsl.h5
-rw-r--r--src/libbsc/abis_rsl.c9
-rw-r--r--src/libbsc/chan_alloc.c2
3 files changed, 10 insertions, 6 deletions
diff --git a/include/osmocom/bsc/abis_rsl.h b/include/osmocom/bsc/abis_rsl.h
index f983fceec..c09272304 100644
--- a/include/osmocom/bsc/abis_rsl.h
+++ b/include/osmocom/bsc/abis_rsl.h
@@ -34,6 +34,9 @@ struct gsm_bts_trx_ts;
#define GSM48_LEN2PLEN(a) (((a) << 2) | 1)
+#define rsl_lchan_set_state(lch_, st_) \
+ rsl_lchan_set_state_with_log(lch_, st_, __BASE_FILE__, __LINE__)
+
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 +77,7 @@ 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_set_state_with_log(struct gsm_lchan *lchan, enum gsm_lchan_state state, const char *file, unsigned line);
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 09fb14b79..996860285 100644
--- a/src/libbsc/abis_rsl.c
+++ b/src/libbsc/abis_rsl.c
@@ -1225,11 +1225,12 @@ int rsl_lchan_mark_broken(struct gsm_lchan *lchan, const char *reason)
return 0;
}
-int rsl_lchan_set_state(struct gsm_lchan *lchan, int state)
+int rsl_lchan_set_state_with_log(struct gsm_lchan *lchan, enum gsm_lchan_state state, const char *file, unsigned line)
{
- DEBUGP(DRSL, "%s state %s -> %s\n",
- gsm_lchan_name(lchan), gsm_lchans_name(lchan->state),
- gsm_lchans_name(state));
+ if (lchan->state != state)
+ LOGPSRC(DRSL, LOGL_DEBUG, file, line, "%s state %s -> %s\n",
+ gsm_lchan_name(lchan), gsm_lchans_name(lchan->state), gsm_lchans_name(state));
+
lchan->state = state;
return 0;
}
diff --git a/src/libbsc/chan_alloc.c b/src/libbsc/chan_alloc.c
index 679ad4203..f0275bc96 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;
+ rsl_lchan_set_state(lchan, LCHAN_S_NONE);
if (lchan->abis_ip.rtp_socket) {
rtp_socket_free(lchan->abis_ip.rtp_socket);