diff options
-rw-r--r-- | src/bts.cpp | 12 | ||||
-rw-r--r-- | src/bts.h | 12 | ||||
-rw-r--r-- | src/tbf.cpp | 2 | ||||
-rw-r--r-- | src/tbf_dl.cpp | 1 |
4 files changed, 26 insertions, 1 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index fe3368d..603da56 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -66,6 +66,7 @@ static const struct rate_ctr_desc bts_ctr_description[] = { { "rlc.restarted", "RLC Restarted "}, { "rlc.stalled", "RLC Stalled "}, { "rlc.nacked", "RLC Nacked "}, + { "rlc.final_block_resent", "RLC Final Blk resent "}, { "rlc.ass.timedout", "RLC Assign Timeout "}, { "rlc.ass.failed", "RLC Assign Failed "}, { "rlc.ack.timedout", "RLC Ack Timeout "}, @@ -90,8 +91,11 @@ static const struct rate_ctr_desc bts_ctr_description[] = { { "rach.requests", "RACH requests "}, { "11bit_rach.requests", "11BIT_RACH requests "}, { "immediate.assignment_UL", "Immediate Assign UL "}, + { "immediate.assignment_rej", "Immediate Assign Rej "}, { "immediate.assignment_DL", "Immediate Assign DL "}, + { "channel.request_description","Channel Request Desc "}, { "pkt.ul_assignment", "Packet UL Assignment "}, + { "pkt.access_reject", "Packet Access Reject "}, { "pkt.dl_assignment", "Packet DL Assignment "}, { "ul.control", "UL control Block "}, { "ul.assignment_poll_timeout", "UL Assign Timeout "}, @@ -600,10 +604,12 @@ int BTS::rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta, uint8_t is_11bit, "2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b"); - if (failure) + if (failure) { plen = Encoding::write_immediate_assignment_reject( immediate_assignment, ra, Fn, burst_type); + immediate_assignment_reject(); + } else { LOGP(DRLCMAC, LOGL_DEBUG, " - TRX=%d (%d) TS=%d TA=%d TSC=%d TFI=%d USF=%d\n", @@ -1126,6 +1132,8 @@ void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_n /* check for channel request */ if (ack_nack->Exist_Channel_Request_Description) { + bts()->channel_request_description(); + /* This call will register the new TBF with the MS on success */ gprs_rlcmac_ul_tbf *ul_tbf = tbf_alloc_ul(bts_data(), tbf->trx->trx_no, @@ -1235,6 +1243,8 @@ void gprs_rlcmac_pdch::rcv_control_egprs_dl_ack_nack(EGPRS_PD_AckNack_t *ack_nac /* check for channel request */ if (ack_nack->Exist_ChannelRequestDescription) { + bts()->channel_request_description(); + /* This call will register the new TBF with the MS on success */ gprs_rlcmac_ul_tbf *ul_tbf = tbf_alloc_ul(bts_data(), tbf->trx->trx_no, @@ -243,6 +243,7 @@ public: CTR_RLC_RESTARTED, CTR_RLC_STALLED, CTR_RLC_NACKED, + CTR_RLC_FINAL_BLOCK_RESENT, CTR_RLC_ASS_TIMEDOUT, CTR_RLC_ASS_FAILED, CTR_RLC_ACK_TIMEDOUT, @@ -267,8 +268,11 @@ public: CTR_RACH_REQUESTS, CTR_11BIT_RACH_REQUESTS, CTR_IMMEDIATE_ASSIGN_UL_TBF, + CTR_IMMEDIATE_ASSIGN_REJ, CTR_IMMEDIATE_ASSIGN_DL_TBF, + CTR_CHANNEL_REQUEST_DESCRIPTION, CTR_PKT_UL_ASSIGNMENT, + CTR_PKT_ACCESS_REJ, CTR_PKT_DL_ASSIGNMENT, CTR_RLC_RECV_CONTROL, CTR_PUA_POLL_TIMEDOUT, @@ -370,6 +374,7 @@ public: void rlc_restarted(); void rlc_stalled(); void rlc_nacked(); + void rlc_final_block_resent(); void rlc_ass_timedout(); void rlc_ass_failed(); void rlc_ack_timedout(); @@ -394,8 +399,11 @@ public: void rach_frame(); void rach_frame_11bit(); void immediate_assignment_ul_tbf(); + void immediate_assignment_reject(); void immediate_assignment_dl_tbf(); + void channel_request_description(); void pkt_ul_assignment(); + void pkt_access_reject(); void pkt_dl_assignemnt(); void rlc_rcvd_control(); void pua_poll_timedout(); @@ -563,6 +571,7 @@ CREATE_COUNT_INLINE(rlc_resent, CTR_RLC_RESENT) CREATE_COUNT_INLINE(rlc_restarted, CTR_RLC_RESTARTED) CREATE_COUNT_INLINE(rlc_stalled, CTR_RLC_STALLED) CREATE_COUNT_INLINE(rlc_nacked, CTR_RLC_NACKED) +CREATE_COUNT_INLINE(rlc_final_block_resent, CTR_RLC_FINAL_BLOCK_RESENT); CREATE_COUNT_INLINE(rlc_ass_timedout, CTR_RLC_ASS_TIMEDOUT); CREATE_COUNT_INLINE(rlc_ass_failed, CTR_RLC_ASS_FAILED); CREATE_COUNT_INLINE(rlc_ack_timedout, CTR_RLC_ACK_TIMEDOUT); @@ -587,8 +596,11 @@ CREATE_COUNT_ADD_INLINE(llc_ul_bytes, CTR_LLC_UL_BYTES); CREATE_COUNT_INLINE(rach_frame, CTR_RACH_REQUESTS); CREATE_COUNT_INLINE(rach_frame_11bit, CTR_11BIT_RACH_REQUESTS); CREATE_COUNT_INLINE(immediate_assignment_ul_tbf, CTR_IMMEDIATE_ASSIGN_UL_TBF); +CREATE_COUNT_INLINE(immediate_assignment_reject, CTR_IMMEDIATE_ASSIGN_REJ); CREATE_COUNT_INLINE(immediate_assignment_dl_tbf, CTR_IMMEDIATE_ASSIGN_DL_TBF); +CREATE_COUNT_INLINE(channel_request_description, CTR_CHANNEL_REQUEST_DESCRIPTION); CREATE_COUNT_INLINE(pkt_ul_assignment, CTR_PKT_UL_ASSIGNMENT); +CREATE_COUNT_INLINE(pkt_access_reject, CTR_PKT_ACCESS_REJ); CREATE_COUNT_INLINE(pkt_dl_assignemnt, CTR_PKT_DL_ASSIGNMENT); CREATE_COUNT_INLINE(rlc_rcvd_control, CTR_RLC_RECV_CONTROL); CREATE_COUNT_INLINE(pua_poll_timedout, CTR_PUA_POLL_TIMEDOUT); diff --git a/src/tbf.cpp b/src/tbf.cpp index 072d0af..25209e4 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -1037,6 +1037,8 @@ struct msgb *gprs_rlcmac_tbf::create_packet_access_reject() Encoding::write_packet_access_reject( packet_access_rej, tlli()); + bts->pkt_access_reject(); + bitvec_pack(packet_access_rej, msgb_put(msg, 23)); bitvec_free(packet_access_rej); diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp index 185521d..c6f3945 100644 --- a/src/tbf_dl.cpp +++ b/src/tbf_dl.cpp @@ -454,6 +454,7 @@ int gprs_rlcmac_dl_tbf::take_next_bsn(uint32_t fn, LOGP(DRLCMACDL, LOGL_DEBUG, "- Nothing else to send, Re-transmit final block!\n"); bsn = m_window.v_s_mod(-1); + bts->rlc_final_block_resent(); bts->rlc_resent(); } |