Lines Matching +full:0 +full:x25

21 #define pr_fmt(fmt) "X25: " fmt
29 #include <net/x25.h>
36 struct x25_sock *x25 = x25_sk(sk); in x25_clear_queues() local
39 skb_queue_purge(&x25->ack_queue); in x25_clear_queues()
40 skb_queue_purge(&x25->interrupt_in_queue); in x25_clear_queues()
41 skb_queue_purge(&x25->interrupt_out_queue); in x25_clear_queues()
42 skb_queue_purge(&x25->fragment_queue); in x25_clear_queues()
54 struct x25_sock *x25 = x25_sk(sk); in x25_frames_acked() local
55 int modulus = x25->neighbour->extended ? X25_EMODULUS : X25_SMODULUS; in x25_frames_acked()
60 if (x25->va != nr) in x25_frames_acked()
61 while (skb_peek(&x25->ack_queue) && x25->va != nr) { in x25_frames_acked()
62 skb = skb_dequeue(&x25->ack_queue); in x25_frames_acked()
64 x25->va = (x25->va + 1) % modulus; in x25_frames_acked()
92 struct x25_sock *x25 = x25_sk(sk); in x25_validate_nr() local
93 unsigned short vc = x25->va; in x25_validate_nr()
94 int modulus = x25->neighbour->extended ? X25_EMODULUS : X25_SMODULUS; in x25_validate_nr()
96 while (vc != x25->vs) { in x25_validate_nr()
102 return nr == x25->vs ? 1 : 0; in x25_validate_nr()
111 struct x25_sock *x25 = x25_sk(sk); in x25_write_internal() local
130 if (x25->facilities.reverse & 0x80) { in x25_write_internal()
165 lci1 = (x25->lci >> 8) & 0x0F; in x25_write_internal()
166 lci2 = (x25->lci >> 0) & 0xFF; in x25_write_internal()
168 if (x25->neighbour->extended) { in x25_write_internal()
184 len = x25_addr_aton(addresses, &x25->dest_addr, in x25_write_internal()
185 &x25->source_addr); in x25_write_internal()
188 &x25->facilities, in x25_write_internal()
189 &x25->dte_facilities, in x25_write_internal()
190 x25->neighbour->global_facil_mask); in x25_write_internal()
192 skb_put_data(skb, x25->calluserdata.cuddata, in x25_write_internal()
193 x25->calluserdata.cudlength); in x25_write_internal()
194 x25->calluserdata.cudlength = 0; in x25_write_internal()
200 *dptr++ = 0x00; /* Address lengths */ in x25_write_internal()
202 &x25->facilities, in x25_write_internal()
203 &x25->dte_facilities, in x25_write_internal()
204 x25->vc_facil_mask); in x25_write_internal()
210 if(x25->facilities.reverse & 0x80) { in x25_write_internal()
212 x25->calluserdata.cuddata, in x25_write_internal()
213 x25->calluserdata.cudlength); in x25_write_internal()
215 x25->calluserdata.cudlength = 0; in x25_write_internal()
221 *dptr++ = x25->causediag.cause; in x25_write_internal()
222 *dptr++ = x25->causediag.diagnostic; in x25_write_internal()
228 *dptr++ = 0x00; /* XXX */ in x25_write_internal()
229 *dptr++ = 0x00; /* XXX */ in x25_write_internal()
235 if (x25->neighbour->extended) { in x25_write_internal()
238 *dptr++ = (x25->vr << 1) & 0xFE; in x25_write_internal()
242 *dptr++ |= (x25->vr << 5) & 0xE0; in x25_write_internal()
254 x25_transmit_link(skb, x25->neighbour); in x25_write_internal()
263 struct x25_sock *x25 = x25_sk(sk); in x25_decode() local
270 *ns = *nr = *q = *d = *m = 0; in x25_decode()
289 if (x25->neighbour->extended) { in x25_decode()
297 *nr = (frame[3] >> 1) & 0x7F; in x25_decode()
301 if ((frame[2] & 0x1F) == X25_RR || in x25_decode()
302 (frame[2] & 0x1F) == X25_RNR || in x25_decode()
303 (frame[2] & 0x1F) == X25_REJ) { in x25_decode()
304 *nr = (frame[2] >> 5) & 0x07; in x25_decode()
305 return frame[2] & 0x1F; in x25_decode()
309 if (x25->neighbour->extended) { in x25_decode()
310 if ((frame[2] & 0x01) == X25_DATA) { in x25_decode()
315 *q = (frame[0] & X25_Q_BIT) == X25_Q_BIT; in x25_decode()
316 *d = (frame[0] & X25_D_BIT) == X25_D_BIT; in x25_decode()
318 *nr = (frame[3] >> 1) & 0x7F; in x25_decode()
319 *ns = (frame[2] >> 1) & 0x7F; in x25_decode()
323 if ((frame[2] & 0x01) == X25_DATA) { in x25_decode()
324 *q = (frame[0] & X25_Q_BIT) == X25_Q_BIT; in x25_decode()
325 *d = (frame[0] & X25_D_BIT) == X25_D_BIT; in x25_decode()
327 *nr = (frame[2] >> 5) & 0x07; in x25_decode()
328 *ns = (frame[2] >> 1) & 0x07; in x25_decode()
341 struct x25_sock *x25 = x25_sk(sk); in x25_disconnect() local
346 x25->lci = 0; in x25_disconnect()
347 x25->state = X25_STATE_0; in x25_disconnect()
349 x25->causediag.cause = cause; in x25_disconnect()
350 x25->causediag.diagnostic = diagnostic; in x25_disconnect()
360 if (x25->neighbour) { in x25_disconnect()
362 x25_neigh_put(x25->neighbour); in x25_disconnect()
363 x25->neighbour = NULL; in x25_disconnect()
374 struct x25_sock *x25 = x25_sk(sk); in x25_check_rbuf() local
377 (x25->condition & X25_COND_OWN_RX_BUSY)) { in x25_check_rbuf()
378 x25->condition &= ~X25_COND_OWN_RX_BUSY; in x25_check_rbuf()
379 x25->condition &= ~X25_COND_ACK_PENDING; in x25_check_rbuf()
380 x25->vl = x25->vr; in x25_check_rbuf()