Public bug reported:

[Impact]

Dell Thunderbolt dock ethernet (Intel I226 NIC) fails to initialize on
hotplug, resulting in no network connectivity after dock reconnection.

When users unplug and reconnect Dell Thunderbolt docks with integrated
ethernet, the network interface fails to come up and shows an invalid
MAC address (00:00:00:00:00:00 or stale MAC from previous session). This
prevents users from using wired ethernet connectivity after dock
hotplug.

Error symptoms:
- Network interface shows invalid/wrong MAC address after hotplug
- `ip link` shows interface but no connectivity
- No error messages in dmesg, interface simply doesn't work
- Cold boot works fine, only hotplug scenarios fail

Affected hardware: Dell systems with Thunderbolt docks (Dell WD25TB4 and
similar models with Intel II226 ethernet)

Failure rate: Intermittent on hotplug (50-80% failure rate with 600ms
delay)

Root cause: BIOS MAC passthrough takes longer than the current 600ms
wait time. Debug testing shows BIOS writes the correct MAC address
between 300-800ms after driver probe starts during hotplug. The current
600ms delay is insufficient for docks that need the full timing window.


[Fix]

Increase the Thunderbolt MAC passthrough delay from 600ms to 1000ms in
the IGC driver.

The current Ubuntu SAUCE patch (commit 534981aaa831, since 2022) adds a
600ms delay for Thunderbolt-attached devices to wait for BIOS MAC
passthrough to complete. Testing on Lenovo TBT4 docks showed 600ms was
sufficient, but newer Dell docks require longer timing.

Debug kernel testing (2026-03-04) revealed:
- Cold boot: MAC is correct at T+0ms (BIOS completes during POST)
- Hotplug: MAC changes at T+300-800ms (BIOS writes during runtime)
- Dell WD25TB4: Observed MAC changes as late as T+800ms

The fix increases the delay to 1000ms (800ms worst-case + 200ms safety
margin) to ensure reliable operation across all Thunderbolt dock models.

This is an Ubuntu-specific workaround. The patch was proposed upstream
in 2021 but not merged because upstream prefers a proper MAC polling
solution instead of fixed delays. For Ubuntu, the pragmatic fixed-delay
approach is appropriate for stable kernel support.

Upstream discussion:
https://lore.kernel.org/lkml/[email protected]/

Changes:
```diff
diff --git a/drivers/net/ethernet/intel/igc/igc_main.c 
b/drivers/net/ethernet/intel/igc/igc_main.c
@@ -7189,7 +7189,7 @@ static int igc_probe(struct pci_dev *pdev,
        memcpy(&hw->phy.ops, ei->phy_ops, sizeof(hw->phy.ops));
 
        if (pci_is_thunderbolt_attached(pdev))
-               msleep(600);
+               msleep(1000);
 
        /* Initialize skew-specific constants */
        err = ei->get_invariants(hw);
```

[Test Plan]

**Hardware required:** Dell system with Thunderbolt dock containing
Intel I226 ethernet

**Test procedure:**

1. Boot system with dock connected
2. Verify ethernet works:
   ```bash
   ip link show
   # Check MAC address is valid (not 00:00:00:00:00:00)
   ```

3. Unplug Thunderbolt dock
4. Wait 5 seconds
5. Replug Thunderbolt dock
6. Wait 10 seconds for device enumeration
7. Check ethernet MAC address:
   ```bash
   ip link show | grep -A1 "enp.*s0"
   # Verify MAC address matches dock's MAC (not 00:00:00:00:00:00 or stale 
address)
   ```

8. Repeat steps 3-7 ten times

**Without the patch:**
- Hotplug may fail 50-80% of attempts
- MAC address is invalid (00:00:00:00:00:00) or stale from previous session
- Network interface doesn't work after hotplug

**With the patch:**
- Hotplug succeeds 100% of attempts
- MAC address is correct after every hotplug
- Network interface works reliably

**Note:** Cold boot scenario already works with or without the patch.
This fix specifically addresses the hotplug timing issue.


[Where problems could occur]

The change affects the Intel IGC ethernet driver initialization path for
Thunderbolt-attached devices.

If 1000ms is still insufficient for some future dock models with even
slower BIOS MAC passthrough, those docks would still exhibit the hotplug
failure. However, this is unlikely as 1000ms provides substantial margin
(250ms more than observed worst-case).

The increased delay adds 400ms to device probe time during hotplug. This is a 
minor impact:
- Only affects Thunderbolt-attached I226 devices (not regular PCIe ethernet)
- Only during hotplug (cold boot timing already includes BIOS delays in POST)
- 400ms is imperceptible to users compared to the 5-6 seconds of PCIe 
enumeration

If the delay logic is somehow applied to non-Thunderbolt devices due to
a kernel bug, those devices would experience unnecessary 1000ms probe
delays. However, the `pci_is_thunderbolt_attached()` check is a well-
established kernel API used by many drivers.

The patch does not change any device functionality, register access, or
interrupt handling - it only extends an existing wait period. The code
path is identical before and after the change, just with a longer sleep
duration.


This is an update to an existing Ubuntu SAUCE patch (commit 534981aaa831, "igc: 
wait for the MAC copy when enabled MAC passthrough", since 2022-08-03).

The original 600ms delay was based on testing with Lenovo TBT4 docks.
Newer Dell docks exhibit slower BIOS MAC passthrough timing, requiring
the increase to 1000ms.

This patch is Ubuntu-specific (SAUCE) because upstream prefers a MAC address 
polling solution rather than fixed delays. However, implementing proper MAC 
polling would be a substantial change requiring:
- New register polling logic
- Hardware state validation
- Timeout and error handling
- Upstream review and acceptance

For stable kernel maintenance, extending the proven fixed-delay approach
is the appropriate solution. The change is minimal, low-risk, and
directly addresses the reported issue.

The patch applies to all Ubuntu OEM kernels with the IGC driver. It has
been tested on oem-6.17 kernel (6.17.0-3013) with Dell WD25TB4 dock and
shows 100% success rate across multiple hotplug cycles.

Debug kernel testing methodology:
- Instrumented driver to print MAC register values every 100ms for 2000ms
- Observed actual BIOS MAC write timing on hardware
- Confirmed MAC stability after change completes
- Validated both cold boot and hotplug scenarios

Related Launchpad bug: https://bugs.launchpad.net/bugs/1942999 (original
600ms patch)

** Affects: linux-oem-6.17 (Ubuntu)
     Importance: Undecided
     Assignee: Max Lee (max-lee)
         Status: New

** Changed in: linux-oem-6.17 (Ubuntu)
     Assignee: (unassigned) => Max Lee (max-lee)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2143197

Title:
  igc: Increase Thunderbolt MAC passthrough delay to 1000ms

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-oem-6.17/+bug/2143197/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to