diff options
author | Harald Welte <laforge@gnumonks.org> | 2016-11-17 20:54:04 +0100 |
---|---|---|
committer | Alexander Couzens <lynxis@fe80.eu> | 2017-03-23 02:10:21 +0100 |
commit | baaf3e242ecfedf43511ec9d11336d9f2f04ed2e (patch) | |
tree | d3b150a838bf0b87f3f803a1896efdda5005367d | |
parent | f7e9a349efde8987a7da48fb5e331199ba3bb21f (diff) |
RBS2000 RSL: Support for sending RSL PAGING CMD for GPRS
Change-Id: I66541f9b20e7fd67fbec329283fc3c821c970a56
-rw-r--r-- | openbsc/include/openbsc/abis_rsl.h | 3 | ||||
-rw-r--r-- | openbsc/src/libbsc/abis_rsl.c | 7 | ||||
-rw-r--r-- | openbsc/src/libbsc/bsc_api.c | 2 |
3 files changed, 9 insertions, 3 deletions
diff --git a/openbsc/include/openbsc/abis_rsl.h b/openbsc/include/openbsc/abis_rsl.h index 758c5557a..692b464e0 100644 --- a/openbsc/include/openbsc/abis_rsl.h +++ b/openbsc/include/openbsc/abis_rsl.h @@ -22,6 +22,7 @@ #ifndef _RSL_H #define _RSL_H +#include <stdbool.h> #include <osmocom/gsm/protocol/gsm_08_58.h> #include <osmocom/gsm/gsm_utils.h> @@ -49,7 +50,7 @@ int rsl_chan_activate_lchan(struct gsm_lchan *lchan, uint8_t act_type, int rsl_chan_mode_modify_req(struct gsm_lchan *ts); int rsl_encryption_cmd(struct msgb *msg); int rsl_paging_cmd(struct gsm_bts *bts, uint8_t paging_group, uint8_t len, - uint8_t *ms_ident, uint8_t chan_needed); + uint8_t *ms_ident, uint8_t chan_needed, bool is_gprs); int rsl_imm_assign_cmd(struct gsm_bts *bts, uint8_t len, uint8_t *val); int rsl_data_request(struct msgb *msg, uint8_t link_id); diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c index 26cafc28e..91cbd46e4 100644 --- a/openbsc/src/libbsc/abis_rsl.c +++ b/openbsc/src/libbsc/abis_rsl.c @@ -1007,7 +1007,7 @@ static int rsl_rx_rf_chan_rel_ack(struct gsm_lchan *lchan) } int rsl_paging_cmd(struct gsm_bts *bts, uint8_t paging_group, uint8_t len, - uint8_t *ms_ident, uint8_t chan_needed) + uint8_t *ms_ident, uint8_t chan_needed, bool is_gprs) { struct abis_rsl_dchan_hdr *dh; struct msgb *msg = rsl_msgb_alloc(); @@ -1020,6 +1020,11 @@ int rsl_paging_cmd(struct gsm_bts *bts, uint8_t paging_group, uint8_t len, msgb_tlv_put(msg, RSL_IE_MS_IDENTITY, len-2, ms_ident+2); msgb_tv_put(msg, RSL_IE_CHAN_NEEDED, chan_needed); + /* Ericsson wants to have this IE in case a paging message + * relates to packet paging */ + if (bts->type == GSM_BTS_TYPE_RBS2000 && is_gprs) + msgb_tv_put(msg, RSL_IE_ERIC_PACKET_PAG_IND, 0); + msg->dst = bts->c0->rsl_link; return abis_rsl_sendmsg(msg); diff --git a/openbsc/src/libbsc/bsc_api.c b/openbsc/src/libbsc/bsc_api.c index 54978e50c..253326f71 100644 --- a/openbsc/src/libbsc/bsc_api.c +++ b/openbsc/src/libbsc/bsc_api.c @@ -419,7 +419,7 @@ error: int gsm0808_page(struct gsm_bts *bts, unsigned int page_group, unsigned int mi_len, uint8_t *mi, int chan_type) { - return rsl_paging_cmd(bts, page_group, mi_len, mi, chan_type); + return rsl_paging_cmd(bts, page_group, mi_len, mi, chan_type, false); } static void handle_ass_compl(struct gsm_subscriber_connection *conn, |