Commit Graph
16454 Commits
Author SHA1 Message Date
J. Nick Koston 970c70c830 Merge rp2-lwip-seg-pool-and-heap review fixes into the combined test branch 2026-08-10 22:34:36 -05:00
J. Nick Koston ac259c1565 [rp2] Address review: correct the sizing numbers and pin the invariants
Segment pool entries are 20 bytes on this build, not the nominal 16 that
struct tcp_seg suggests; the comment now quotes the measured figure.

The MEM_SIZE justification did not close as written: two connections at
~6KB each is ~12KB, which fits inside the old 16KB heap. The missing
term is that mem.c is first-fit, so what has to be free is a contiguous
1.5KB block, and at 75% occupancy interleaved with ARP, DHCP/DNS and
mDNS allocations the largest run collapses long before the total does.
That is also why the failure looked intermittent. Spelled out in both
the Python comment and the header template.

Hoist the lwIP sizing values to module constants so the two numeric
invariants can be tested: the segment pool must stay above the per-PCB
send queue, and MEM_SIZE must stay under 64000 or lwIP widens
mem_size_t to u32_t. Both were previously enforced by prose alone, and
the first would silently rebuild the starvation this change removes.
The generated header is byte identical.
2026-08-10 22:33:58 -05:00
J. Nick Koston 632e8fddf7 Merge rp2-lwip-seg-pool-and-heap into rp2-3-connection-slots for hardware testing 2026-08-10 22:16:29 -05:00
J. Nick Koston c7bf312b1b [rp2] Size the lwIP segment pool and heap for concurrent senders
Two lwIP values on rp2 were copied from ESP32, where MEM_LIBC_MALLOC=1
and MEMP_MEM_MALLOC=1 make them labels rather than caps. On rp2 they
are static pools and a fixed heap, so they became hard limits.

MEMP_NUM_TCP_SEG is a global pool but was set to TCP_SND_QUEUELEN (17),
which is per-PCB. lwIP's sanity check only demands >=, so that is the
floor for a single connection: one busy PCB could drain the pool for
every other PCB, including the other API connections, mDNS and
web_server. Size it to 2x the per-PCB queue instead, which costs about
340 bytes.

MEM_SIZE stayed at arduino-pico's 16KB. TCP_OVERSIZE defaults to
TCP_MSS, so one PCB holding a full TCP_SND_BUF pins about 6KB; two
connections exhausted the heap while api's max_connections on rp2 is 4.
Raise it to 32KB, which is arduino-pico's own next tier.

Either limit surfaces the same way: ERR_MEM from tcp_write(), then
EWOULDBLOCK, then a refused send_message().

The docstring now records why MEMP_MEM_MALLOC=1 is not the answer here,
since it looks like the obvious fix and is not. lwIP's heap takes its
protection from LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT, which defaults
to 0, so under NO_SYS=1 mem_malloc() and mem_free() are unprotected,
and memp.c calls mem_malloc() outside SYS_ARCH_PROTECT. Routing RX pbuf
allocation through it lets the pendsv IRQ race the main loop on one
unguarded free list; that faults within seconds on CYW43.

Also fixes two stale comments in api_frame_helper.h that still claimed
rp2 uses an 8xMSS send buffer; it has been 4xMSS since #14843.

RAM cost on tests/components/bluetooth_proxy/test.rp2040-ard.yaml is
16,724 bytes, leaving about 162KB for the heap.
2026-08-10 22:15:42 -05:00
J. Nick KostonandGitHub 51b0240fb8 [rp2] Fix %f formatting in logs (#18256) 2026-08-10 22:05:19 -05:00
Jesse HillsandGitHub f697cf2011 [api] Add DeviceCapabilities message for optional-feature flags (#17984) 2026-08-11 14:52:19 +12:00
J. Nick KostonandGitHub 4921f6b6e7 Merge branch 'dev' into rp2-3-connection-slots 2026-08-10 21:47:31 -05:00
Jesse HillsandGitHub 8728aaa616 [core] Use MAC address size constants in BLE components (#18252) 2026-08-11 14:21:03 +12:00
J. Nick KostonandGitHub eab9a47aa2 [bluetooth_proxy] Retry dropped services-done, disconnect and scanner-state notifications (#18225) 2026-08-11 14:20:39 +12:00
Jesse HillsandGitHub c2ba2fbfc4 [ld24xx] Use MAC address size constants instead of literals (#18253) 2026-08-11 14:18:09 +12:00
J. Nick KostonandGitHub 3de01d2a2e Bump aioesphomeapi to 45.8.0 (#18251) 2026-08-10 19:56:35 -05:00
dependabot[bot]andGitHub 791d6659c0 Bump platformdirs from 4.11.0 to 4.11.1 (#18250)
Signed-off-by: dependabot[bot] <support@github.com>
2026-08-11 00:43:35 +00:00
007c677da1 [mitsubishi_cn105] Refactor property encoding/decoding (#16709)
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-08-10 18:58:34 -05:00
J. Nick Koston f28d991ae9 Fix two stale comments 2026-08-10 18:25:41 -05:00
2a0f2d59f0 [modbus_server] Add coil/discrete-input support (#17464)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-10 18:13:12 -05:00
J. Nick Koston 6c29bbc506 Initiate cached connections at medium parameters and dispose stale successes 2026-08-10 18:05:41 -05:00
c8d2c3691a [mitsubishi_cn105] Add vertical vane direction select (#16723)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2026-08-10 17:58:37 -05:00
J. Nick Koston d3dc97d42d Tear down a handle stamped mid-escalation and pin the wrap flags literally 2026-08-10 17:53:31 -05:00
J. Nick Koston 63ce235937 Request OTA state listeners from the backend that uses them 2026-08-10 17:39:25 -05:00
J. Nick Koston dcc89ab985 Decide the timeout escalation under the lock and drop links at OTA start 2026-08-10 17:38:16 -05:00
J. Nick Koston c58e5ad8d5 Settle cached connections to medium parameters on link-up 2026-08-10 17:32:01 -05:00
82a63658f9 [hoermann_hcp] Add Hörmann HCP garage door component (#17355)
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-08-10 17:20:20 -05:00
J. Nick Koston 9d1506c9e0 Fix the remaining stale pool attribution in the rp2 schema docstring 2026-08-10 17:16:14 -05:00
J. Nick Koston ff3e14099c Point the slot range message at rp2040_ble and explain the import split 2026-08-10 17:14:24 -05:00
J. Nick Koston 6ceca44023 Tear down unowned late links and make the cleanup handle reset lock-atomic 2026-08-10 17:02:54 -05:00
J. Nick Koston 5c2c11f6cb Build the shared rp2350 target on rpipico2w and test the slot accounting 2026-08-10 17:00:43 -05:00
J. Nick Koston 0429d05859 Move BTstack pool ownership into rp2040_ble and count connection slots like esp32_ble 2026-08-10 16:56:57 -05:00
J. Nick Koston f90027f7c5 Anchor the wrap guards from live code and cover the rp2350 link 2026-08-10 16:48:38 -05:00
J. Nick Koston 7bc02eb25a Merge branch 'rp2-3-connection-slots' of https://github.com/esphome/esphome into rp2-3-connection-slots 2026-08-10 16:42:47 -05:00
J. Nick Koston e7412865d6 Merge branch 'dev' of https://github.com/esphome/esphome into rp2-3-connection-slots 2026-08-10 16:38:22 -05:00
J. Nick KostonandGitHub b8c0ea14d9 Merge branch 'dev' into rp2-3-connection-slots 2026-08-10 16:38:18 -05:00
J. Nick Koston c53cc5f7d4 Drop addressed completions that do not match the owner's peer 2026-08-10 16:18:04 -05:00
J. Nick Koston 5b7a6d4e81 Anchor all four wrap symbols, add 2-slot coverage, log outside the lock 2026-08-10 16:09:17 -05:00
J. Nick Koston 03a39597e8 Bound a lost cancel completion to a short budget and re-issue the cancel on escalation 2026-08-10 16:06:37 -05:00
J. Nick Koston 14f6f834f1 Route connection-complete events by ownership, not address 2026-08-10 15:59:50 -05:00
J. Nick Koston af1bbd16e5 Restart the connect timer when a client cancel lands at the deadline 2026-08-10 15:54:30 -05:00
J. Nick Koston 16bcba31ed Enter CONNECTING before the lock releases so an instant completion routes 2026-08-10 15:41:34 -05:00
J. Nick Koston 2a936c8b76 Move peer_addr_type_ to the word-sized member group 2026-08-10 15:35:27 -05:00
J. Nick Koston 4f98bc4baf Apply review feedback: owner-matched release, retry throttle, wrap link guards, slot-tagged logs 2026-08-10 15:31:58 -05:00
J. Nick Koston d5497f3c43 Simplify pool wrap init and connect serialization paths 2026-08-10 15:19:55 -05:00
Bonne EgglestonandGitHub 596827c51c [modbus_client] Add read/write multiple registers (FC 0x17) (#18215) 2026-08-10 15:18:48 -05:00
J. Nick Koston ff56ba16bd [bluetooth_connection] Support 3 connection slots on rp2 2026-08-10 15:12:30 -05:00
J. Nick KostonandGitHub 8a16ead8ce [web_server] Fix basic auth with long credentials (#18237) 2026-08-10 14:49:14 -05:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
334afdefb5 Update argcomplete requirement from >=3.7.0 to >=3.7.2 (#18243)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 15:44:32 -04:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
e7a2980b9c Bump ruff from 0.16.1 to 0.16.2 (#18245)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 15:44:30 -04:00
dependabot[bot]andGitHub b5a78c6c46 Bump CodSpeedHQ/action from 5.0.2 to 5.0.3 (#18246)
Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 19:36:22 +00:00
dependabot[bot]andGitHub 8650d175f4 Bump aiohappyeyeballs from 2.6.2 to 2.7.1 (#18244)
Signed-off-by: dependabot[bot] <support@github.com>
2026-08-10 14:26:41 -05:00
2999e7b925 [modbus] Add API for reading/writing coils and discrete inputs in server mode (#17264)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-08-10 14:23:49 -05:00
J. Nick KostonGitHubcopilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>bdraco
207ae2e4cb [bk72xx_ble] Support active scanning by packing the GAPM start command (#18169)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: bdraco <663432+bdraco@users.noreply.github.com>
2026-08-10 14:02:37 -05:00
Boris KrivonogandGitHub 9e78a768a2 [mitsubishi_cn105] Extract top-level hub (#16987) 2026-08-10 14:02:16 -05:00