• Home
  • Raw
  • Download

Lines Matching refs:sk

26 static void dccp_enqueue_skb(struct sock *sk, struct sk_buff *skb)  in dccp_enqueue_skb()  argument
29 __skb_queue_tail(&sk->sk_receive_queue, skb); in dccp_enqueue_skb()
30 skb_set_owner_r(skb, sk); in dccp_enqueue_skb()
31 sk->sk_data_ready(sk); in dccp_enqueue_skb()
34 static void dccp_fin(struct sock *sk, struct sk_buff *skb) in dccp_fin() argument
42 sk->sk_shutdown = SHUTDOWN_MASK; in dccp_fin()
43 sock_set_flag(sk, SOCK_DONE); in dccp_fin()
44 dccp_enqueue_skb(sk, skb); in dccp_fin()
47 static int dccp_rcv_close(struct sock *sk, struct sk_buff *skb) in dccp_rcv_close() argument
51 switch (sk->sk_state) { in dccp_rcv_close()
69 if (dccp_sk(sk)->dccps_role != DCCP_ROLE_CLIENT) in dccp_rcv_close()
74 dccp_send_reset(sk, DCCP_RESET_CODE_CLOSED); in dccp_rcv_close()
75 dccp_done(sk); in dccp_rcv_close()
81 dccp_fin(sk, skb); in dccp_rcv_close()
82 dccp_set_state(sk, DCCP_PASSIVE_CLOSE); in dccp_rcv_close()
88 sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_HUP); in dccp_rcv_close()
93 static int dccp_rcv_closereq(struct sock *sk, struct sk_buff *skb) in dccp_rcv_closereq() argument
103 if (dccp_sk(sk)->dccps_role != DCCP_ROLE_CLIENT) { in dccp_rcv_closereq()
104 dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, DCCP_PKT_SYNC); in dccp_rcv_closereq()
109 switch (sk->sk_state) { in dccp_rcv_closereq()
111 dccp_send_close(sk, 0); in dccp_rcv_closereq()
112 dccp_set_state(sk, DCCP_CLOSING); in dccp_rcv_closereq()
118 dccp_fin(sk, skb); in dccp_rcv_closereq()
119 dccp_set_state(sk, DCCP_PASSIVE_CLOSEREQ); in dccp_rcv_closereq()
122 sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_HUP); in dccp_rcv_closereq()
149 static void dccp_rcv_reset(struct sock *sk, struct sk_buff *skb) in dccp_rcv_reset() argument
153 sk->sk_err = err; in dccp_rcv_reset()
156 dccp_fin(sk, skb); in dccp_rcv_reset()
158 if (err && !sock_flag(sk, SOCK_DEAD)) in dccp_rcv_reset()
159 sk_wake_async(sk, SOCK_WAKE_IO, POLL_ERR); in dccp_rcv_reset()
160 dccp_time_wait(sk, DCCP_TIME_WAIT, 0); in dccp_rcv_reset()
163 static void dccp_handle_ackvec_processing(struct sock *sk, struct sk_buff *skb) in dccp_handle_ackvec_processing() argument
165 struct dccp_ackvec *av = dccp_sk(sk)->dccps_hc_rx_ackvec; in dccp_handle_ackvec_processing()
174 static void dccp_deliver_input_to_ccids(struct sock *sk, struct sk_buff *skb) in dccp_deliver_input_to_ccids() argument
176 const struct dccp_sock *dp = dccp_sk(sk); in dccp_deliver_input_to_ccids()
179 if (!(sk->sk_shutdown & RCV_SHUTDOWN)) in dccp_deliver_input_to_ccids()
180 ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb); in dccp_deliver_input_to_ccids()
185 if (sk->sk_write_queue.qlen > 0 || !(sk->sk_shutdown & SEND_SHUTDOWN)) in dccp_deliver_input_to_ccids()
186 ccid_hc_tx_packet_recv(dp->dccps_hc_tx_ccid, sk, skb); in dccp_deliver_input_to_ccids()
189 static int dccp_check_seqno(struct sock *sk, struct sk_buff *skb) in dccp_check_seqno() argument
192 struct dccp_sock *dp = dccp_sk(sk); in dccp_check_seqno()
212 dccp_update_gsr(sk, seqno); in dccp_check_seqno()
241 dccp_update_gsr(sk, seqno); in dccp_check_seqno()
280 dccp_send_sync(sk, seqno, DCCP_PKT_SYNC); in dccp_check_seqno()
287 static int __dccp_rcv_established(struct sock *sk, struct sk_buff *skb, in __dccp_rcv_established() argument
290 struct dccp_sock *dp = dccp_sk(sk); in __dccp_rcv_established()
300 dccp_enqueue_skb(sk, skb); in __dccp_rcv_established()
313 dccp_rcv_reset(sk, skb); in __dccp_rcv_established()
316 if (dccp_rcv_closereq(sk, skb)) in __dccp_rcv_established()
320 if (dccp_rcv_close(sk, skb)) in __dccp_rcv_established()
345 dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, in __dccp_rcv_established()
350 dccp_send_sync(sk, DCCP_SKB_CB(skb)->dccpd_seq, in __dccp_rcv_established()
368 int dccp_rcv_established(struct sock *sk, struct sk_buff *skb, in dccp_rcv_established() argument
371 if (dccp_check_seqno(sk, skb)) in dccp_rcv_established()
374 if (dccp_parse_options(sk, NULL, skb)) in dccp_rcv_established()
377 dccp_handle_ackvec_processing(sk, skb); in dccp_rcv_established()
378 dccp_deliver_input_to_ccids(sk, skb); in dccp_rcv_established()
380 return __dccp_rcv_established(sk, skb, dh, len); in dccp_rcv_established()
388 static int dccp_rcv_request_sent_state_process(struct sock *sk, in dccp_rcv_request_sent_state_process() argument
405 const struct inet_connection_sock *icsk = inet_csk(sk); in dccp_rcv_request_sent_state_process()
406 struct dccp_sock *dp = dccp_sk(sk); in dccp_rcv_request_sent_state_process()
424 if (dccp_parse_options(sk, NULL, skb)) in dccp_rcv_request_sent_state_process()
429 dp->dccps_syn_rtt = dccp_sample_rtt(sk, 10 * (tstamp - in dccp_rcv_request_sent_state_process()
433 inet_csk_clear_xmit_timer(sk, ICSK_TIME_RETRANS); in dccp_rcv_request_sent_state_process()
434 WARN_ON(sk->sk_send_head == NULL); in dccp_rcv_request_sent_state_process()
435 kfree_skb(sk->sk_send_head); in dccp_rcv_request_sent_state_process()
436 sk->sk_send_head = NULL; in dccp_rcv_request_sent_state_process()
447 dccp_sync_mss(sk, icsk->icsk_pmtu_cookie); in dccp_rcv_request_sent_state_process()
464 dccp_set_state(sk, DCCP_PARTOPEN); in dccp_rcv_request_sent_state_process()
472 if (dccp_feat_activate_values(sk, &dp->dccps_featneg)) in dccp_rcv_request_sent_state_process()
476 icsk->icsk_af_ops->rebuild_header(sk); in dccp_rcv_request_sent_state_process()
478 if (!sock_flag(sk, SOCK_DEAD)) { in dccp_rcv_request_sent_state_process()
479 sk->sk_state_change(sk); in dccp_rcv_request_sent_state_process()
480 sk_wake_async(sk, SOCK_WAKE_IO, POLL_OUT); in dccp_rcv_request_sent_state_process()
483 if (sk->sk_write_pending || icsk->icsk_ack.pingpong || in dccp_rcv_request_sent_state_process()
501 dccp_send_ack(sk); in dccp_rcv_request_sent_state_process()
516 dccp_set_state(sk, DCCP_CLOSED); in dccp_rcv_request_sent_state_process()
517 sk->sk_err = ECOMM; in dccp_rcv_request_sent_state_process()
521 static int dccp_rcv_respond_partopen_state_process(struct sock *sk, in dccp_rcv_respond_partopen_state_process() argument
526 struct dccp_sock *dp = dccp_sk(sk); in dccp_rcv_respond_partopen_state_process()
532 inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK); in dccp_rcv_respond_partopen_state_process()
535 if (sk->sk_state == DCCP_RESPOND) in dccp_rcv_respond_partopen_state_process()
549 if (sk->sk_state == DCCP_PARTOPEN) in dccp_rcv_respond_partopen_state_process()
550 inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK); in dccp_rcv_respond_partopen_state_process()
556 dp->dccps_syn_rtt = dccp_sample_rtt(sk, 10 * delta); in dccp_rcv_respond_partopen_state_process()
560 dccp_set_state(sk, DCCP_OPEN); in dccp_rcv_respond_partopen_state_process()
564 __dccp_rcv_established(sk, skb, dh, len); in dccp_rcv_respond_partopen_state_process()
574 int dccp_rcv_state_process(struct sock *sk, struct sk_buff *skb, in dccp_rcv_state_process() argument
577 struct dccp_sock *dp = dccp_sk(sk); in dccp_rcv_state_process()
579 const int old_state = sk->sk_state; in dccp_rcv_state_process()
605 if (sk->sk_state == DCCP_LISTEN) { in dccp_rcv_state_process()
612 acceptable = inet_csk(sk)->icsk_af_ops->conn_request(sk, skb) >= 0; in dccp_rcv_state_process()
626 } else if (sk->sk_state == DCCP_CLOSED) { in dccp_rcv_state_process()
632 if (sk->sk_state != DCCP_REQUESTING && dccp_check_seqno(sk, skb)) in dccp_rcv_state_process()
647 (sk->sk_state == DCCP_RESPOND && dh->dccph_type == DCCP_PKT_DATA)) { in dccp_rcv_state_process()
648 dccp_send_sync(sk, dcb->dccpd_seq, DCCP_PKT_SYNC); in dccp_rcv_state_process()
653 if (dccp_parse_options(sk, NULL, skb)) in dccp_rcv_state_process()
665 dccp_rcv_reset(sk, skb); in dccp_rcv_state_process()
668 if (dccp_rcv_closereq(sk, skb)) in dccp_rcv_state_process()
672 if (dccp_rcv_close(sk, skb)) in dccp_rcv_state_process()
677 switch (sk->sk_state) { in dccp_rcv_state_process()
679 queued = dccp_rcv_request_sent_state_process(sk, skb, dh, len); in dccp_rcv_state_process()
688 dccp_handle_ackvec_processing(sk, skb); in dccp_rcv_state_process()
689 dccp_deliver_input_to_ccids(sk, skb); in dccp_rcv_state_process()
692 queued = dccp_rcv_respond_partopen_state_process(sk, skb, in dccp_rcv_state_process()
701 sk->sk_state_change(sk); in dccp_rcv_state_process()
702 sk_wake_async(sk, SOCK_WAKE_IO, POLL_OUT); in dccp_rcv_state_process()
706 dccp_send_sync(sk, dcb->dccpd_seq, DCCP_PKT_SYNCACK); in dccp_rcv_state_process()
726 u32 dccp_sample_rtt(struct sock *sk, long delta) in dccp_sample_rtt() argument
729 delta -= dccp_sk(sk)->dccps_options_received.dccpor_elapsed_time * 10; in dccp_sample_rtt()