diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-07-14 19:22:09 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2023-07-14 19:41:54 +0200 |
commit | b8f79e85cb514d9dedc15ff2d75fc5f335a0902d (patch) | |
tree | a8605b235ef707dce934cf73629536180e80479b | |
parent | eca828b8f967aa6eabf09aeb9b1bc46c35c8d808 (diff) |
pcu_l1_if: Document tx_pch empty IMSI scenario
Related: OS#6097
Change-Id: I327ca0e0f53be2d9b2a0705fe4de600229bdc5f9
-rw-r--r-- | src/pcu_l1_if.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index a2569624..f42a3d40 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -275,6 +275,16 @@ void pcu_l1if_tx_pch(struct gprs_rlcmac_bts *bts, bitvec *block, int plen, const else memset(data, '0', IMSI_DIGITS_FOR_PAGING); + /* OS#6097: if strlen(imsi) == 0: We assume the MS is in non-DRX + * mode (TS 44.060 5.5.1.5) and hence it is listening on all CCCH blocks + * (TS 45.002 6.5.3, 6.5.6). + * Hence, pgroup 000 is taken "randomly" to send it over it. This of + * course not optimal since it can actually be sent on any CCCH blocks, + * so we are delaying the ImmAss for no good reason. But anyway, + * pcu_l1if_tx_pch() is deprecated and pcu_l1if_tx_pch_dt() should be + * used instead, which doesn't suffer from this problem. + */ + /* block provided by upper layer comes without first byte (plen), prepend it manually: */ OSMO_ASSERT(sizeof(data) >= IMSI_DIGITS_FOR_PAGING + 1 + block->data_len); data[IMSI_DIGITS_FOR_PAGING] = (plen << 2) | 0x01; @@ -297,6 +307,10 @@ void pcu_l1if_tx_pch_dt(struct gprs_rlcmac_bts *bts, struct bitvec *block, int p pch_dt.tlli = tlli; if (imsi) OSMO_STRLCPY_ARRAY(pch_dt.imsi, imsi); + /* OS#6097: if strlen(pch_dt.imsi) == 0: We assume the MS is in non-DRX + * mode (TS 44.060 5.5.1.5) and hence it is listening on all CCCH blocks + * (TS 45.002 6.5.3, 6.5.6). + */ pch_dt.data[0] = (plen << 2) | 0x01; bitvec_pack(block, pch_dt.data + 1); |