[W5100] SPI read problem

I am using STM32F030 with W5100 with IAR compiler and LL driver.

SPI mode IINCHIP_WRITE does work well.
After setting below, I can SEE board IP on network.
setSHAR(myMAC); //Source hardware address Register
setSUBR(SUBNET);
setGAR(myGateWay); //gateway address register
setSIPR(myIP); //source IP addresss Register

However, getSHAR, getGAR etc… I cannot read exact data that I set. IINCHIP_READ function work every other time.
So I read SPI Inchip read twice in one function , that I can get proper answer.

#define IINCHIP_SpiSendData SPI2_SendByte
uint8_t SPI2_SendByte(uint8_t byte)
{
TimeOutSPI2 = SPI_TIMEOUT_MAX;
while( !LL_SPI_IsActiveFlag_TXE(SPI2) ){
if (TimeOutSPI2-- == 0) return IOE_TIEMOUT;
}
*((__IO uint8_t *)&SPI2->DR) = byte;
//LL_SPI_TransmitData8(SPI2, byte);

TimeOutSPI2 = SPI_TIMEOUT_MAX;
while( !LL_SPI_IsActiveFlag_RXNE(SPI2) ){
    if (TimeOutSPI2-- == 0) return IOE_TIEMOUT;
}

return SPI2->DR;//LL_SPI_ReceiveData8(SPI2);

}

uint8 IINCHIP_WRITE(uint16 addr,uint8 data)
{
IINCHIP_ISR_DISABLE(); // Interrupt Service Routine Disable

IINCHIP_CS_L;                            // CS=0, SPI start

IINCHIP_SpiSendData(0xF0);  
IINCHIP_SpiSendData((uint8)((addr & 0xFF00) >> 8));  // Address byte 1
IINCHIP_SpiSendData((uint8)(addr & 0x00FF));         // Address byte 2

IINCHIP_SpiSendData(data);                      // Data write (write 1byte data)

IINCHIP_CS_L;                               // CS=0, SPI start
IINCHIP_CS_H;                               

IINCHIP_ISR_ENABLE();                           // Interrupt Service Routine Enable
    
return 1;

}

uint8 IINCHIP_READ(uint16 addr)
{
uint8 data;

IINCHIP_ISR_DISABLE();                       // Interrupt Service Routine Disable
    
IINCHIP_CS_L;                               // CS=0, SPI start

IINCHIP_SpiSendData(0x0F);  

IINCHIP_SpiSendData((addr & 0xFF00) >> 8);   // Address byte 1
IINCHIP_SpiSendData(addr & 0x00FF);          // Address byte 2
IINCHIP_SpiSendData(0x00);
data = IINCHIP_SpiSendData(0x00);
IINCHIP_CS_L;                            // CS=0, SPI start

IINCHIP_CS_H;                               // CS=1,  SPI end

/*IINCHIP_CS_L;                               // CS=0, SPI start    
IINCHIP_ISR_DISABLE();                       // Interrupt Service Routine Disable
IINCHIP_SpiSendData(0x0F);  

IINCHIP_SpiSendData((addr & 0xFF00) >> 8);   // Address byte 1
IINCHIP_SpiSendData(addr & 0x00FF);          // Address byte 2
IINCHIP_SpiSendData(0x00);
data = IINCHIP_SpiSendData(0x00);            // Data read (read 1byte data)

IINCHIP_CS_L;                               // CS=0, SPI start
IINCHIP_CS_H;                               // CS=1,  SPI end
*/
IINCHIP_ISR_ENABLE();                        // Interrupt Service Routine Enable
return data;

}

It seems work fine when I set and read setting(IP, mac etc…) info.
But when board ping to host, It is not working . answer from ping status (sn = getSn_SR(s)) is 0x63 .( value which is nowhere in dataseets ) I guess It is because I do not use Inchip read properly.
I have check oscilloscope , MISO signal seems weirdly moving because sometimes does stay H when 1byte SCK done. except that, every timing is longer than datasheets says even reset timing. I do not use addr, data line, so it is opened. is that could be a problem?
Has anyone see similar problem?

The problem is SPI communication. Pictures (timing) of all signals please for some read/write command.

Thank you Eugeny for kind answer…
Problem solved.

I was not getting LL_SPI_IsActiveFlag_RXNE while SPI send data…

I did not know STM32F030 has option… of Rx setting

LL_SPI_SetRxFIFOThreshold(SPI2,LL_SPI_RX_FIFO_TH_QUARTER);

It took 2 weeks to know… T_T

Thank you…