The branch main has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=8e8755e011955d12abab7c2be324429cccf0b975
commit 8e8755e011955d12abab7c2be324429cccf0b975 Author: Sasha Neftin <[email protected]> AuthorDate: 2025-02-07 12:45:22 +0000 Commit: Kevin Bowling <[email protected]> CommitDate: 2026-08-11 19:43:36 +0000 e1000: improve NVM checksum handling DPDK commit message net/e1000/base: improve NVM checksum handling When reading NVM checksum, we may encounter the following scenarios: - Checksum may be invalid, and can be updated - Checksum may be invalid but cannot be updated because NVM is read-only For the latter case, we should just ignore invalid checksum and not attempt to update it. Signed-off-by: Sasha Neftin <[email protected]> Signed-off-by: Anatoly Burakov <[email protected]> Acked-by: Bruce Richardson <[email protected]> Obtained from: DPDK (5241c17f0d) MFC after: 2 weeks --- sys/dev/e1000/e1000_ich8lan.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/sys/dev/e1000/e1000_ich8lan.c b/sys/dev/e1000/e1000_ich8lan.c index d454b2ede3dc..1a67f4d8f42d 100644 --- a/sys/dev/e1000/e1000_ich8lan.c +++ b/sys/dev/e1000/e1000_ich8lan.c @@ -4436,13 +4436,20 @@ static s32 e1000_validate_nvm_checksum_ich8lan(struct e1000_hw *hw) return ret_val; if (!(data & valid_csum_mask)) { - data |= valid_csum_mask; - ret_val = hw->nvm.ops.write(hw, word, 1, &data); - if (ret_val) - return ret_val; - ret_val = hw->nvm.ops.update(hw); - if (ret_val) - return ret_val; + DEBUGOUT("NVM checksum valid bit not set\n"); + + if (hw->mac.type < e1000_pch_tgp) { + data |= valid_csum_mask; + ret_val = hw->nvm.ops.write(hw, word, 1, &data); + if (ret_val) + return ret_val; + ret_val = hw->nvm.ops.update(hw); + if (ret_val) + return ret_val; + } else if (hw->mac.type == e1000_pch_tgp) { + /* Transitional TGP images may omit the valid bit. */ + return E1000_SUCCESS; + } } return e1000_validate_nvm_checksum_generic(hw);
