mirror of
git://git.9front.org/plan9front/plan9front
synced 2025-01-12 11:10:06 +00:00
etherimx: fix missing barrier for doorbell (thanks sigrid)
the symptom is that ping is apparently skipping transmits which recover with the next send, resulting in exactly send-period spikes in the ping rtt. It appears that the core seems to reorder writes to uncached memory, which can result in the doorbell being written before the descriptor status bits are written. put a coherence() barrier before writing doorbell fixes it. thanks sigrid for reporting the issue!
This commit is contained in:
parent
3598b7cf36
commit
fc859af624
1 changed files with 2 additions and 0 deletions
|
@ -362,6 +362,7 @@ txproc(void *arg)
|
|||
d->status = BLEN(b) | TD_OWN | TD_R | TD_L | TD_TC;
|
||||
i++;
|
||||
}
|
||||
coherence();
|
||||
wr(ctlr, ENET_TDAR, TDAR_ACTIVE);
|
||||
}
|
||||
}
|
||||
|
@ -453,6 +454,7 @@ rxproc(void *arg)
|
|||
d->status = RD_E;
|
||||
i++;
|
||||
}
|
||||
coherence();
|
||||
wr(ctlr, ENET_RDAR, RDAR_ACTIVE);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue