dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/34706?usp=email )
Change subject: pcuif_proto: drop support for PCUIF v10 ...................................................................... pcuif_proto: drop support for PCUIF v10 We now use PCUIF v11 in the TTCN3 tests exclusively and also osmo-bts and osmo-bsc only support PCUIF v11. There is no longer a need to maintain a backward compatibility to PCUIF v10 in osmo-pcu. Related: OS#5927 Change-Id: I68a3f59d5c960ae3a4fbd74f9d4a894295cb9ed8 --- M include/osmocom/pcu/pcuif_proto.h M src/bts.cpp M src/gprs_rlcmac.c M src/pcu_l1_if.cpp 4 files changed, 33 insertions(+), 111 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/06/34706/1 diff --git a/include/osmocom/pcu/pcuif_proto.h b/include/osmocom/pcu/pcuif_proto.h index 9df85d9..cfa422b 100644 --- a/include/osmocom/pcu/pcuif_proto.h +++ b/include/osmocom/pcu/pcuif_proto.h @@ -13,7 +13,7 @@ /* msg_type */ #define PCU_IF_MSG_DATA_REQ 0x00 /* send data to given channel */ -#define PCU_IF_MSG_DATA_CNF 0x01 /* confirm (e.g. transmission on PCH) */ +#define PCU_IF_MSG_DATA_CNF 0x01 /* (deprecated) */ #define PCU_IF_MSG_DATA_IND 0x02 /* receive data from given channel */ #define PCU_IF_MSG_SUSP_REQ 0x03 /* BTS forwards GPRS SUSP REQ to PCU */ #define PCU_IF_MSG_APP_INFO_REQ 0x04 /* BTS asks PCU to transmit APP INFO via PACCH */ @@ -35,8 +35,8 @@ /* sapi */ #define PCU_IF_SAPI_RACH 0x01 /* channel request on CCCH */ -#define PCU_IF_SAPI_AGCH 0x02 /* assignment on AGCH */ -#define PCU_IF_SAPI_PCH 0x03 /* paging/assignment on PCH */ +#define PCU_IF_SAPI_AGCH 0x02 /* (deprecated) */ +#define PCU_IF_SAPI_PCH 0x03 /* (deprecated) */ #define PCU_IF_SAPI_BCCH 0x04 /* SI on BCCH */ #define PCU_IF_SAPI_PDTCH 0x05 /* packet data/control/ccch block */ #define PCU_IF_SAPI_PRACH 0x06 /* packet random access channel */ @@ -297,7 +297,6 @@ union { struct gsm_pcu_if_data data_req; - struct gsm_pcu_if_data data_cnf; struct gsm_pcu_if_data_cnf data_cnf2; struct gsm_pcu_if_data data_ind; struct gsm_pcu_if_susp_req susp_req; diff --git a/src/bts.cpp b/src/bts.cpp index 50c21a3..6dffa2d 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -1033,10 +1033,7 @@ rip->burst_type); bts_do_rate_ctr_inc(bts, CTR_IMMEDIATE_ASSIGN_UL_TBF); if (plen >= 0) { - if (the_pcu->pcu_if_version >= 0x0b) - pcu_l1if_tx_agch2(bts, bv, plen, false, GSM_RESERVED_TMSI); - else - pcu_l1if_tx_agch(bts, bv, plen); + pcu_l1if_tx_agch2(bts, bv, plen, false, GSM_RESERVED_TMSI); rc = 0; } else { rc = plen; @@ -1051,10 +1048,7 @@ (uint8_t)osmo_tdef_get(bts->T_defs_bts, 3142, OSMO_TDEF_S, -1)); bts_do_rate_ctr_inc(bts, CTR_IMMEDIATE_ASSIGN_REJ); if (plen >= 0) { - if (the_pcu->pcu_if_version >= 0x0b) - pcu_l1if_tx_agch2(bts, bv, plen, false, GSM_RESERVED_TMSI); - else - pcu_l1if_tx_agch(bts, bv, plen); + pcu_l1if_tx_agch2(bts, bv, plen, false, GSM_RESERVED_TMSI); } bitvec_free(bv); /* rc was already properly set before goto */ @@ -1136,24 +1130,20 @@ if (plen >= 0) { bts_do_rate_ctr_inc(bts, CTR_IMMEDIATE_ASSIGN_DL_TBF); - if (the_pcu->pcu_if_version >= 0x0b) { - if (ms_imsi_is_valid(tbf->ms())) { - pcu_l1if_tx_pch2(bts, immediate_assignment, plen, true, tbf->imsi(), tbf->tlli()); - } else { - /* During GMM ATTACH REQUEST, the IMSI is not yet known to the PCU or SGSN. (It is - * requested after the GMM ATTACH REQUEST with the GMM IDENTITY REQUEST.) When the PCU - * has to assign a DL TBF but the IMSI is not known, then the IMMEDIATE ASSIGNMENT is - * sent on the AGCH. The reason for this is that without an IMSI we can not calculate - + the paging group, which would be necessary for transmission on PCH. Since the IMSI - * is usually only unknown during the GMM ATTACH REQUEST, we may assume that the MS - * is in non-DRX mode and hence it is listening on all CCCH blocks, including AGCH. - * - * See also: 3gpp TS 44.060, section 5.5.1.5 - * 3gpp TS 45.002, section 6.5.3, 6.5.6 */ - pcu_l1if_tx_agch2(bts, immediate_assignment, plen, true, tbf->tlli()); - } + if (ms_imsi_is_valid(tbf->ms())) { + pcu_l1if_tx_pch2(bts, immediate_assignment, plen, true, tbf->imsi(), tbf->tlli()); } else { - pcu_l1if_tx_pch(bts, immediate_assignment, plen, tbf->imsi()); + /* During GMM ATTACH REQUEST, the IMSI is not yet known to the PCU or SGSN. (It is + * requested after the GMM ATTACH REQUEST with the GMM IDENTITY REQUEST.) When the PCU + * has to assign a DL TBF but the IMSI is not known, then the IMMEDIATE ASSIGNMENT is + * sent on the AGCH. The reason for this is that without an IMSI we can not calculate + * the paging group, which would be necessary for transmission on PCH. Since the IMSI + * is usually only unknown during the GMM ATTACH REQUEST, we may assume that the MS + * is in non-DRX mode and hence it is listening on all CCCH blocks, including AGCH. + * + * See also: 3gpp TS 44.060, section 5.5.1.5 + * 3gpp TS 45.002, section 6.5.3, 6.5.6 */ + pcu_l1if_tx_agch2(bts, immediate_assignment, plen, true, tbf->tlli()); } } diff --git a/src/gprs_rlcmac.c b/src/gprs_rlcmac.c index d15445e..b2cbeca 100644 --- a/src/gprs_rlcmac.c +++ b/src/gprs_rlcmac.c @@ -44,11 +44,7 @@ } bts_do_rate_ctr_inc(bts, CTR_PCH_REQUESTS); - if (the_pcu->pcu_if_version >= 0x0b) - pcu_l1if_tx_pch2(bts, paging_request, plen, false, imsi, GSM_RESERVED_TMSI); - else - pcu_l1if_tx_pch(bts, paging_request, plen, imsi); - + pcu_l1if_tx_pch2(bts, paging_request, plen, false, imsi, GSM_RESERVED_TMSI); bitvec_free(paging_request); return 0; diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index 4fcec31..a615d2e 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -249,22 +249,6 @@ pcu_tx_data_req(bts, trx, ts, PCU_IF_SAPI_PTCCH, arfcn, fn, block_nr, data, data_len); } -void pcu_l1if_tx_agch(struct gprs_rlcmac_bts *bts, bitvec *block, int plen) -{ - /* TODO: When PCUIF v.11 has become mainline, we will use pcu_l1if_tx_agch2() exclusively. - * This will make this function obsolote, so we can remove it. */ - uint8_t data[GSM_MACBLOCK_LEN]; /* prefix PLEN */ - - /* FIXME: why does OpenBTS has no PLEN and no fill in message? */ - bitvec_pack(block, data + 1); - data[0] = (plen << 2) | 0x01; - - if (the_pcu->gsmtap_categ_mask & (1 << PCU_GSMTAP_C_DL_AGCH)) - gsmtap_send(the_pcu->gsmtap, 0, 0, GSMTAP_CHANNEL_AGCH, 0, 0, 0, 0, data, GSM_MACBLOCK_LEN); - - pcu_tx_data_req(bts, 0, 0, PCU_IF_SAPI_AGCH, 0, 0, 0, data, sizeof(data)); -} - /* Send a MAC block via the access grant channel. This will (obviously) only work for MAC blocks that contain * an IMMEDIATE ASSIGNMENT. In case the confirm flag is set, the receiving end is required to send a confirmation * back when the IMMEDIATE ASSIGNMENT has been sent. */ @@ -283,43 +267,6 @@ pcu_tx_data_req(bts, 0, 0, PCU_IF_SAPI_AGCH_2, 0, 0, 0, (uint8_t*)&agch, sizeof(agch)); } -#define IMSI_DIGITS_FOR_PAGING 3 -/* Send a MAC block via the paging channel. (See also comment below) */ -void pcu_l1if_tx_pch(struct gprs_rlcmac_bts *bts, bitvec *block, int plen, const char *imsi) -{ - /* TODO: When PCUIF v.11 has become mainline, we will use pcu_l1if_tx_pch2() exclusively. - * This will make this function obsolote, so we can remove it. */ - - uint8_t data[IMSI_DIGITS_FOR_PAGING + GSM_MACBLOCK_LEN]; - - /* prepend last three IMSI digits (if present) from which BTS/BSC will calculate the paging group */ - if (imsi && strlen(imsi) >= IMSI_DIGITS_FOR_PAGING) - memcpy(data, imsi + strlen(imsi) - IMSI_DIGITS_FOR_PAGING, IMSI_DIGITS_FOR_PAGING); - 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_pch2() 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; - bitvec_pack(block, data + IMSI_DIGITS_FOR_PAGING + 1); - - if (the_pcu->gsmtap_categ_mask & (1 << PCU_GSMTAP_C_DL_PCH)) - gsmtap_send(the_pcu->gsmtap, 0, 0, GSMTAP_CHANNEL_PCH, 0, 0, 0, 0, - data + IMSI_DIGITS_FOR_PAGING, GSM_MACBLOCK_LEN); - - pcu_tx_data_req(bts, 0, 0, PCU_IF_SAPI_PCH, 0, 0, 0, data, sizeof(data)); -} - /* Send a MAC block via the paging channel. This will (obviously) only work for MAC blocks that contain an * IMMEDIATE ASSIGNMENT or a PAGING COMMAND message. In case the MAC block contains an IMMEDIATE ASSIGNMENT * message, the receiving end is required to confirm when the IMMEDIATE ASSIGNMENT has been sent. */ @@ -556,26 +503,6 @@ return rc; } -static int pcu_rx_data_cnf(struct gprs_rlcmac_bts *bts, struct gsm_pcu_if_data *data_cnf) -{ - int rc = 0; - - LOGP(DL1IF, LOGL_DEBUG, "Data confirm received: sapi=%d\n", data_cnf->sapi); - - switch (data_cnf->sapi) { - case PCU_IF_SAPI_PCH: - if (data_cnf->data[2] == GSM48_MT_RR_IMM_ASS) - bts_rcv_imm_ass_cnf(bts, data_cnf->data, GSM_RESERVED_TMSI); - break; - default: - LOGP(DL1IF, LOGL_ERROR, "Received PCU data confirm with " - "unsupported sapi %d\n", data_cnf->sapi); - rc = -EINVAL; - } - - return rc; -} - static int pcu_rx_data_cnf2(struct gprs_rlcmac_bts *bts, struct gsm_pcu_if_data_cnf *data_cnf) { int rc = 0; @@ -1294,10 +1221,6 @@ CHECK_IF_MSG_SIZE(pcu_prim_length, pcu_prim->u.data_ind); rc = pcu_rx_data_ind(bts, &pcu_prim->u.data_ind); break; - case PCU_IF_MSG_DATA_CNF: - CHECK_IF_MSG_SIZE(pcu_prim_length, pcu_prim->u.data_cnf); - rc = pcu_rx_data_cnf(bts, &pcu_prim->u.data_cnf); - break; case PCU_IF_MSG_DATA_CNF_2: CHECK_IF_MSG_SIZE(pcu_prim_length, pcu_prim->u.data_cnf2); rc = pcu_rx_data_cnf2(bts, &pcu_prim->u.data_cnf2); -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/34706?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: I68a3f59d5c960ae3a4fbd74f9d4a894295cb9ed8 Gerrit-Change-Number: 34706 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pma...@sysmocom.de> Gerrit-MessageType: newchange