when you add caches, dma commands within the state machine are delayed and cause the state machine to exit until the dma comes back. thus, all relevant code must be executed BEFORE going to do the dma code.
dev/ns_gige.cc: rearrange code so nothing gets skipped when "doing dma." --HG-- extra : convert_revision : cca66885f45e7df1831e2d8ccaddf5ece7600b13
This commit is contained in:
parent
9dba9e462f
commit
7b2691d537
1 changed files with 3 additions and 4 deletions
|
@ -1889,11 +1889,7 @@ NSGigE::txKick()
|
|||
descDmaWrites++;
|
||||
descDmaWrBytes += txDmaLen;
|
||||
|
||||
if (doTxDmaWrite())
|
||||
goto exit;
|
||||
|
||||
transmit();
|
||||
|
||||
txPacket = 0;
|
||||
|
||||
if (txHalt) {
|
||||
|
@ -1902,6 +1898,9 @@ NSGigE::txKick()
|
|||
txHalt = false;
|
||||
} else
|
||||
txState = txAdvance;
|
||||
|
||||
if (doTxDmaWrite())
|
||||
goto exit;
|
||||
}
|
||||
} else {
|
||||
DPRINTF(EthernetSM, "this descriptor isn't done yet\n");
|
||||
|
|
Loading…
Reference in a new issue