Lenovo X60 em workaround

Jack Vogel jfvogel at gmail.com
Wed Apr 18 01:56:55 UTC 2007


On 4/17/07, Henrik Brix Andersen <henrik at brixandersen.dk> wrote:
> Hi,
>
> On Mon, Jan 22, 2007 at 10:30:48AM -0800, Jack Vogel wrote:
> >  Acknowledge... I can do better than that, I have a fix for this problem, and
> >  its not temporary. Here is the code change (not a patch, I'm very busy),
> >  its in hardware_init, should be obvious how to patch:
> >
> >        /* Make sure we have a good EEPROM before we read from it */
> >         if (e1000_validate_nvm_checksum(&adapter->hw) < 0) {
> >                 /*
> >                 ** Some PCI-E parts fail the first check due to
> >                 ** the link being in sleep state, call it again,
> >                 ** if it fails a second time its a real issue.
> >                 */
> >                 if (e1000_validate_nvm_checksum(&adapter->hw) < 0) {
> >                         device_printf(dev,
> >                             "The EEPROM Checksum Is Not Valid\n");
> >                         return (EIO);
> >                 }
> >         }
> >
> >  This is already checked into my code base at Intel, I've just been too
> >  busy to do anything with it, be my guest if you wish to check it in after
> >  testing...
>
> I can confirm that the above patch fixes the frequent initialization
> problems with em(4) on my IBM/Lenovo ThinkPad X60s. Without the patch,
> I often see the following on boot when there is no link on the em(4)
> interface:
>
> Apr 17 22:05:12 lothlorien kernel: em0: The EEPROM Checksum Is Not Valid
> Apr 17 22:05:12 lothlorien kernel: em0: Unable to initialize the hardware
>
> With the patch, I can not reproduce the invalid checksum errors - the
> second call to e1000_validate_nvm_checksum() succeeds.
>
> Any chance of this patch hitting CURRENT anytime soon? :)

Yes, the reason I have been delaying is that I need to merge the
latest driver I've released from Intel into CURRENT, and this is going
to be a sizeable task, we have a new shared code base that is more
modular than before, it means each family of NIC now gets a seperate
file and functions, with function pointers that are set up at runtime.

All new drivers, Windows, Linux, and FreeBSD are using this code,
its going to be a bit of work to make sure that CURRENT loses no
fixes in this merge, I also had another project internally that needed
my cycles, but starting tomorrow I will begin the task, I would hope
to get something checked in by the weekend.

Anyone that wishes to see the new driver structure can download
it now from the Intel site, downloadfinder.intel.com, its driver version
6.3.9.

Cheers,

Jack


More information about the freebsd-current mailing list