lchan release in error state: SACCH deact only for SACCH pchans
This is useful particularly in case where we deactivate PDCHs which don't have a SACCH associated. The existin code would always attempt to deactivate a SACCH even in those cases, leading to the BTS responsding with related error messages. Change-Id: Iaf46782329b38ba8f3d438e6c75c2d467b852734
This commit is contained in:
parent
f788d93382
commit
ec16c16193
|
@ -891,6 +891,7 @@ static inline uint8_t gsm_ts_tsc(const struct gsm_bts_trx_ts *ts)
|
|||
struct gsm_lchan *rsl_lchan_lookup(struct gsm_bts_trx *trx, uint8_t chan_nr,
|
||||
int *rc);
|
||||
|
||||
enum gsm_phys_chan_config ts_pchan(struct gsm_bts_trx_ts *ts);
|
||||
uint8_t ts_subslots(struct gsm_bts_trx_ts *ts);
|
||||
bool ts_is_tch(struct gsm_bts_trx_ts *ts);
|
||||
|
||||
|
|
|
@ -898,9 +898,23 @@ static int rsl_rf_chan_release(struct gsm_lchan *lchan, int error,
|
|||
*/
|
||||
static int rsl_rf_chan_release_err(struct gsm_lchan *lchan)
|
||||
{
|
||||
enum sacch_deact sacch_deact;
|
||||
if (lchan->state != LCHAN_S_ACTIVE)
|
||||
return 0;
|
||||
return rsl_rf_chan_release(lchan, 1, SACCH_DEACTIVATE);
|
||||
switch (ts_pchan(lchan->ts)) {
|
||||
case GSM_PCHAN_TCH_F:
|
||||
case GSM_PCHAN_TCH_H:
|
||||
case GSM_PCHAN_CCCH_SDCCH4:
|
||||
case GSM_PCHAN_CCCH_SDCCH4_CBCH:
|
||||
case GSM_PCHAN_SDCCH8_SACCH8C:
|
||||
case GSM_PCHAN_SDCCH8_SACCH8C_CBCH:
|
||||
sacch_deact = SACCH_DEACTIVATE;
|
||||
break;
|
||||
default:
|
||||
sacch_deact = SACCH_NONE;
|
||||
break;
|
||||
}
|
||||
return rsl_rf_chan_release(lchan, 1, sacch_deact);
|
||||
}
|
||||
|
||||
static int rsl_rx_rf_chan_rel_ack(struct gsm_lchan *lchan)
|
||||
|
|
|
@ -729,7 +729,7 @@ static const uint8_t subslots_per_pchan[] = {
|
|||
};
|
||||
|
||||
/*! Return the actual pchan type, also heeding dynamic TS. */
|
||||
static enum gsm_phys_chan_config ts_pchan(struct gsm_bts_trx_ts *ts)
|
||||
enum gsm_phys_chan_config ts_pchan(struct gsm_bts_trx_ts *ts)
|
||||
{
|
||||
switch (ts->pchan) {
|
||||
case GSM_PCHAN_TCH_F_TCH_H_PDCH:
|
||||
|
|
Loading…
Reference in New Issue