Lines Matching refs:ax25
33 void ax25_clear_queues(ax25_cb *ax25) in ax25_clear_queues() argument
35 skb_queue_purge(&ax25->write_queue); in ax25_clear_queues()
36 skb_queue_purge(&ax25->ack_queue); in ax25_clear_queues()
37 skb_queue_purge(&ax25->reseq_queue); in ax25_clear_queues()
38 skb_queue_purge(&ax25->frag_queue); in ax25_clear_queues()
46 void ax25_frames_acked(ax25_cb *ax25, unsigned short nr) in ax25_frames_acked() argument
53 if (ax25->va != nr) { in ax25_frames_acked()
54 while (skb_peek(&ax25->ack_queue) != NULL && ax25->va != nr) { in ax25_frames_acked()
55 skb = skb_dequeue(&ax25->ack_queue); in ax25_frames_acked()
57 ax25->va = (ax25->va + 1) % ax25->modulus; in ax25_frames_acked()
62 void ax25_requeue_frames(ax25_cb *ax25) in ax25_requeue_frames() argument
71 while ((skb = skb_dequeue_tail(&ax25->ack_queue)) != NULL) in ax25_requeue_frames()
72 skb_queue_head(&ax25->write_queue, skb); in ax25_requeue_frames()
79 int ax25_validate_nr(ax25_cb *ax25, unsigned short nr) in ax25_validate_nr() argument
81 unsigned short vc = ax25->va; in ax25_validate_nr()
83 while (vc != ax25->vs) { in ax25_validate_nr()
85 vc = (vc + 1) % ax25->modulus; in ax25_validate_nr()
88 if (nr == ax25->vs) return 1; in ax25_validate_nr()
97 int ax25_decode(ax25_cb *ax25, struct sk_buff *skb, int *ns, int *nr, int *pf) in ax25_decode() argument
105 if (ax25->modulus == AX25_MODULUS) { in ax25_decode()
147 void ax25_send_control(ax25_cb *ax25, int frametype, int poll_bit, int type) in ax25_send_control() argument
152 if ((skb = alloc_skb(ax25->ax25_dev->dev->hard_header_len + 2, GFP_ATOMIC)) == NULL) in ax25_send_control()
155 skb_reserve(skb, ax25->ax25_dev->dev->hard_header_len); in ax25_send_control()
160 if (ax25->modulus == AX25_MODULUS) { in ax25_send_control()
165 *dptr |= (ax25->vr << 5); in ax25_send_control()
174 dptr[1] = (ax25->vr << 1); in ax25_send_control()
179 ax25_transmit_buffer(ax25, skb, type); in ax25_send_control()
220 void ax25_calculate_t1(ax25_cb *ax25) in ax25_calculate_t1() argument
224 switch (ax25->backoff) { in ax25_calculate_t1()
229 t += 2 * ax25->n2count; in ax25_calculate_t1()
233 for (n = 0; n < ax25->n2count; n++) in ax25_calculate_t1()
239 ax25->t1 = t * ax25->rtt; in ax25_calculate_t1()
245 void ax25_calculate_rtt(ax25_cb *ax25) in ax25_calculate_rtt() argument
247 if (ax25->backoff == 0) in ax25_calculate_rtt()
250 if (ax25_t1timer_running(ax25) && ax25->n2count == 0) in ax25_calculate_rtt()
251 ax25->rtt = (9 * ax25->rtt + ax25->t1 - ax25_display_timer(&ax25->t1timer)) / 10; in ax25_calculate_rtt()
253 if (ax25->rtt < AX25_T1CLAMPLO) in ax25_calculate_rtt()
254 ax25->rtt = AX25_T1CLAMPLO; in ax25_calculate_rtt()
256 if (ax25->rtt > AX25_T1CLAMPHI) in ax25_calculate_rtt()
257 ax25->rtt = AX25_T1CLAMPHI; in ax25_calculate_rtt()
260 void ax25_disconnect(ax25_cb *ax25, int reason) in ax25_disconnect() argument
262 ax25_clear_queues(ax25); in ax25_disconnect()
265 del_timer_sync(&ax25->timer); in ax25_disconnect()
266 del_timer_sync(&ax25->t1timer); in ax25_disconnect()
267 del_timer_sync(&ax25->t2timer); in ax25_disconnect()
268 del_timer_sync(&ax25->t3timer); in ax25_disconnect()
269 del_timer_sync(&ax25->idletimer); in ax25_disconnect()
271 if (!ax25->sk || !sock_flag(ax25->sk, SOCK_DESTROY)) in ax25_disconnect()
272 ax25_stop_heartbeat(ax25); in ax25_disconnect()
273 ax25_stop_t1timer(ax25); in ax25_disconnect()
274 ax25_stop_t2timer(ax25); in ax25_disconnect()
275 ax25_stop_t3timer(ax25); in ax25_disconnect()
276 ax25_stop_idletimer(ax25); in ax25_disconnect()
279 ax25->state = AX25_STATE_0; in ax25_disconnect()
281 ax25_link_failed(ax25, reason); in ax25_disconnect()
283 if (ax25->sk != NULL) { in ax25_disconnect()
285 bh_lock_sock(ax25->sk); in ax25_disconnect()
286 ax25->sk->sk_state = TCP_CLOSE; in ax25_disconnect()
287 ax25->sk->sk_err = reason; in ax25_disconnect()
288 ax25->sk->sk_shutdown |= SEND_SHUTDOWN; in ax25_disconnect()
289 if (!sock_flag(ax25->sk, SOCK_DEAD)) { in ax25_disconnect()
290 ax25->sk->sk_state_change(ax25->sk); in ax25_disconnect()
291 sock_set_flag(ax25->sk, SOCK_DEAD); in ax25_disconnect()
293 bh_unlock_sock(ax25->sk); in ax25_disconnect()