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 $
27 * @(#) $DragonFly: src/sys/netproto/atm/uni/qsaal1_subr.c,v 1.5 2006/01/14 13:36:39 swildner Exp $
31 * ATM Forum UNI Support
32 * ---------------------
34 * ITU-T Q.SAAL1 - Subroutines
38 #include <netproto/atm/kern_include.h>
41 #include "sscop_misc.h"
42 #include "sscop_var.h"
45 * Re-establish a new SSCOP Connection
48 * sop pointer to sscop connection block
55 qsaal1_reestablish(struct sscop
*sop
)
61 sop
->so_timer
[SSCOP_T_POLL
] = 0;
62 sop
->so_timer
[SSCOP_T_NORESP
] = 0;
63 sop
->so_flags
&= ~SOF_KEEPALIVE
;
66 * Note that we're reestablishing a connection
68 sop
->so_flags
|= SOF_REESTAB
;
74 sscop_send_bgn(sop
, SSCOP_SOURCE_SSCOP
);
77 * Reset transmit variables
79 qsaal1_reset_xmit(sop
);
82 * Set retransmit timer
84 sop
->so_timer
[SSCOP_T_CC
] = sop
->so_parm
.sp_timecc
;
89 sop
->so_state
= SOS_OUTCONN
;
96 * Reset connection's transmitter state
99 * sop pointer to sscop connection block
106 qsaal1_reset_xmit(struct sscop
*sop
)
110 * Drain the transmission queues
112 sscop_xmit_drain(sop
);
115 * Reset transmit variables
117 SEQ_SET(sop
->so_send
, 0);
118 SEQ_SET(sop
->so_pollsend
, 0);
119 SEQ_SET(sop
->so_ack
, 0);
120 SEQ_SET(sop
->so_pollack
, 0);
121 if (sop
->so_state
!= SOS_INCONN
)
122 SEQ_SET(sop
->so_sendmax
, 0);
123 sop
->so_polldata
= 0;
130 * Reset connection's receiver state
133 * sop pointer to sscop connection block
140 qsaal1_reset_rcvr(struct sscop
*sop
)
144 * Drain the receiver queues
146 sscop_rcvr_drain(sop
);
149 * Reset transmit variables
151 SEQ_SET(sop
->so_rcvnext
, 0);
152 SEQ_SET(sop
->so_rcvhigh
, 0);
153 SEQ_SET(sop
->so_rcvmax
, sop
->so_parm
.sp_rcvwin
);
160 * Clear connection's connection data
163 * sop pointer to sscop connection block
170 qsaal1_clear_connection(struct sscop
*sop
)
174 * Can we clear transmit buffers ??
176 if ((sop
->so_flags
& SOF_NOCLRBUF
) == 0) {
178 * Yes, drain the transmission queues
180 sscop_xmit_drain(sop
);
184 * Clear service required flag
186 sop
->so_flags
&= ~SOF_XMITSRVC
;
189 * Drain receive queue buffers
191 sscop_rcvr_drain(sop
);