Ethernet W5100 board, LinkOFF/LinkON return wrong state

I have been playing with an Arduino Ethernet shield based around the W5100 chip. I have ran into a problem with LinkON and LinkOFF returning the wrong status. If I do:

if (Ethernet.linkStatus() == LinkOFF) {

this will always return false and assumes the cable is connected even when when it is not.

On the other hand, if I do:

if (Ethernet.linkStatus() == LinkON) {

this also always returns false so that the result of the test implies that the cable is unplugged, when it is not.

With the cable plugged in, I can ping the configured IP address and I can communicate with the interface over the selected port. In other words, provided that the Ethernet cable is plugged in, the shield works fine, however I have to omit any testing for whether the Ethernet cable is plugged in or not.

Is this a fault with the board, or is this functionality just not implemented on the W5100?

Incidentally, why does the Ethernet server object have a .begin() method but not a .stop() method? The corresponding client object seems to have both? Does the server remain stable should the Ethernet cable get unplugged or the router go down?

Think I have answered my own question. It seem from the following that this feature is supported only on W5200 and W5500 chips:

https://www.arduino.cc/en/Reference/EthernetLinkStatus

I guess the sketch will have to detect which hardware is in use with hardwareStatus() or just ignore link status?