{"id":84,"date":"2007-01-31T18:36:56","date_gmt":"2007-01-31T22:36:56","guid":{"rendered":"http:\/\/www.phildev.net\/phil\/newblog\/?p=84"},"modified":"2007-01-31T18:36:56","modified_gmt":"2007-01-31T22:36:56","slug":"","status":"publish","type":"post","link":"https:\/\/www.phildev.net\/phil\/blog\/?p=84","title":{"rendered":"Who would ever need that?"},"content":{"rendered":"<p>We ran into a problem at work last night. A new version of the same model of a server had a very different set of hardware in it. To be specific, we have lots of Sun X4100 servers, and we were deploying some new ones&#8230; but these where the M2 series of X4100s. And instead of 4 Intel NICs, they had 2 nVidia NICs and 2 Intel NICs. And the nVidia NICs quite consistently failed. We couldn&#8217;t make them work. So eventually I hacked around this and did some minor magic to make the 2nd two NICs primary, and the last two NICs secondary. When I went home, one of my co-workers was coming in and started digging through the source code, since apparently this work on a later revision of the OS (RedHat EL3 vs EL4). He found this in the EL3 version of forcedeth.c:<\/p>\n<pre>\n<code>\nstatic int nv_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd)\n{\nstruct fe_priv *np = get_nvpriv(dev);\n...\n\n} else if (ecmd->autoneg == AUTONEG_DISABLE) {\n<strong>\/* Note: autonegotiation disable, speed 1000 intentionally\n* forbidden - noone should need that. *\/<\/strong>\n\nif (ecmd->speed != SPEED_10 &amp;&amp; ecmd->speed != SPEED_100)\nreturn -EINVAL;\nif (ecmd->duplex != DUPLEX_HALF &amp;&amp; ecmd->duplex != DUPLEX_FULL)\nreturn -EINVAL;\n} else {\n...\n}\n<\/code>\n<\/pre>\n<p>For those of you who don&#8217;t read C, note the comment. It says if auto-negotiation is turned off (a common practice on servers), you <strong>can&#8217;t<\/strong> set this gigabit network card to gigabit speed. It will only do gigabit in autoneg. And the comment just makes it perfect: &#8220;no one should need that.&#8221; Wow. That. Is. Just. Wrong.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We ran into a problem at work last night. A new version of the same model of a server had a very different set of hardware in it. To be specific, we have lots of Sun X4100 servers, and we were deploying some new ones&#8230; but these where the M2 series of X4100s. And instead [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[5],"tags":[],"_links":{"self":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/posts\/84"}],"collection":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=84"}],"version-history":[{"count":0,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=\/wp\/v2\/posts\/84\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=84"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=84"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.phildev.net\/phil\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=84"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}