diff options
Diffstat (limited to 'src/pdch.cpp')
-rw-r--r-- | src/pdch.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/pdch.cpp b/src/pdch.cpp index 2028ba20..787208c2 100644 --- a/src/pdch.cpp +++ b/src/pdch.cpp @@ -47,6 +47,7 @@ extern "C" { #include "coding_scheme.h" #include "gsm_rlcmac.h" +#include "nacc_fsm.h" } #include <errno.h> @@ -394,6 +395,19 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet, return; } + if (ms->nacc && ms->nacc->fi->state == NACC_ST_WAIT_CELL_CHG_CONTINUE_ACK && + ms->nacc->continue_poll_fn == fn && ms->nacc->continue_poll_ts == ts_no) { + osmo_fsm_inst_dispatch(ms->nacc->fi, NACC_EV_RX_CELL_CHG_CONTINUE_ACK, NULL); + /* Don't assume MS is no longer reachable (hence don't free) after this: TS 44.060 + * "When the mobile station receives the PACKET CELL CHANGE ORDER + * or the PACKET CELL CHANGE CONTINUE message the mobile station + * shall transmit a PACKET CONTROL ACKNOWLEDGMENT message in the + * specified uplink radio block if a valid RRBP field is + * received as part of the message; the mobile station _MAY_ then + * switch to a new cell." + */ + return; + } LOGP(DRLCMAC, LOGL_ERROR, "Error: received PACET CONTROL ACK " "at no request\n"); } |