bsc_api.c: actually log with context

bsc_api.c notoriously lacks log context. Provide gsm_lchan_name() and/or
bsc_subscr_name() in roughly a million instances, using new LOGPLCHAN macro.

Add LOGPLCHAN() to gsm_data.h, to encourage use of it in other .c files.

Change-Id: If469defcc6fe8950dac5df61db3f39d297893318
diff --git a/include/osmocom/bsc/gsm_data.h b/include/osmocom/bsc/gsm_data.h
index 6f854d8..da5e87f 100644
--- a/include/osmocom/bsc/gsm_data.h
+++ b/include/osmocom/bsc/gsm_data.h
@@ -366,6 +366,14 @@
 	uint8_t key[MAX_A5_KEY_LEN];
 };
 
+#define LOGPLCHAN(lchan, ss, level, fmt, args...) \
+	LOGP(ss, level, "%s (ss=%d,%s) (%s) " fmt, \
+	     lchan ? gsm_ts_and_pchan_name(lchan->ts) : "-", \
+	     lchan ? lchan->nr : 0, \
+	     lchan ? gsm_lchant_name(lchan->type) : "-", \
+	     bsc_subscr_name(lchan && lchan->conn ? lchan->conn->bsub : NULL), \
+	     ## args)
+
 struct gsm_lchan {
 	/* The TS that we're part of */
 	struct gsm_bts_trx_ts *ts;