Lines Matching +full:rom +full:- +full:15 +full:h
1 // SPDX-License-Identifier: GPL-2.0-or-later
6 #include <linux/errno.h>
7 #include <linux/types.h>
8 #include <linux/socket.h>
9 #include <linux/in.h>
10 #include <linux/kernel.h>
11 #include <linux/timer.h>
12 #include <linux/string.h>
13 #include <linux/sockios.h>
14 #include <linux/net.h>
15 #include <linux/slab.h>
16 #include <net/ax25.h>
17 #include <linux/inet.h>
18 #include <linux/netdevice.h>
19 #include <linux/skbuff.h>
20 #include <net/sock.h>
21 #include <net/tcp_states.h>
22 #include <linux/uaccess.h>
23 #include <linux/fcntl.h>
24 #include <linux/mm.h>
25 #include <linux/interrupt.h>
26 #include <net/netrom.h>
35 skb_queue_purge(&sk->sk_write_queue); in nr_clear_queues()
36 skb_queue_purge(&nr->ack_queue); in nr_clear_queues()
37 skb_queue_purge(&nr->reseq_queue); in nr_clear_queues()
38 skb_queue_purge(&nr->frag_queue); in nr_clear_queues()
43 * acknowledged. This replaces the boxes labelled "V(a) <- N(r)" on the
52 * Remove all the ack-ed frames from the ack queue. in nr_frames_acked()
54 if (nrom->va != nr) { in nr_frames_acked()
55 while (skb_peek(&nrom->ack_queue) != NULL && nrom->va != nr) { in nr_frames_acked()
56 skb = skb_dequeue(&nrom->ack_queue); in nr_frames_acked()
58 nrom->va = (nrom->va + 1) % NR_MODULUS; in nr_frames_acked()
64 * Requeue all the un-ack-ed frames on the output queue to be picked
72 while ((skb = skb_dequeue(&nr_sk(sk)->ack_queue)) != NULL) { in nr_requeue_frames()
74 skb_queue_head(&sk->sk_write_queue, skb); in nr_requeue_frames()
76 skb_append(skb_prev, skb, &sk->sk_write_queue); in nr_requeue_frames()
88 unsigned short vc = nrom->va; in nr_validate_nr()
90 while (vc != nrom->vs) { in nr_validate_nr()
95 return nr == nrom->vs; in nr_validate_nr()
104 unsigned short vc = nr->vr; in nr_in_rx_window()
105 unsigned short vt = (nr->vl + nr->window) % NR_MODULUS; in nr_in_rx_window()
133 len += (nr->bpqext) ? 2 : 1; in nr_write_internal()
140 printk(KERN_ERR "NET/ROM: nr_write_internal - invalid frame type %d\n", frametype); in nr_write_internal()
149 * Space for AX.25 and NET/ROM network header in nr_write_internal()
157 timeout = nr->t1 / HZ; in nr_write_internal()
158 *dptr++ = nr->my_index; in nr_write_internal()
159 *dptr++ = nr->my_id; in nr_write_internal()
163 *dptr++ = nr->window; in nr_write_internal()
164 memcpy(dptr, &nr->user_addr, AX25_ADDR_LEN); in nr_write_internal()
169 memcpy(dptr, &nr->source_addr, AX25_ADDR_LEN); in nr_write_internal()
179 *dptr++ = nr->your_index; in nr_write_internal()
180 *dptr++ = nr->your_id; in nr_write_internal()
181 *dptr++ = nr->my_index; in nr_write_internal()
182 *dptr++ = nr->my_id; in nr_write_internal()
184 *dptr++ = nr->window; in nr_write_internal()
185 if (nr->bpqext) in nr_write_internal()
191 *dptr++ = nr->your_index; in nr_write_internal()
192 *dptr++ = nr->your_id; in nr_write_internal()
199 *dptr++ = nr->your_index; in nr_write_internal()
200 *dptr++ = nr->your_id; in nr_write_internal()
202 *dptr++ = nr->vr; in nr_write_internal()
245 *dptr++ = skb->data[15]; in __nr_transmit_reply()
246 *dptr++ = skb->data[16]; in __nr_transmit_reply()
248 *dptr++ = skb->data[15]; in __nr_transmit_reply()
249 *dptr++ = skb->data[16]; in __nr_transmit_reply()
270 nr_sk(sk)->state = NR_STATE_0; in nr_disconnect()
272 sk->sk_state = TCP_CLOSE; in nr_disconnect()
273 sk->sk_err = reason; in nr_disconnect()
274 sk->sk_shutdown |= SEND_SHUTDOWN; in nr_disconnect()
277 sk->sk_state_change(sk); in nr_disconnect()