From 245f8c72842d9a8bb39a389d2d68c5f7090d4e70 Mon Sep 17 00:00:00 2001 From: David du Colombier <0intro@gmail.com> Date: Wed, 2 Jan 1991 00:00:00 +0000 Subject: [PATCH] Plan 9 from Bell Labs 1991-01-02 --- port/devnonet.c | 36 +++++++++++++----------------------- power/dat.h | 2 -- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/port/devnonet.c b/port/devnonet.c index baad8539df1c68addeca58c1d4cd9cf397b0e48a..d23135cba6d07dd2130d83efebd84e22dfb5ba62 100644 --- a/port/devnonet.c +++ b/port/devnonet.c @@ -37,7 +37,6 @@ static void sendctlmsg(Noconv*, int, int); static void sendmsg(Noconv*, Nomsg*); static void startconv(Noconv*, int, char*, int); static void queueack(Noconv*, int); -static void sendack(Noconv*, int); static void nonetiput(Queue*, Block*); static void nonetoput(Queue*, Block*); @@ -921,7 +920,7 @@ sendmsg(Noconv *cp, Nomsg *mp) wq = ifc->wq->next; /* - * one transmitter at a time + * one transmitter at a time for this connection */ qlock(&cp->xlock); @@ -1005,28 +1004,17 @@ sendmsg(Noconv *cp, Nomsg *mp) static void sendctlmsg(Noconv *cp, int flag, int new) { - cp->ctl.len = 0; - cp->ctl.first = 0; - cp->ctl.acked = 0; + Nomsg ctl; + + ctl.len = 0; + ctl.first = 0; + ctl.acked = 0; if(new) - cp->ctl.mid = Nnomsg^cp->out[cp->next].mid; + ctl.mid = Nnomsg^cp->out[cp->next].mid; else - cp->ctl.mid = cp->lastacked; + ctl.mid = cp->lastacked; cp->hdr->flag |= flag; - sendmsg(cp, &cp->ctl); -} - -/* - * send an acknowledgement - */ -static void -sendack(Noconv *cp, int ack) -{ - cp->ackmsg.len = 0; - cp->ackmsg.first = 0; - cp->ackmsg.acked = ack; - cp->ackmsg.mid = cp->lastacked; - sendmsg(cp, &cp->ctl); + sendmsg(cp, &ctl); } /* @@ -1074,8 +1062,10 @@ nonetrcvmsg(Noconv *cp, Block *bp) if(f & NO_HANGUP) hangup(cp); } else { - if(r>0) - sendack(cp, h->mid); + if(r>0){ + queueack(cp, h->mid); + sendctlmsg(cp, 0, 0); + } cp->bad++; } freeb(bp); diff --git a/power/dat.h b/power/dat.h index 19aea1b1e0b9a6d7e2be9904d2024734b8a5121b..1d56ebcaf0ad7ea766cea7c39a2d50e481c7651a 100644 --- a/power/dat.h +++ b/power/dat.h @@ -561,8 +561,6 @@ struct Noconv { QLock xlock; /* one trasmitter at a time */ Rendez r; /* process waiting for an output mid */ - Nomsg ctl; /* for control messages */ - Nomsg ackmsg; /* for acknowledge messages */ QLock mlock; /* lock for out */ Nomsg out[Nnomsg]; /* messages being sent */ int first; /* first unacknowledged message */