/*
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
*
- * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ * @APPLE_LICENSE_HEADER_START@
*
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. The rights granted to you under the License
- * may not be used to create, or enable the creation or redistribution of,
- * unlawful or unlicensed copies of an Apple operating system, or to
- * circumvent, violate, or enable the circumvention or violation of, any
- * terms of an Apple operating system software license agreement.
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License"). You may not use this file except in compliance with the
+ * License. Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
*
- * Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this file.
- *
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
*
- * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ * @APPLE_LICENSE_HEADER_END@
*/
/*
* Copyright (c) 1990, 1995-1998 Apple Computer, Inc.
{
int i;
int attnMsg; /* True if attention message */
+ int s;
register gbuf_t *mp; /* send message block */
#ifdef notdef
register gbuf_t *tmp;
gbuf_freel(mlist);
return; /* can't get buffers... do nothing! */
}
+ ATDISABLE(s, sp->lock);
sp->callSend = 0; /* Clear flag */
use_attention_code = 0;
len = 0;
/* point past ADSP header (no attention) */
dp = ((char *) gbuf_wptr(mp)) + ADSP_FRAME_LEN;
- UAL_ASSIGN_HTON(sp->f.pktFirstByteSeq, sp->firstRtmtSeq);
+ UAL_ASSIGN(sp->f.pktFirstByteSeq, netdw(sp->firstRtmtSeq));
- UAS_ASSIGN_HTON(sp->of.version, netw(0x0100)); /* Fill in open connection parms */
- UAS_ASSIGN_HTON(sp->of.dstCID, sp->remCID); /* Destination CID */
- UAL_ASSIGN_HTON(sp->of.pktAttnRecvSeq, sp->attnRecvSeq);
+ UAS_ASSIGN(sp->of.version, netw(0x0100)); /* Fill in open connection parms */
+ UAS_ASSIGN(sp->of.dstCID, sp->remCID); /* Destination CID */
+ UAL_ASSIGN(sp->of.pktAttnRecvSeq, netdw(sp->attnRecvSeq));
bcopy((caddr_t) &sp->of, (caddr_t) dp, ADSP_OPEN_FRAME_LEN);
len += ADSP_OPEN_FRAME_LEN;
if (i & B_CTL_OREQ) {
- UAS_ASSIGN_HTON(sp->f.CID, sp->locCID);
+ UAS_ASSIGN(sp->f.CID, sp->locCID);
mask = B_CTL_OREQ;
sp->f.descriptor = ADSP_CONTROL_BIT | ADSP_CTL_OREQ;
} else if (i & B_CTL_OACK) {
- UAS_ASSIGN_HTON(sp->f.CID, sp->locCID);
+ UAS_ASSIGN(sp->f.CID, sp->locCID);
mask = B_CTL_OACK;
sp->f.descriptor = ADSP_CONTROL_BIT | ADSP_CTL_OACK;
} else if (i & B_CTL_OREQACK) {
- UAS_ASSIGN_HTON(sp->f.CID, sp->locCID);
+ UAS_ASSIGN(sp->f.CID, sp->locCID);
mask = B_CTL_OREQACK;
sp->f.descriptor = ADSP_CONTROL_BIT | ADSP_CTL_OREQACK;
} else /* Deny */
}
} else {
/* seq # of next byte to send */
- UAL_ASSIGN_HTON(sp->f.pktFirstByteSeq, sp->sendSeq);
+ UAL_ASSIGN(sp->f.pktFirstByteSeq, netdw(sp->sendSeq));
if (i & B_CTL_CLOSE) {
sp->state = sClosed; /* Now we're closed */
}
if (sp->sendDataAck) {
- UAL_ASSIGN_HTON(sp->f.pktFirstByteSeq, sp->sendSeq); /* seq # of next byte */
+ UAL_ASSIGN(sp->f.pktFirstByteSeq, netdw(sp->sendSeq)); /* seq # of next byte */
attnMsg = 0;
sp->f.descriptor = ADSP_CONTROL_BIT;
goto sendit;
*/
if (mp)
gbuf_freem(mp);
+ ATENABLE(s, sp->lock);
if (mlist)
adsp_sendddp(sp, mlist, 0, &sp->remoteAddress, DDP_ADSP);
return;
sendit:
if (attnMsg) {
- UAL_ASSIGN_HTON(sp->f.pktFirstByteSeq, sp->attnSendSeq);
- UAL_ASSIGN_HTON(sp->f.pktNextRecvSeq, sp->attnRecvSeq);
+ UAL_ASSIGN(sp->f.pktFirstByteSeq, netdw(sp->attnSendSeq));
+ UAL_ASSIGN(sp->f.pktNextRecvSeq, netdw(sp->attnRecvSeq));
UAS_ASSIGN(sp->f.pktRecvWdw, 0); /* Always zero in attn pkt */
} else {
sp->sendDataAck = 0;
- UAL_ASSIGN_HTON(sp->f.pktNextRecvSeq, sp->recvSeq);
- UAS_ASSIGN_HTON(sp->f.pktRecvWdw, CalcRecvWdw(sp));
+ UAL_ASSIGN(sp->f.pktNextRecvSeq, netdw(sp->recvSeq));
+ UAS_ASSIGN(sp->f.pktRecvWdw, netw(CalcRecvWdw(sp)));
}
if (use_attention_code) {
bcopy((caddr_t) &sp->f, (caddr_t) gbuf_wptr(mp), ADSP_FRAME_LEN + 2);
if (sp->state == sClosed) { /* must have sent a close advice */
/* send header + data */
+ ATENABLE(s, sp->lock);
adsp_sendddp(sp, mlist, 0, &sp->remoteAddress, DDP_ADSP);
DoClose(sp, 0, -1); /* complete close! */
return;
}
+ ATENABLE(s, sp->lock);
if (sp->state == sClosing) /* See if we were waiting on this write */
CheckOkToClose(sp);
goto top;
* The easiest fix to this timing dilemma seems to be to reset
* sendSeq to first Rtmt Seq if we're sending the first packet.
*/
- UAL_ASSIGN_HTON(sp->f.pktFirstByteSeq, sp->sendSeq);
+ UAL_ASSIGN(sp->f.pktFirstByteSeq, netdw(sp->sendSeq));
if (smp = sp->sbuf_mb) /* Get oldest header */
eom = 1;