From 39563af27c110b73b057f667daa9559387d4aad5 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Tue, 20 Apr 2010 17:15:21 +0800 Subject: [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. --- openbsc/src/paging.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/openbsc/src/paging.c b/openbsc/src/paging.c index e42674321..d872927d6 100644 --- a/openbsc/src/paging.c +++ b/openbsc/src/paging.c @@ -128,10 +128,8 @@ static int can_send_pag_req(struct gsm_bts *bts, int rsl_type) 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 @@ static int can_send_pag_req(struct gsm_bts *bts, int rsl_type) 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_sdcch: 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; } /* -- cgit v1.2.3