3 * ===================================
4 * HARP | Host ATM Research Platform
5 * ===================================
8 * This Host ATM Research Platform ("HARP") file (the "Software") is
9 * made available by Network Computing Services, Inc. ("NetworkCS")
10 * "AS IS". NetworkCS does not provide maintenance, improvements or
11 * support of any kind.
13 * NETWORKCS MAKES NO WARRANTIES OR REPRESENTATIONS, EXPRESS OR IMPLIED,
14 * INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY
15 * AND FITNESS FOR A PARTICULAR PURPOSE, AS TO ANY ELEMENT OF THE
16 * SOFTWARE OR ANY SUPPORT PROVIDED IN CONNECTION WITH THIS SOFTWARE.
17 * In no event shall NetworkCS be responsible for any damages, including
18 * but not limited to consequential damages, arising from or relating to
19 * any use of the Software or related support.
21 * Copyright 1994-1998 Network Computing Services, Inc.
23 * Copies of this Software may be made, however, the above copyright
24 * notice must be reproduced on all copies.
26 * @(#) $FreeBSD: src/sys/netatm/uni/qsaal1_subr.c,v 1.4 2000/01/17 20:49:50 mks Exp $
31 * ATM Forum UNI Support
32 * ---------------------
34 * ITU-T Q.SAAL1 - Subroutines
38 #include <netatm/kern_include.h>
40 #include <netatm/uni/sscop.h>
41 #include <netatm/uni/sscop_misc.h>
42 #include <netatm/uni/sscop_var.h>
45 __RCSID("@(#) $FreeBSD: src/sys/netatm/uni/qsaal1_subr.c,v 1.4 2000/01/17 20:49:50 mks Exp $");
50 * Re-establish a new SSCOP Connection
53 * sop pointer to sscop connection block
60 qsaal1_reestablish(sop)
67 sop->so_timer[SSCOP_T_POLL] = 0;
68 sop->so_timer[SSCOP_T_NORESP] = 0;
69 sop->so_flags &= ~SOF_KEEPALIVE;
72 * Note that we're reestablishing a connection
74 sop->so_flags |= SOF_REESTAB;
80 (void) sscop_send_bgn(sop, SSCOP_SOURCE_SSCOP);
83 * Reset transmit variables
85 qsaal1_reset_xmit(sop);
88 * Set retransmit timer
90 sop->so_timer[SSCOP_T_CC] = sop->so_parm.sp_timecc;
95 sop->so_state = SOS_OUTCONN;
102 * Reset connection's transmitter state
105 * sop pointer to sscop connection block
112 qsaal1_reset_xmit(sop)
117 * Drain the transmission queues
119 sscop_xmit_drain(sop);
122 * Reset transmit variables
124 SEQ_SET(sop->so_send, 0);
125 SEQ_SET(sop->so_pollsend, 0);
126 SEQ_SET(sop->so_ack, 0);
127 SEQ_SET(sop->so_pollack, 0);
128 if (sop->so_state != SOS_INCONN)
129 SEQ_SET(sop->so_sendmax, 0);
130 sop->so_polldata = 0;
137 * Reset connection's receiver state
140 * sop pointer to sscop connection block
147 qsaal1_reset_rcvr(sop)
152 * Drain the receiver queues
154 sscop_rcvr_drain(sop);
157 * Reset transmit variables
159 SEQ_SET(sop->so_rcvnext, 0);
160 SEQ_SET(sop->so_rcvhigh, 0);
161 SEQ_SET(sop->so_rcvmax, sop->so_parm.sp_rcvwin);
168 * Clear connection's connection data
171 * sop pointer to sscop connection block
178 qsaal1_clear_connection(sop)
183 * Can we clear transmit buffers ??
185 if ((sop->so_flags & SOF_NOCLRBUF) == 0) {
187 * Yes, drain the transmission queues
189 sscop_xmit_drain(sop);
193 * Clear service required flag
195 sop->so_flags &= ~SOF_XMITSRVC;
198 * Drain receive queue buffers
200 sscop_rcvr_drain(sop);