As described by Vitaly Lifshits:

> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
> driver cannot perform checksum validation and correction. This means
> that all NVM images must leave the factory with correct checksum and
> checksum valid bit set.


There are two issues we have found so far on some Tiger Lake systems:

1. Checksum valid bit unset in NVM

Some Dell laptops, i.e. Latitude 5420, have a valid bit unset and
incorrect checksum over NVM contents.

2. Checksum word in NVM is uninitialized (0xFFFF)

Other Dell system, Optiplex 5090 Micro, has a valid bit set while
a checksum word contains 0xFFFF ("empty"/uninitialized value).


Both issues result in the driver refusing to work with error:

> e1000e 0000:XX:XX.X: The NVM Checksum Is Not Valid

The network card is rendered unusable.


Patches work around those problems by ignoring NVM checksum when those
exact error conditions are detected on TGP-based systems.


v1 -> v2: work around issue #2
v2 -> v3: fix wrong comparison in workaround for #2, drop u16 cast
v3 -> v4: rename constant, reformat files, update commit description

Jacek Kowalski (2):
  e1000e: disregard NVM checksum on tgp when valid checksum bit is not
    set
  e1000e: ignore uninitialized checksum word on tgp

 drivers/net/ethernet/intel/e1000e/defines.h | 3 +++
 drivers/net/ethernet/intel/e1000e/ich8lan.c | 2 ++
 drivers/net/ethernet/intel/e1000e/nvm.c     | 6 ++++++
 3 files changed, 11 insertions(+)

-- 
2.47.2

Reply via email to