net: ignore Intel's default unprogrammed MAC on igc NICs - #6991
Open
joelle-a-dev wants to merge 1 commit into
Open
joelle-a-dev wants to merge 1 commit into
joelle-a-dev wants to merge 1 commit into
Conversation
Some Intel i225 (NVM >= 1.53) and all i226 NICs ship with an unprogrammed placeholder MAC (00:a0:c9:00:00:00) until manufacturing flashes a real one. When two such NICs are present, cloud-init crashed with "duplicate mac found!" during networking setup. Rather than ignoring all duplicate MACs for the igc driver (which would also hide genuine duplicate-MAC hardware faults on this common NIC), filter out this specific known placeholder value the same way the existing all-zero MAC placeholder is already filtered. LP: #2142651 Fixes canonicalGH-6782
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Some Intel i225 (NVM >= 1.53) and all i226 NICs ship with an unprogrammed placeholder MAC (00:a0:c9:00:00:00) until manufacturing flashes a real one. When two such NICs are present, cloud-init crashed with "duplicate mac found!" during networking setup.
Rather than ignoring all duplicate MACs for the igc driver (which would also hide genuine duplicate-MAC hardware faults on this common NIC), filter out this specific known placeholder value the same way the existing all-zero MAC placeholder is already filtered. Fixes GH-6782.
There was a prior attempt at this in #6784, which added
igcto the existing driver-based duplicate-MAC ignore list (alongsidefsl_enetc,mscc_felix,qmi_wwan). That approach is broader than needed here:those other drivers are niche (automotive switches, cellular modems), but
igcbacks common consumer/server NICs (Intel I225/I226), so blanket-ignoring duplicate MACs for that driver would also silently hide a genuine duplicate-MAC hardware fault on such a board, rather than surfacing it as the RuntimeError does today. #6784 also had no test coverage and went stale.Per Intel's own documentation, I225 (NVM >= 1.53) and all I226 parts ship with a specific, known default/placeholder MAC (
00:a0:c9:00:00:00) until the manufacturing line programs a real one, this is exactly the MAC address in the linked bug report. This PR instead filters that specific sentinel value, the same wayget_interfaces()already filters the all-zero MAC placeholder as "no real per-device MAC assigned yet." Real, distinct MACs that happen to collide on igc NICs still raiseRuntimeErroras before.Test Steps
Added unit tests:
test_skip_intel_unprogrammed_placeholder_mac: two igc interfaces sharing the Intel placeholder MAC no longer raise, and are excluded fromget_interfaces_by_mac().test_real_duplicate_igc_macs_still_raise: two igc interfaces sharing a real (non-placeholder) MAC still raiseRuntimeError.tox -e py3 -- tests/unittests/test_net.pypasses (273 passed, 12 xfailed).