Review at  https://gerrit.osmocom.org/180

dyn PDCH: allow allocating TCH/F on TCH/F_PDCH slots

See comment added in the code.

Original patch by jolly, but split in two, added comment and flipped the if()
logic for readability by nhofmeyr.

Change-Id: Iddd575873a2fe819fc182a6b3d4186caea1997e5
---
M openbsc/src/libbsc/chan_alloc.c
1 file changed, 10 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/80/180/1

diff --git a/openbsc/src/libbsc/chan_alloc.c b/openbsc/src/libbsc/chan_alloc.c
index 8600846..cd25bd9 100644
--- a/openbsc/src/libbsc/chan_alloc.c
+++ b/openbsc/src/libbsc/chan_alloc.c
@@ -96,14 +96,16 @@
                ts = &trx->ts[j];
                if (!ts_is_usable(ts))
                        continue;
-               /* ip.access dynamic TCH/F + PDCH combination */
-               if (ts->pchan == GSM_PCHAN_TCH_F_PDCH &&
-                   pchan == GSM_PCHAN_TCH_F) {
-                       /* we can only consider such a dynamic channel
-                        * if the PDCH is currently inactive */
-                       if (ts->flags & TS_F_PDCH_MODE)
-                               continue;
-               } else if (ts->pchan != pchan)
+               /*
+                * pchan must match; but when looking for TCH/F, allow a match
+                * with TCH/F_PDCH, to return dynamic TCH/F_PDCH slots to the
+                * channel allocator. Thus the channel allocator can pick a
+                * TCH/F_PDCH time slot and disable its PDCH later on (no need
+                * to check whether PDCH mode is currently active here).
+                */
+               if (!(ts->pchan == pchan
+                     || (ts->pchan == GSM_PCHAN_TCH_F_PDCH
+                         && pchan == GSM_PCHAN_TCH_F)))
                        continue;
                /* check if all sub-slots are allocated yet */
                for (ss = 0; ss < subslots_per_pchan[pchan]; ss++) {

-- 
To view, visit https://gerrit.osmocom.org/180
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iddd575873a2fe819fc182a6b3d4186caea1997e5
Gerrit-PatchSet: 1
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Neels Hofmeyr <[email protected]>

Reply via email to