+-- On Fri, 20 Nov 2015, Stefan Weil wrote --+ | diff --git a/hw/net/eepro100.c b/hw/net/eepro100.c | index 60333b7..685a478 100644 | --- a/hw/net/eepro100.c | +++ b/hw/net/eepro100.c | @@ -774,6 +774,11 @@ static void tx_command(EEPRO100State *s) | #if 0 | uint16_t tx_buffer_el = lduw_le_pci_dma(&s->dev, tbd_address + 6); | #endif | + if (tx_buffer_size == 0) { | + /* Prevent an endless loop. */ | + logout("loop in %s:%u\n", __FILE__, __LINE__); | + break; | + }
Yes, looks good. Where is 'lduw_le_pci_dma' routine defined? | static void action_command(EEPRO100State *s) | { | + /* The loop below won't stop if it gets special handcrafted data. | + Therefore we limit the number of iterations. */ | + unsigned max_loop_count = 16; | + Is '16' a lower count for the command list? Earilier Jason mentioned 256. Not sure what is an ideal count. Thank you. -- - P J P 47AF CE69 3A90 54AA 9045 1053 DD13 3D32 FE5B 041F