aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-06-08 16:15:57 +0200
committerHarald Welte <laforge@gnumonks.org>2018-06-09 12:02:29 +0000
commitdb330522eaa14b667594e58aec2b7f3899903fb5 (patch)
treec9f5badcb9ec74fbbc83597950cfb0e62ce9ac7f
parent868c67fed34d3a5f0d9d1e5150073fee3d71c26c (diff)
Send DELETE_IND when dropping Imm Assign pending message
This way we give the opportunity to the BSC to release the channel quicker, otherwise it has to wait until T3101 expires. Same procedure is already done in rsl.c rsl_rx_imm_ass() when we return an error (hard limit AGCH queue len reached) from bts_agch_enqueue(). Related: OS#2990 Change-Id: Id9927c0789054ce3ecc7b30380585a1ffe05db5a
-rw-r--r--include/osmo-bts/rsl.h1
-rw-r--r--src/common/bts.c2
-rw-r--r--src/common/rsl.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/include/osmo-bts/rsl.h b/include/osmo-bts/rsl.h
index ddd756e8..06d58a25 100644
--- a/include/osmo-bts/rsl.h
+++ b/include/osmo-bts/rsl.h
@@ -37,6 +37,7 @@ int rsl_tx_ipac_dlcx_ind(struct gsm_lchan *lchan, uint8_t cause);
int rsl_tx_ccch_load_ind_pch(struct gsm_bts *bts, uint16_t paging_avail);
int rsl_tx_ccch_load_ind_rach(struct gsm_bts *bts, uint16_t total,
uint16_t busy, uint16_t access);
+int rsl_tx_delete_ind(struct gsm_bts *bts, const uint8_t *ia, uint8_t ia_len);
void cb_ts_disconnected(struct gsm_bts_trx_ts *ts);
void cb_ts_connected(struct gsm_bts_trx_ts *ts);
diff --git a/src/common/bts.c b/src/common/bts.c
index ae75b2c3..bec611cc 100644
--- a/src/common/bts.c
+++ b/src/common/bts.c
@@ -622,6 +622,8 @@ static void compact_agch_queue(struct gsm_bts *bts)
llist_del(&msg->list);
bts->agch_queue.length--;
+ rsl_tx_delete_ind(bts, (uint8_t *)imm_ass_cmd, msgb_l3len(msg));
+ rate_ctr_inc2(bts->ctrs, BTS_CTR_AGCH_DELETED);
msgb_free(msg);
bts->agch_queue.dropped_msgs++;
diff --git a/src/common/rsl.c b/src/common/rsl.c
index b5d0c2b0..5d30ca7c 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -427,7 +427,7 @@ int rsl_tx_ccch_load_ind_rach(struct gsm_bts *bts, uint16_t total,
}
/* 8.5.4 DELETE INDICATION */
-static int rsl_tx_delete_ind(struct gsm_bts *bts, const uint8_t *ia, uint8_t ia_len)
+int rsl_tx_delete_ind(struct gsm_bts *bts, const uint8_t *ia, uint8_t ia_len)
{
struct msgb *msg;