feat(renaser): Fase 18 — red: virtio-net y el primer hola al exterior
renaser hablaba consigo mismo. Esta fase abre una boca y una oreja al exterior con una tarjeta de red, reutilizando el `KernelHal` del disco y el mapeador MMIO (la pieza estructural que hizo esto posible). - `drivers/red`: monta `VirtIONet<KernelHal, PciTransport, 16>`, expone `enviar(frame)` y `drenar_rx(callback)`. Sin pila TCP/IP — solo Ethernet crudo; la composición de paquetes la hace el llamante. - `componer_arp_request(mac, ip, objetivo)` construye el saludo inicial: «¿quien tiene 10.0.2.2?» dirigido al gateway de QEMU. - `interrupts::registrar_irq_red` + handler `irq_red`, gemelo del de disco. La IRQ del dispositivo activa `red::atender_irq`, que hace `ack_interrupt` y suelta la línea. - `tarea_red` en el reactor: al arrancar envía el ARP, después cada fotograma drena la cola RX y vuelca cada paquete a COM1. - QEMU args ganan `-netdev user,id=net0 -device virtio-net-pci`. Verificado con `-object filter-dump,...,file=/tmp/red.pcap`: red :: virtio-net :: MAC 52:54:00:12:34:56 :: IRQ Some(11) red :: ARP REQUEST enviado :: ¿quien tiene 10.0.2.2? red :: RX 64 bytes :: src=52:55:0a:00:02:02 type=0x0806 El src del paquete entrante (`52:55:0a:00:02:02`) codifica `10.0.2.2` dentro del MAC — es el gateway de QEMU respondiendo. Renaser ya habla con el exterior. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+19
-2
@@ -303,8 +303,25 @@ texto sigue ahí. Verificada en QEMU.
|
||||
- `CELDA_TASKBAR_ANCHO` baja de 150 a 130 px para que las ocho pestañas
|
||||
quepan holgadas con el lanzador y el reloj.
|
||||
|
||||
Líneas abiertas posteriores: reciclado de las ranuras de ventana cerradas;
|
||||
audio con varias voces (PCM) más allá del tono único de la bocina.
|
||||
## Fase 18 — red: virtio-net y el primer hola al exterior (completada)
|
||||
|
||||
renaser hablaba solo. Esta fase abre una boca y una oreja al exterior con
|
||||
virtio-net, reutilizando el `KernelHal` del disco y el mapeador MMIO. Al
|
||||
arrancar, el kernel envía un ARP request al gateway de QEMU; lee la
|
||||
respuesta y la registra. Verificada con captura pcap.
|
||||
|
||||
- Driver `drivers/red`: monta `VirtIONet<KernelHal, PciTransport, 16>`,
|
||||
expone `enviar(frame)` y `drenar_rx(callback)`. Sin pila TCP/IP — solo
|
||||
ethernet crudo —; la composición de paquetes se hace en el llamante.
|
||||
- `componer_arp_request`: helper para construir el ARP request inicial.
|
||||
- `interrupts::registrar_irq_red` + handler de IDT, gemelo del de disco.
|
||||
- Tarea `tarea_red` en el reactor: envía el ARP al arrancar, drena RX en
|
||||
cada fotograma y vuelca cada paquete a COM1.
|
||||
- QEMU args ganan `-netdev user,id=net0 -device virtio-net-pci`.
|
||||
|
||||
Líneas abiertas posteriores: capacidades `sys_net_*` para que los apps
|
||||
también hablen; una pila mínima ARP/IP/UDP; reciclado de las ranuras de
|
||||
ventana cerradas; audio con varias voces (PCM).
|
||||
|
||||
## Principios que persisten entre fases
|
||||
|
||||
|
||||
Reference in New Issue
Block a user