Dear Sebastian,
I am still trying to get some other code examples for your case, will post here if find anything.
I reviewed the Vybrid-Phy.pdf file and am a bit confused by how the RXD and TXD pins are connected to each other - it should me the same name on both the MAC and PHY sides (e.g. see Figure 2 on page 16 of http://www.micrel.com/_PDF/Ethernet/datasheets/ksz8021rnl_8031rnl.pdf). Hopefully, the error is only in this illustrative document but not in the real design, otherwise nothing would work with any clocking scheme, right? (BTW, may you correct it in the same message, using 'Edit' option, to not confuse the others, please?)
BTW, from your PHY's datasheet, it is clear why it is working in the RX direction:
"3.4.2.2 Reference Clock (REF_CLK)
The RMII REF_CLK is a continuous clock that provides the timing reference for CRS_DV, RXD[1:0], TXEN, TXD[1:0] and RXER. The device uses REF_CLK as the network clock such that no buffering is required on the transmit data path. However, on the receive data path, the receiver recovers the clock from the incoming data stream, and the device uses elasticity buffering to accommodate for differences between the recovered clock and the local REF_CLK."
Please, keep me updated how your debugging is going.
Sincerely, Naoum Gitnik.