mirror of
https://github.com/prirun/p50em.git
synced 2026-01-30 05:04:04 +00:00
Interrupt immediately after xmit and rcv instead of doing a poll.
This commit is contained in:
13
devpnc.h
13
devpnc.h
@@ -884,6 +884,7 @@ int devpnc (int class, int func, int device) {
|
||||
fatal(NULL);
|
||||
}
|
||||
TRACE(T_RIO, "PNC configured\n");
|
||||
devpoll[device] = PNCPOLL*gvp->instpermsec;
|
||||
return 0;
|
||||
|
||||
case 0:
|
||||
@@ -1037,7 +1038,7 @@ int devpnc (int class, int func, int device) {
|
||||
IOSKIP;
|
||||
rcvstat = PNCRSBUSY; /* set receive busy */
|
||||
pncinitdma(&rcv, "rcv");
|
||||
devpoll[device] = 10; /* quick poll following recv */
|
||||
goto intrexit; /* try read & maybe interrupt */
|
||||
|
||||
} else if (func == 015) { /* initiate xmit, dma chan in A */
|
||||
if (!(pncstat & PNCNSCONNECTED)) {
|
||||
@@ -1100,7 +1101,7 @@ int devpnc (int class, int func, int device) {
|
||||
}
|
||||
pncstat |= PNCNSXMITINT; /* set xmit interrupt */
|
||||
pncstat |= PNCNSTOKEN; /* and token seen */
|
||||
devpoll[device] = 10; /* quick poll following xmit */
|
||||
goto intrexit; /* rcv & interrupt following xmit */
|
||||
|
||||
} else if (func == 016) { /* set interrupt vector */
|
||||
pncvec = crs[A];
|
||||
@@ -1121,16 +1122,14 @@ int devpnc (int class, int func, int device) {
|
||||
|
||||
case 4:
|
||||
TRACE(T_RIO, " POLL '%02o%02o\n", func, device);
|
||||
|
||||
devpoll[device] = PNCPOLL*gvp->instpermsec;
|
||||
time(&timenow);
|
||||
pncaccept(timenow); /* accept 1 new connection each poll */
|
||||
pncconnect(timenow); /* try to connect to a disconnected node */
|
||||
|
||||
intrexit:
|
||||
if (rcv.state == PNCBSRDY)
|
||||
pncrecv(timenow); /* try to read from a node */
|
||||
|
||||
/* set default repoll and take any pending interrupt */
|
||||
|
||||
devpoll[device] = PNCPOLL*gvp->instpermsec;
|
||||
if (enabled && (pncstat & 0xC000)) {
|
||||
if (gvp->intvec == -1)
|
||||
gvp->intvec = pncvec;
|
||||
|
||||
Reference in New Issue
Block a user