Modem crash with 0x4 while using DECT nr+ MAC/DLC APIs

Hi everyone,

I'm developing a star-topology network using DECT NR+ on nRF9161 DK nodes,
running modem firmware mfw-nr+_nrf91x1_2.0.0 (nRF Connect SDK 3.3.0).

My issue is a modem crash with error 0x4 on the FT side when it receives
a PDU of ~3200 bytes sent by the PT device via
nrf_modem_dect_dlc_data_tx(). After investigating the error code, I
increased the modem's shared memory using
CONFIG_NRF_MODEM_LIB_SHMEM_RX_SIZE, but the crash still occurs at this
payload size.

On the PT device side, the transmission itself doesn't seem to fail,
since the dlc_data_tx callback is called with status 0.

For clarification: the FT and PT nodes start exchanging data after
association. I haven't yet tried to reproduce the crash using the sample
application from [Hands on with DECT NR+ API release v2.0], and I also
wasn't able to capture a modem trace of the fault using the Modem
library.

Modem error: 0x4
PC: 0x561bc
SDK: 3.3.0

Sorry in advance if I've left out any details.

Kind regards,
Alessandro.

Parents
  • Hi,

    Thanks for waiting. We can see that the modem crashes when it runs out of large internal memory blocks while processing the received large SDU.

    On our side, data up to 4KB went through successfully using the NCS DECT NR+ stack. We understand you need DLC segmentation directly, but is it possible for you to try NCS DECT NR+ socket-based stack to confirm the issue doesn't occur there? It uses the same DLC layer internally. 

    Best Regards,
    Syed Maysum

  • Hi, sorry for the response delay.


    First of all, thanks for keeping me updated.

    I've tried with nordic samples, the first tried is dect_shell, in which I'm not able to send and succesfully receive data higher than 1280 bytes, so nothing bigger than DECT_MTU.
    After inspecting l2_shell source code, it's clear that maximum data to send/receive is equal to DECT_MTU. Same for hello_dect sample.

    In <skd_home>/nrf/subsys/net/lib/dect/l2_shell/src/dect_l2_shell.c

    
    #define DECT_TX_CMD_MAX_SEND_DATA_LEN DECT_MTU
    ...
    recv_len = zsock_recvfrom(dect_shell_rx_sockfd, rx_data_buf, DECT_MTU, 0,
    (struct sockaddr *)&src, &fromlen);
    
    

    I don't see modem crash by the way.
    How do you manage to send 4KB with socket-based stack?

    Kind Regards,
    Alessandro.

  • Hi,

    Thanks for trying that out and for the detailed feedback.

    You're right that NCS samples (dect_shell, hello_dect) are limited to 1280 bytes (DECT_MTU), so they can't reproduce the issue. I believe our internal 4KB test used some modifications, so I have reached out to internal team and will share more details on that after receiving their response. However just to inform that it could take some time as some of our resources are out of office due to summer break.

    In the meantime can you confirm that in your original setup (using nrf_modem_dect_dlc_data_tx() with ~3200 bytes) you have also tried it with disabling modem trace as well. As till now we identified that the modem runs out of internal memory blocks during tracing of the large received SDU. 

    Best Regards,
    Syed Maysum

  • Hi,

    Holidays are holidays, and they're saints.

    However in my application I proceeded to reduce the single data pdu length and continue the development, but I will available to test different configuration if this can help you and future developers.


    "In the meantime can you confirm that in your original setup (using nrf_modem_dect_dlc_data_tx() with ~3200 bytes) you have also tried it with disabling modem trace as well. As till now we identified that the modem runs out of internal memory blocks during tracing of the large received SDU. "


    Yes, initially I've encountered the crash without modem trace enabled.

    Kind Regards,
    Alessandro

  • Thanks for confirming. We will surely get back to you on our findings soon. Appreciate your cooperation.

Reply Children
No Data
Related