After few days test, I think I found the problem. And I would like to share my solutions.
I think the LED not working is not a driver issue but a hardware one.
According to the datasheet of KSZ8091RNDCA http://ww1.microchip.com/downloads/en/DeviceDoc/00002298A.pdf ,Page 9, the RXER/PME_EN pin is an input to control PME output for WAKE-On-LAN. It is default pull-down (disable).
According to the schematic of ci40 https://docs.creatordev.io/ci40/guides/hardwaredocs/Creator_Ci40_Schematic_Iss10.pdf, Page 13, the RXER/PME_EN is connected with pull-up resister R69 and resister R68 is not welded. Thus RXER/PME_EN is high, PME is enable, LED is not enable.
Therefore there are two solutions. One is in hardware, the other one is in software.
Hardware solution: Move R69 to R68 to make pull-down for pin RXER/PME_EN. With default firmware, LED will light. This solution should work but I did not test.
Software solution: Enable KSZ8091RNDCA phy driver and add device tree node in kernel. And add additional statement to explicitly disable PME mode in phy driver. I added a dirty patch by my self and it works.
The difficult point of software solution is how to add device tree node for this phy driver. It is appreciate if someone can tell me.