The documentation (SWRU455C) at page 199 says:
"Receiving raw socket data is done by calling sl_Recv after successfully opening the transceiver socket.
The API return value is the number of bytes received, or a negative value in case of an error. Each
receive packet has an 8-byte proprietary header which includes the following parameters [...]"
and in the header sl_socket.h I read:
\brief Read data from TCP socket Function receives a message from a connection-mode socket \param[in] sd Socket handle \param[out] buf Points to the buffer where the message should be stored. \param[in] len Specifies the length in bytes of the buffer pointed to by the buffer argument. Range: 1-16000 bytes
Regardless the length of the buffer, it seems I find the actualy received data exactly at the buffer pointer location. I don't understand where SlTransceiverRxOverHead_t header and how to read it if my buffer has a length < 8 bytes (i.e. reading one char at time).