At work we use Dell laptops with Intel I218-LM network interface cards. We have issues with severe network degradation in uplink traffic on the hosts, averaging between 300 to 400 Kbps. This degradation only occurs on one of our switches, though–a Cisco 3560 series. For the longest time, PC support has had to manually modify the adapter properties on each host to enable Legacy Switch Compatibility Mode, found under the advanced tab in the Ethernet adapter properties dialog box, in order to resolve the problem. This was a curious situation for me so I thought I’d try to determine the root cause while my Cisco knowledge was still fresh in my mind.

I noticed that we aren’t big fans of Ethernet Auto-Negotiation. Every interface on the switch is set to speed 100, duplex full. Every host’s adapter is configured to mirror these settings. With a quick Google search, I found a Customer Advisory on HP’s website indicating that network connectivity could be lost when forcing speed and duplex settings:

“This anomaly can occur because newer Intel drivers now attempt to negotiate the link speed when the driver speed has been forced and this does not interoperate well with some switches.”

Hence the need to enable Legacy Switch Compatibility Mode. Of course, there’s nothing legacy about these switches. The Intel drivers just don’t behave according to how they are configured.

To provide further information, without this mode enabled, the interface on the switch will show lots of input errors, generally indicating a problem with the host (or something in between.)

I mentioned earlier that we only had this problem when the hosts were connected to just one of our switches. That switch has only 10/100 interfaces for host connectivity. Comparatively, the other switches have 10/100/1000 interfaces, though they are also configured to use speed 100, duplex full. And of course, as stated earlier, all hosts are defined to use the same settings instead of auto-negotiation. Therefore, I suspect that the new Intel drivers, despite their settings, auto negotiate to their highest available speed first (1000 mbps), then, whether negotiation continues or not, use the defined setting of 100 Mbps. Because a 10/100 interface would fail to negotiate at 1 Gbps, the Intel drivers fail to complete their negotiation and for whatever reason never use the configured setting. Whether they continue to send at 1 Gbps or at the lowest (and safest) 10 Mbps is unknown to me, but assuredly they are sending at the wrong speed, therefore causing the interface input errors and nearly all traffic to drop upstream.

In any case, if auto negotiation can’t be used and there are hosts with newer Intel drivers, just enable the Legacy Switch Compatibility mode setting on each host.