Files
Leency 9ec66b0eba drivers/i8255x: get to work on a real device (#725)
- the TX reclaim loop in int_handler multiplied sizeof.txfd by itself  (mul eax) instead of by last_tx, so it looked 1024 bytes past tx_ring and never freed a descriptor
- it also left txfd.status set, and transmit treats a non-zero status as busy, so once the 16-entry ring wrapped every send ended in "TX overrun": DHCP fell back to link-local, ping showed "Socket error", while the link still read as connected
- reclaim only descriptors the device completed (TXFD_STATUS_C) and zero their status; transmit now checks for an unreclaimed buffer (virt_addr)

Seen on an EtherExpress Pro/100 in a Pentium II. Reproduced in QEMU (-cpu pentium2, i82557b): ping stopped at the 12th reply every time; with the fix it runs indefinitely, also under a UDP flood.

Reviewed-on: KolibriOS/kolibrios#725
Reviewed-by: hidnplayr <hidnplayr@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: leency <lipatov.kiril@gmail.com>
2026-09-29 19:03:24 +00:00
..
2024-05-21 14:45:21 +00:00
2024-05-21 14:45:21 +00:00
2018-07-01 10:48:38 +00:00
2026-04-09 06:07:03 +00:00
2024-05-22 10:10:18 +00:00
2024-05-22 10:10:18 +00:00
2021-07-12 22:42:27 +00:00
2021-08-22 21:14:54 +00:00
2018-04-21 08:29:06 +00:00
2014-09-12 15:15:23 +00:00