Hi,
I had the exact same problem has described here http://lists.gnumonks.org/pipermail/openbsc/2009-July/000627.html That is, the first call worked great but after the first call, no way to make a second, the BTS would respond with NACK to the CHANnel ACTIvation requests.
I finally found that the chan_rate field of the channel_mode must be 0 for that request to work. And forcing it to 0 in rsl_chan_activate_lchan, like this :
--- SNIP ---
rc = channel_mode_from_lchan(&cm, lchan); if (rc < 0) return rc; cm.chan_rate = 0; // Hack !
-----------
makes the thing work.
But that's obviously not the root cause. I thing the lchan tch_mode should be GSM48_CMODE_SIGN, so that channel_mode_from_lchan would set the proper value directly. But I haven't traced yet why tch_mode is not at the good value for the second call ...
Sylvain
On Thu, Aug 27, 2009 at 01:16:12AM +0200, Sylvain Munaut wrote:
I finally found that the chan_rate field of the channel_mode must be 0 for that request to work. And forcing it to 0 in rsl_chan_activate_lchan, like this :
thanks, nice spot!
--- SNIP ---
rc = channel_mode_from_lchan(&cm, lchan); if (rc < 0) return rc; cm.chan_rate = 0; // Hack !
makes the thing work.
But that's obviously not the root cause. I thing the lchan tch_mode should be GSM48_CMODE_SIGN, so that channel_mode_from_lchan would set the proper value directly. But I haven't traced yet why tch_mode is not at the good value for the second call ...
the reason is that we only set it in two places:
1) when we initialize / memset our data structures at program startup 2) in gsm48_tx_chan_mode_modify() when we typically switch from signalling to voice mode.
So what is missing is re-setting this before rsl_chan_activate_lchan is called. Right now the architecture of the code is not good enough to have a "right spot" for it, since we only activate a channel from the code where we process channel required messages. So probably there would be the right location to do that. (Around line 1087 of abis_rsl.c before rsl_chan_activate_lchan() is being called).
Testing + patch submission is very welcome.
Regards,