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