log: improve for rsl_lchan_mark_broken()

In rsl_lchan_mark_broken(), call rsl_lchan_set_state() so the state transition
gets logged in the debug log.

Remove logging for the broken channel at the callers, instead log the error
actually in rsl_lchan_mark_broken() itself, with the reason message passed by
the caller anyway. (Removes code dup and ensures it's always logged.)

Change-Id: I54ae9bbd3f193bae7b1bda1fef3e33e62b353bf5
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 5a53d19..d9ca550 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -179,10 +179,6 @@
 {
 	struct gsm_lchan *lchan = data;
 
-	LOGP(DRSL, LOGL_ERROR,
-		"%s Timeout during activation. Marked as broken.\n",
-		gsm_lchan_name(lchan));
-
 	rsl_lchan_mark_broken(lchan, "activation timeout");
 	lchan_free(lchan);
 }
@@ -191,10 +187,6 @@
 {
 	struct gsm_lchan *lchan = data;
 
-	LOGP(DRSL, LOGL_ERROR,
-		"%s Timeout during deactivation! Marked as broken.\n",
-		gsm_lchan_name(lchan));
-
 	rsl_lchan_mark_broken(lchan, "de-activation timeout");
 	lchan_free(lchan);
 }
@@ -1121,7 +1113,9 @@
 
 int rsl_lchan_mark_broken(struct gsm_lchan *lchan, const char *reason)
 {
-	lchan->state = LCHAN_S_BROKEN;
+	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->broken_reason = reason;
 	return 0;
 }