mirror of
https://github.com/esphome/esphome.git
synced 2026-06-24 15:46:54 +00:00
fix(network): lower NETWORK_PRIORITY_BASE below NetworkComponent's own priority
PR #14255 sets NETWORK_PRIORITY_BASE = 300.0, but PR #14012's NetworkComponent uses setup_priority::AFTER_BLUETOOTH = 300.0f. When the highest-priority interface (first in the priority list) tied with NetworkComponent at 300, the runtime tie-break was determined by registration order — and NetworkComponent registers AFTER ethernet (its codegen runs at CoroPriority.NETWORK_SERVICES = 55, below COMMUNICATION = 60 used by ethernet/wifi). Result: ethernet's setup() ran before NetworkComponent::setup(), esp_netif_init() had not yet been called, esp_netif_new() returned NULL, and EthernetComponent::setup() dereferenced NULL in esp_netif_attach() — LoadProhibited crash at boot. Drop the base to 250.0 (matches the historical setup_priority::WIFI / ::ETHERNET default, so a single-entry priority list behaves identically to a no-priority-block config) and shrink the step to 5.0 to keep all interfaces in the same priority band, above BEFORE_CONNECTION (220.0) and below AFTER_BLUETOOTH (300.0).
This commit is contained in:
@@ -34,9 +34,18 @@ KEY_NETWORK_PRIORITY = "network_priority"
|
||||
|
||||
VALID_NETWORK_TYPES = ["ethernet", "openthread", "wifi", "modem"]
|
||||
|
||||
# Setup priority base values — first in list gets the highest priority
|
||||
NETWORK_PRIORITY_BASE = 300.0
|
||||
NETWORK_PRIORITY_STEP = 100.0
|
||||
# Setup priority base values — first in list gets the highest priority.
|
||||
#
|
||||
# The base equals the historical setup_priority::WIFI / ::ETHERNET default
|
||||
# (250.0), so a single-entry priority list yields exactly the same setup order
|
||||
# as a config with no priority block. Subsequent entries step down by a small
|
||||
# amount to break ties without crossing other priority bands.
|
||||
#
|
||||
# Important: must stay strictly less than setup_priority::AFTER_BLUETOOTH
|
||||
# (300.0), which NetworkComponent itself uses — otherwise the highest-priority
|
||||
# interface could tie with NetworkComponent and run before esp_netif_init().
|
||||
NETWORK_PRIORITY_BASE = 250.0
|
||||
NETWORK_PRIORITY_STEP = 5.0
|
||||
|
||||
network_ns = cg.esphome_ns.namespace("network")
|
||||
NetworkComponent = network_ns.class_("NetworkComponent", cg.Component)
|
||||
|
||||
Reference in New Issue
Block a user