Split identity_lv param into mi+mi_len

It's not really needed to have those together in some function calls,
and makes it more difficult to follow the code. Furthermore, new callers
not having content already aligned (len+value) will be using these
functions in forthcoming commits.

Change-Id: Ifb9d3997bfb74b35366c3d1bc51ce458f19abf16
This commit is contained in:
Pau Espin 2019-12-23 13:19:25 +01:00 committed by laforge
parent db12f254ce
commit fbfab297ee
5 changed files with 11 additions and 9 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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)

View File

@ -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);

View File

@ -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();