Revision e824012b
b/hw/eepro100.c | ||
---|---|---|
120 | 120 |
#define RU_NOP 0x0000 |
121 | 121 |
#define RX_START 0x0001 |
122 | 122 |
#define RX_RESUME 0x0002 |
123 |
#define RX_ABORT 0x0004
|
|
123 |
#define RU_ABORT 0x0004
|
|
124 | 124 |
#define RX_ADDR_LOAD 0x0006 |
125 | 125 |
#define RX_RESUMENR 0x0007 |
126 | 126 |
#define INT_MASK 0x0100 |
... | ... | |
426 | 426 |
eepro100_interrupt(s, 0x40); |
427 | 427 |
} |
428 | 428 |
|
429 |
#if 0 |
|
430 | 429 |
static void eepro100_rnr_interrupt(EEPRO100State * s) |
431 | 430 |
{ |
432 | 431 |
/* RU is not ready. */ |
433 | 432 |
eepro100_interrupt(s, 0x10); |
434 | 433 |
} |
435 |
#endif |
|
436 | 434 |
|
437 | 435 |
static void eepro100_mdi_interrupt(EEPRO100State * s) |
438 | 436 |
{ |
... | ... | |
1065 | 1063 |
} |
1066 | 1064 |
set_ru_state(s, ru_ready); |
1067 | 1065 |
break; |
1066 |
case RU_ABORT: |
|
1067 |
/* RU abort. */ |
|
1068 |
if (get_ru_state(s) == ru_ready) { |
|
1069 |
eepro100_rnr_interrupt(s); |
|
1070 |
} |
|
1071 |
set_ru_state(s, ru_idle); |
|
1072 |
break; |
|
1068 | 1073 |
case RX_ADDR_LOAD: |
1069 | 1074 |
/* Load RU base. */ |
1070 | 1075 |
TRACE(OTHER, logout("val=0x%02x (RU base address)\n", val)); |
... | ... | |
1747 | 1752 |
if (get_ru_state(s) != ru_ready) { |
1748 | 1753 |
/* No resources available. */ |
1749 | 1754 |
logout("no resources, state=%u\n", get_ru_state(s)); |
1755 |
/* TODO: RNR interrupt only at first failed frame? */ |
|
1756 |
eepro100_rnr_interrupt(s); |
|
1750 | 1757 |
s->statistics.rx_resource_errors++; |
1751 | 1758 |
//~ assert(!"no resources"); |
1752 | 1759 |
return -1; |
Also available in: Unified diff