Unfortunately this is normal. You will not read new value until specific event.
I recommend you looking into W5100’s datasheet, chapter 5 “Functional description”.
For example, in 5.2.1.1 you will learn that after updating RX_RD register you should issue RECV command, which makes your register update effective. Until this command, RX_RD will read back the old value.
So conclusion is that you should be very careful reading registers, and should only do it in specific conditions. I am sure if you will study those datasheet’s diagrams you will be doing it right.