This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
pespin gerrit-no-reply at lists.osmocom.orgpespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/20992 ) Change subject: Take into account BTS supported (M)CS values when retrieving the maximum ...................................................................... Take into account BTS supported (M)CS values when retrieving the maximum Change-Id: I2d3a8bbae2f9887400ce56d2f8303ea30abaecfa --- M src/bts.cpp M src/bts.h M src/gprs_bssgp_pcu.cpp M src/gprs_ms.cpp 4 files changed, 78 insertions(+), 25 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/92/20992/1 diff --git a/src/bts.cpp b/src/bts.cpp index be957fa..79bb9e6 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -1005,6 +1005,61 @@ bitvec_free(immediate_assignment); } +/* return maximum DL CS supported by BTS and allowed by VTY */ +uint8_t BTS::max_cs_dl(void) const +{ + int i; + if (!m_bts.max_cs_dl) + return 0; + for (i = m_bts.max_cs_dl - 1; i >= 0; i--) { + if (m_bts.cs_supported[i]) { + return i + 1; + } + } + return 0; +} + +/* return maximum UL CS supported by BTS and allowed by VTY */ +uint8_t BTS::max_cs_ul(void) const +{ + int i; + if (!m_bts.max_cs_ul) + return 0; + for (i = m_bts.max_cs_ul - 1; i >= 0; i--) { + if (m_bts.cs_supported[i]) { + return i + 1; + } + } + return 0; +} + +/* return maximum DL MCS supported by BTS and allowed by VTY */ +uint8_t BTS::max_mcs_dl(void) const +{ + int i; + if (!m_bts.max_mcs_dl) + return 0; + for (i = m_bts.max_mcs_dl - 1; i >= 0; i--) { + if (m_bts.mcs_supported[i]) { + return i + 1; + } + } + return 0; +} + +/* return maximum UL MCS supported by BTS and allowed by VTY */ +uint8_t BTS::max_mcs_ul(void) const +{ + int i; + if (!m_bts.max_mcs_ul) + return 0; + for (i = m_bts.max_mcs_ul - 1; i >= 0; i--) { + if (m_bts.mcs_supported[i]) { + return i + 1; + } + } + return 0; +} GprsMs *BTS::ms_alloc(uint8_t ms_class, uint8_t egprs_ms_class) { diff --git a/src/bts.h b/src/bts.h index 9bf80e1..edb5d6e 100644 --- a/src/bts.h +++ b/src/bts.h @@ -329,6 +329,11 @@ void snd_dl_ass(gprs_rlcmac_tbf *tbf, bool poll, uint16_t pgroup); + uint8_t max_cs_dl(void) const; + uint8_t max_cs_ul(void) const; + uint8_t max_mcs_dl(void) const; + uint8_t max_mcs_ul(void) const; + GprsMsStorage &ms_store(); GprsMs *ms_by_tlli(uint32_t tlli, uint32_t old_tlli = 0); GprsMs *ms_by_imsi(const char *imsi); diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp index d36d96d..a788ac0 100644 --- a/src/gprs_bssgp_pcu.cpp +++ b/src/gprs_bssgp_pcu.cpp @@ -750,8 +750,8 @@ } } } - } else if (bts->max_mcs_dl) { - num = bts->max_mcs_dl; + } else if (bts->bts->max_mcs_dl()) { + num = bts->bts->max_mcs_dl(); } else { num = 9; } @@ -770,8 +770,8 @@ } } } - } else if (bts->max_cs_dl) { - num = bts->max_cs_dl; + } else if (bts->bts->max_cs_dl()) { + num = bts->bts->max_cs_dl(); } else { num = 4; } diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp index efd1845..b295686 100644 --- a/src/gprs_ms.cpp +++ b/src/gprs_ms.cpp @@ -541,9 +541,8 @@ m_egprs_ms_class = ms_class_; - struct gprs_rlcmac_bts *bts = m_bts->bts_data(); - if (mcs_is_edge_gmsk(mcs_get_egprs_by_num(bts->max_mcs_ul)) && - mcs_is_edge_gmsk(mcs_get_egprs_by_num(bts->max_mcs_dl)) && + if (mcs_is_edge_gmsk(mcs_get_egprs_by_num(m_bts->max_mcs_ul())) && + mcs_is_edge_gmsk(mcs_get_egprs_by_num(m_bts->max_mcs_dl())) && mode() != EGPRS) { set_mode(EGPRS_GMSK); @@ -609,26 +608,23 @@ enum CodingScheme GprsMs::max_cs_ul() const { - struct gprs_rlcmac_bts *bts_data; - OSMO_ASSERT(m_bts != NULL); - bts_data = m_bts->bts_data(); if (mcs_is_gprs(m_current_cs_ul)) { - if (!bts_data->max_cs_ul) { + if (!m_bts->max_cs_ul()) { return CS4; } - return mcs_get_gprs_by_num(bts_data->max_cs_ul); + return mcs_get_gprs_by_num(m_bts->max_cs_ul()); } if (!mcs_is_edge(m_current_cs_ul)) return UNKNOWN; - if (bts_data->max_mcs_ul) - return mcs_get_egprs_by_num(bts_data->max_mcs_ul); - else if (bts_data->max_cs_ul) - return mcs_get_gprs_by_num(bts_data->max_cs_ul); + if (m_bts->max_mcs_ul()) + return mcs_get_egprs_by_num(m_bts->max_mcs_ul()); + else if (m_bts->max_cs_ul()) + return mcs_get_gprs_by_num(m_bts->max_cs_ul()); return MCS4; } @@ -640,26 +636,23 @@ enum CodingScheme GprsMs::max_cs_dl() const { - struct gprs_rlcmac_bts *bts_data; - OSMO_ASSERT(m_bts != NULL); - bts_data = m_bts->bts_data(); if (mcs_is_gprs(m_current_cs_dl)) { - if (!bts_data->max_cs_dl) { + if (!m_bts->max_cs_dl()) { return CS4; } - return mcs_get_gprs_by_num(bts_data->max_cs_dl); + return mcs_get_gprs_by_num(m_bts->max_cs_dl()); } if (!mcs_is_edge(m_current_cs_dl)) return UNKNOWN; - if (bts_data->max_mcs_dl) - return mcs_get_egprs_by_num(bts_data->max_mcs_dl); - else if (bts_data->max_cs_dl) - return mcs_get_gprs_by_num(bts_data->max_cs_dl); + if (m_bts->max_mcs_dl()) + return mcs_get_egprs_by_num(m_bts->max_mcs_dl()); + else if (m_bts->max_cs_dl()) + return mcs_get_gprs_by_num(m_bts->max_cs_dl()); return MCS4; } -- To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/20992 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-pcu Gerrit-Branch: master Gerrit-Change-Id: I2d3a8bbae2f9887400ce56d2f8303ea30abaecfa Gerrit-Change-Number: 20992 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201030/c3a4acd2/attachment.htm>