[paging] Implement the counting for TCH/H and TCH/F

Add some code to count TCH/H and TCH/F and also handle
the neci bit of the network. Our channel allocator will
allocate a TCH/F if we request a TCH/H but can not allocate it.
diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c
index bca97cf..18d41aa 100644
--- a/openbsc/src/paging.c
+++ b/openbsc/src/paging.c
@@ -128,10 +128,8 @@
 
 	switch (rsl_type) {
 	case RSL_CHANNEED_TCH_F:
-		LOGP(DPAG, LOGL_ERROR, "Not implemented.\n");
-		break;
 	case RSL_CHANNEED_TCH_ForH:
-		LOGP(DPAG, LOGL_ERROR, "Not implemented.\n");
+		goto count_tch;
 		break;
 	case RSL_CHANNEED_SDCCH:
 		goto count_sdcch;
@@ -139,7 +137,7 @@
 	case RSL_CHANNEED_ANY:
 	default:
 		if (bts->network->pag_any_tch)
-			LOGP(DPAG, LOGL_ERROR, "Not implemented.\n");
+			goto count_tch;
 		else
 			goto count_sdcch;
 		break;
@@ -155,6 +153,15 @@
 	count += pl.pchan[GSM_PCHAN_CCCH_SDCCH4].total
 			- pl.pchan[GSM_PCHAN_CCCH_SDCCH4].used;
 	return bts->paging.free_chans_need > count;
+
+count_tch:
+	count = 0;
+	count += pl.pchan[GSM_PCHAN_TCH_F].total
+			- pl.pchan[GSM_PCHAN_TCH_F].used;
+	if (bts->network->neci)
+		count += pl.pchan[GSM_PCHAN_TCH_H].total
+				- pl.pchan[GSM_PCHAN_TCH_H].used;
+	return bts->paging.free_chans_need > count;
 }
 
 /*