EG915U TCP/IP command RX fragmentation in Direct Push

I’m currently writing a SW driver for an STM32U5 to interface with the EG915U modem.

I’m a bit lost on the +QIURC, “recv” functionality in direct push mode using the TCP/IP commands. It seems that the AT command mechanism and data parsing is working when the messages are small, but when the incoming TCP frames are larger than the internal RX buffer of 1500 bytes, issues arise.

I’m using the NetX Duo stack in my project, which means the TCP frames need to be correctly reconstructed (glued together by linking in a linked list) after the fragmentation that happens due to the RX buffer of the modem.

Now, the TCP/IP command set only expects you to handle application data. The TCP/IP headers are omitted/ constructed by the modem. However, for my offload driver, I need to know when a TCP frame has been fully received. The modem does not seem to give any signal of this happening. The fragmentation also seems to be quite erratic and random.

I’m using the EC200U&EG915U Series TCP/IP Application Note V1.1 as reference. There doesn’t seem to be any description of how incoming data is buffered in the modem and eventually transmitted to the microcontroller. I also don’t see a mechanism that alerts me that a TCP packet has been fully received.

For context, I’m currently already connecting to an IoTHub and the full functionality of this hub is working. So for small TX and RX frames, the driver works. Another functionality of our project requires me to download files. I’m currently requesting multiple 12 kB data packets using a HTTPS get request over TLS. The process starts and 12 kB packets (+overhead) appear on the UART RX channel. However, the modem fragments these packets and I can’t reconstruct them due to missing information described earlier.

Is there any documentation on this internal buffering and how to work around it or anyone who can shine a light on how to work around this? Is there a command or URC that tells me a full frame is received and can be reconstructed?