We have gotten rid of filling the ACK/NACK with
the DLSCH and now only fill with the PUCCH. This
assumes that the MAC layer is properly decoding the
dl_tti_req and tx_data_req and allows us to
simply use the MAC layers scheduled SNF/Slot
to return the ACK NACK. There are some hacks added
in this commit which ensure that the PDCP packet
has the correct header (1st byte = 80) and now with
15Mbps we are seeing about 20% packet loss and
a gNB bug on the edge case (current frame is 1023
and the gNB schduler wants an ACK in frame 0 but the
scheduled UL_TTI_REQ has a frame of 1023).
T tracer was not functional anymore. because init_tpools() was called
before T_Config_Init().
The problem was that init_tpools() creates some threads and T_Config_Init()
does call fork() and the child process (which is the one running the
softmodem, the parent process is used to monitor it, this is the design
of the T tracer, maybe to change at some point, it's too complicated) has
no thread after the fork(). The threads created by init_tpools() are gone.
Game over.
In conclusion: T_Config_Init() has to be called very early in the life of
the softmodem, at least before init_tpools().
It seems that the RA procedure in the gNB was modified so
the RAR is sent in a single tx_data_req. The emualted mode
was not previously handling this. We now only process the
PDU in the rx_ind that has a matching preamble. If any
other PDUs exist, we ignore them and only build Msg3 based
on this single matching RAR PDU.
Also, two bug fixes applied here in the emulate-l1 mode.
This struct is used to store the uplink 5G nFAPI
messages between the proxy and the gNB MAC layer.
The original OAI implementation utilizes a similarly
named variable (UL_info) to store the uplink 5G nFAPI
messages between the PHY and MAC layer. This commit
will utilize the original UL_info variable prior to
calling the handle functions. These changes allow us
to make minimal changes to the nFAPI handle functions
and modifies the NR_UL_Indication parent function instead.
We have to eat all the bytes, not only one.
We have to get the bit we want from the right buffer position.
Note: only one bit is supported from this "EPS network feature support",
not sure how to properly deal with it, so let's keep the code as it is.
This commit was made because the MAGMA MME sends "EPS network feature
support" to the UE in the NAS message "Attach Accept". OAI MME does not
send this. So the bug about size was not seen.