Issue with Long Run 1 - incorrect handling of EGPRS Ack/Nack
There are two major issues found when we recieve EGPRS Ack/Nack without "ACKNACK Dissector length" field in it.
1) CSN1 decoder doesn't decode the values properly.
2) gprs_rlcmac_dl_tbf::update_window function is not written according to 18.104.22.168.4 of 44.060.
Simulated Example(hex dump is captured in real OTA testing):
EPDAN received is "40 20 b ff d1 61 0 3e e 51 9f ff ff fb 80 0 0 0 0 0 0 0 0"
causes wrong decoding at CSN1along with error print in PCU as
[[0;m^M[[0;33m<0002> tbf_dl.cpp:388 - ack range is out of V(A) = 1176 ..V(S) = 1288 range TBF Free TBF! num_blocks = 113 dist = 2047 behind_last_bsn = 1289 first_bsn = 1176
Refer issue 2 above: When EPDAN is reported with out of window the status of bsns out of the window needs to be ignored. But in current implementation of gprs_rlcmac_dl_tbf::update_window it is not honored and DL TBF is getting freed causing instability in DL traffic.