Hello Jakub,
UPDATE,
I'm sorry for the delayed response and confusing information.
The FIFO pointers are circular. Although the FIFO size is 8 words, the pointers increment up to 0xF.
The number of words in the FIFO is then the relative difference between the WFP, RFP pointers.

Let say 5 words is written to the Receive FIFO by the HW, then, the RFRn_WFP pointer shows 0x5 while the RFRn_RFP pointer shows 0x0 until all the data are read (by DMA, for example) from the FIFO, then the RFRn_RFP is also 0x5.
And because at this point the pointers are identical, the FIFO is empty.
If other 5 words are received, the RFRn_WFP pointer increments to 0xA while the RFRn_RFP pointer stays at 0x5 until the data (5 words) are read from the FIFO, then the RFRn_RFP also increments to 0xA.
And because at this point the pointers are identical, the FIFO is empty again and a new transfer can be initialized.
This is a correction of my previous answer - the FIFO does not need to be reset. I’m sorry for that.
You can refer to the sai_transfer_s32k148 SDK example, this example utilizes DMA.
The FIFOs are reset during initialization in the SAI_DRV_RxInit(), SAI_DRV_TxInit() funtions only.
Regards,
Daniel