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().
In case of TDD we usually disable TX during RX.
Unfortunately some USRPs create self-interference after disabling TX.
To be able to work-around this issue, we add the flag "--continuous-tx".
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.