eth: take size_t size in eth_process

This commit is contained in:
Matheus
2026-09-10 15:38:50 -03:00
parent 6adea26cb5
commit 895c6d9345
6 changed files with 16 additions and 8 deletions
+5 -2
View File
@@ -45,8 +45,11 @@ static void rx_dpc(context_t *context, dpcarg_t arg) {
while (netdev->rxqueue.lastusedindex != VIO_QUEUE_DEV_IDX(&netdev->rxqueue)) {
int idx = netdev->rxqueue.lastusedindex++ % netdev->rxqueue.size;
int buffidx = VIO_QUEUE_DEV_RING(&netdev->rxqueue)[idx].index;
void *ethbufferphys = (void *)(buffers[buffidx].address + sizeof(vioframe_t));
eth_process((netdev_t *)netdev, MAKE_HHDM(ethbufferphys));
size_t size = VIO_QUEUE_DEV_RING(&netdev->rxqueue)[idx].length;
if (size >= sizeof(vioframe_t)) {
void *phys = (void *)(buffers[buffidx].address + sizeof(vioframe_t));
eth_process((netdev_t *)netdev, MAKE_HHDM(phys), size - sizeof(vioframe_t));
}
VIO_QUEUE_DRV_RING(&netdev->rxqueue)[VIO_QUEUE_DRV_IDX(&netdev->rxqueue)++ % netdev->rxqueue.size] = buffidx;
*netdev->rxqueue.notify = 0;
}