Hi,
In GSM 05.06 Section 5.5.7 at the end it says :
---
The timer recovery condition is only cleared if the data link layer
entity receives a valid supervisory frame response
with the F bit set to "1". If the N(R) of this received supervisory
frame is within the range from its current state variable
V(A) to its current send state variable V(S) inclusive, it shall set
its send state variable V(S) to the value of the received
N(R). Timer T200 shall be reset if the received supervisory frame
response is an RR or REJ response with F bit set to
"1". The data link layer entity shall then resume with I frame
transmission or retransmission, as appropriate.
Timer T200 shall be set if the received supervisory response is an RNR
response, and the data link layer shall proceed
with the enquiry process in accordance with subclause 5.5.5.
---
And I don't see where this is supposed to be handled in the code.
I tried this quick fix:
diff --git a/src/host/layer23/src/common/lapdm.c
b/src/host/layer23/src/common/lapdm.c
index b1c0d40..8bd42a7 100644
--- a/src/host/layer23/src/common/lapdm.c
+++ b/src/host/layer23/src/common/lapdm.c
@@ -1081,8 +1081,12 @@ static int lapdm_rx_s(struct msgb *msg, struct
lapdm_msg_ctx *mctx)
/* 5.4.2.2: Inidcate error on supervisory reponse F=1 */
if (LAPDm_ADDR_CR(mctx->addr) == CR_BS2MS_RESP
&& LAPDm_CTRL_PF_BIT(mctx->ctrl)) {
- LOGP(DLAPDM, LOGL_NOTICE, "S frame response with F=1 error\n");
- rsl_rll_error(RLL_CAUSE_UNSOL_SPRV_RESP, mctx);
+ if (dl->state != LAPDm_STATE_TIMER_RECOV) {
+ LOGP(DLAPDM, LOGL_NOTICE, "S frame response
with F=1 error\n");
+ rsl_rll_error(RLL_CAUSE_UNSOL_SPRV_RESP, mctx);
+ } else {
+ dl->state = LAPDm_STATE_MF_EST;
+ }
}
switch (dl->state) {
which seems to fix the issue I encountered but my understanding of how
lapdm.c works is very limited and I doubt that it's all that's needed
to properly handle this case.
Cheers,
Sylvain Munaut
Show replies by date
Hello Sylvain,
Thanks, for all your support,
as you told me in your last reply, if i use layer23 -a arfcn , then it will
, automatic tune to first immediate assignment command and follow to it
until assignment command and tune to TCH/f for that particular immediate
assignment command.
but when i doing so , it is chasing up to SDCCH , and after this it is
started to dropping frames .. and not getting tune to any TCH/F
though there is no encryption being used. A5/0, i have seen , no ciphering.
in traces.
*******
Dropping frame with 59 bit errors
<000b> l1ctl.c:166 Dropping frame with 59 bit errors
<000b> l1ctl.c:155 SDCCH/8(0) on TS1 (1796/14/32) -62 dBm:
*****
SACCH queue
SDCCH queue
SDCCH queue
SACCH queue
*****
kindly confirm with layer1.compalram.bin , if i will be able to listen
TCH/F assign to some other MS ,
i have tried all other branches like Sylvain/voice, Sylvain/testing. but
none of successful.
Kind Regards,