diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bts.cpp | 1 | ||||
-rw-r--r-- | src/bts.h | 3 | ||||
-rw-r--r-- | src/pcu_vty.c | 8 | ||||
-rw-r--r-- | src/tbf.cpp | 14 |
4 files changed, 21 insertions, 5 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index eb07918..1c10596 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -57,6 +57,7 @@ static const struct rate_ctr_desc bts_ctr_description[] = { { "tbf.reused", "TBF Reused "}, { "tbf.alloc.algo-a", "TBF Alloc Algo A "}, { "tbf.alloc.algo-b", "TBF Alloc Algo B "}, + { "tbf.failed.egprs-only", "TBF Failed EGPRS-only"}, { "rlc.sent", "RLC Sent "}, { "rlc.resent", "RLC Resent "}, { "rlc.restarted", "RLC Restarted "}, @@ -215,6 +215,7 @@ public: CTR_TBF_REUSED, CTR_TBF_ALLOC_ALGO_A, CTR_TBF_ALLOC_ALGO_B, + CTR_TBF_FAILED_EGPRS_ONLY, CTR_RLC_SENT, CTR_RLC_RESENT, CTR_RLC_RESTARTED, @@ -288,6 +289,7 @@ public: void tbf_reused(); void tbf_alloc_algo_a(); void tbf_alloc_algo_b(); + void tbf_failed_egprs_only(); void rlc_sent(); void rlc_resent(); void rlc_restarted(); @@ -425,6 +427,7 @@ CREATE_COUNT_INLINE(tbf_ul_freed, CTR_TBF_UL_FREED) CREATE_COUNT_INLINE(tbf_reused, CTR_TBF_REUSED) CREATE_COUNT_INLINE(tbf_alloc_algo_a, CTR_TBF_ALLOC_ALGO_A) CREATE_COUNT_INLINE(tbf_alloc_algo_b, CTR_TBF_ALLOC_ALGO_B) +CREATE_COUNT_INLINE(tbf_failed_egprs_only, CTR_TBF_FAILED_EGPRS_ONLY) CREATE_COUNT_INLINE(rlc_sent, CTR_RLC_SENT) CREATE_COUNT_INLINE(rlc_resent, CTR_RLC_RESENT) CREATE_COUNT_INLINE(rlc_restarted, CTR_RLC_RESTARTED) diff --git a/src/pcu_vty.c b/src/pcu_vty.c index fe3009b..97be4c7 100644 --- a/src/pcu_vty.c +++ b/src/pcu_vty.c @@ -55,9 +55,7 @@ static int config_write_pcu(struct vty *vty) vty_out(vty, "pcu%s", VTY_NEWLINE); if (bts->egprs_enabled) - vty_out(vty, " egprs%s", VTY_NEWLINE); - else - vty_out(vty, " no egprs%s", VTY_NEWLINE); + vty_out(vty, " egprs only%s", VTY_NEWLINE); vty_out(vty, " flow-control-interval %d%s", bts->fc_interval, VTY_NEWLINE); @@ -171,8 +169,8 @@ DEFUN(cfg_pcu, DEFUN(cfg_pcu_egprs, cfg_pcu_egprs_cmd, - "egprs", - EGPRS_STR) + "egprs only", + EGPRS_STR "Use EGPRS and disable plain GPRS\n") { struct gprs_rlcmac_bts *bts = bts_main_data(); diff --git a/src/tbf.cpp b/src/tbf.cpp index 1f0576a..db63a08 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -609,6 +609,13 @@ struct gprs_rlcmac_ul_tbf *tbf_alloc_ul_tbf(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_ul_tbf *tbf; int rc; + if (egprs_ms_class == 0 && bts->egprs_enabled) { + LOGP(DRLCMAC, LOGL_NOTICE, + "Not accepting non-EGPRS phone in EGPRS-only mode\n"); + bts->bts->tbf_failed_egprs_only(); + return NULL; + } + LOGP(DRLCMAC, LOGL_DEBUG, "********** TBF starts here **********\n"); LOGP(DRLCMAC, LOGL_INFO, "Allocating %s TBF: MS_CLASS=%d/%d\n", "UL", ms_class, egprs_ms_class); @@ -679,6 +686,13 @@ struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_dl_tbf *tbf; int rc; + if (egprs_ms_class == 0 && bts->egprs_enabled) { + LOGP(DRLCMAC, LOGL_NOTICE, + "Not accepting non-EGPRS phone in EGPRS-only mode\n"); + bts->bts->tbf_failed_egprs_only(); + return NULL; + } + LOGP(DRLCMAC, LOGL_DEBUG, "********** TBF starts here **********\n"); LOGP(DRLCMAC, LOGL_INFO, "Allocating %s TBF: MS_CLASS=%d/%d\n", "DL", ms_class, egprs_ms_class); |