aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bts.cpp7
-rw-r--r--src/bts.h2
-rw-r--r--src/pcu_l1_if.cpp4
-rw-r--r--src/pdch.cpp5
-rw-r--r--src/pdch.h2
5 files changed, 11 insertions, 9 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index c8b63750..71a2f06d 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -38,6 +38,7 @@ extern "C" {
#include <osmocom/core/stats.h>
#include <osmocom/gsm/protocol/gsm_04_08.h>
#include <osmocom/gsm/gsm_utils.h>
+ #include <osmocom/gsm/gsm48.h>
#include <osmocom/core/gsmtap_util.h>
#include <osmocom/core/application.h>
#include <osmocom/core/bitvec.h>
@@ -354,7 +355,7 @@ void BTS::set_current_block_frame_number(int fn, unsigned max_delay)
m_pollController.expireTimedout(fn, max_delay);
}
-int BTS::add_paging(uint8_t chan_needed, uint8_t *identity_lv)
+int BTS::add_paging(uint8_t chan_needed, const uint8_t *mi, uint8_t mi_len)
{
uint8_t l, trx, ts, any_tbf = 0;
struct gprs_rlcmac_tbf *tbf;
@@ -370,7 +371,7 @@ int BTS::add_paging(uint8_t chan_needed, uint8_t *identity_lv)
LOGP(DRLCMAC, LOGL_INFO, "Add RR paging: chan-needed=%d MI=%s\n",
- chan_needed, osmo_hexdump(identity_lv + 1, identity_lv[0]));
+ chan_needed, osmo_mi_name(mi, mi_len));
/* collect slots to page
* Mark slots for every TBF, but only mark one of it.
@@ -414,7 +415,7 @@ int BTS::add_paging(uint8_t chan_needed, uint8_t *identity_lv)
for (ts = 0; ts < 8; ts++) {
if ((slot_mask[trx] & (1 << ts))) {
/* schedule */
- if (!m_bts.trx[trx].pdch[ts].add_paging(chan_needed, identity_lv))
+ if (!m_bts.trx[trx].pdch[ts].add_paging(chan_needed, mi, mi_len))
return -ENOMEM;
LOGP(DRLCMAC, LOGL_INFO, "Paging on PACCH of TRX=%d TS=%d\n", trx, ts);
diff --git a/src/bts.h b/src/bts.h
index 7ef5a3f5..0eaab854 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -290,7 +290,7 @@ public:
int current_frame_number() const;
/** add paging to paging queue(s) */
- int add_paging(uint8_t chan_needed, uint8_t *identity_lv);
+ int add_paging(uint8_t chan_needed, const uint8_t *mi, uint8_t mi_len);
gprs_rlcmac_dl_tbf *dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);
gprs_rlcmac_ul_tbf *ul_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts);
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 98e697d8..bac0e56a 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -644,8 +644,8 @@ static int pcu_rx_pag_req(struct gsm_pcu_if_pag_req *pag_req)
return -EINVAL;
}
- return BTS::main_bts()->add_paging(pag_req->chan_needed,
- pag_req->identity_lv);
+ return BTS::main_bts()->add_paging(pag_req->chan_needed, &pag_req->identity_lv[1],
+ pag_req->identity_lv[0]);
}
static int pcu_rx_susp_req(struct gsm_pcu_if_susp_req *susp_req)
diff --git a/src/pdch.cpp b/src/pdch.cpp
index da221f48..e15af2c4 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -251,14 +251,15 @@ continue_next:
return msg;
}
-bool gprs_rlcmac_pdch::add_paging(uint8_t chan_needed, uint8_t *identity_lv)
+bool gprs_rlcmac_pdch::add_paging(uint8_t chan_needed, const uint8_t *mi, uint8_t mi_len)
{
struct gprs_rlcmac_paging *pag = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_paging);
if (!pag)
return false;
pag->chan_needed = chan_needed;
- memcpy(pag->identity_lv, identity_lv, identity_lv[0] + 1);
+ pag->identity_lv[0] = mi_len;
+ memcpy(&pag->identity_lv[1], mi, mi_len);
llist_add(&pag->list, &paging_list);
diff --git a/src/pdch.h b/src/pdch.h
index d55f58e1..821fb901 100644
--- a/src/pdch.h
+++ b/src/pdch.h
@@ -48,7 +48,7 @@ struct gprs_rlcmac_pdch {
struct gprs_rlcmac_paging *dequeue_paging();
struct msgb *packet_paging_request();
- bool add_paging(uint8_t chan_needed, uint8_t *identity_lv);
+ bool add_paging(uint8_t chan_needed, const uint8_t *mi, uint8_t mi_len);
void free_resources();