Lines Matching full:call

27 			      struct rxrpc_call *call, rxrpc_seq_t seq)  in rxrpc_proto_abort()  argument
29 if (rxrpc_abort_call(why, call, seq, RX_PROTOCOL_ERROR, -EBADMSG)) { in rxrpc_proto_abort()
30 set_bit(RXRPC_CALL_EV_ABORT, &call->events); in rxrpc_proto_abort()
31 rxrpc_queue_call(call); in rxrpc_proto_abort()
38 static void rxrpc_congestion_management(struct rxrpc_call *call, in rxrpc_congestion_management() argument
44 unsigned int cumulative_acks = call->cong_cumul_acks; in rxrpc_congestion_management()
45 unsigned int cwnd = call->cong_cwnd; in rxrpc_congestion_management()
49 (call->tx_top - call->tx_hard_ack) - summary->nr_acks; in rxrpc_congestion_management()
51 if (test_and_clear_bit(RXRPC_CALL_RETRANS_TIMEOUT, &call->flags)) { in rxrpc_congestion_management()
53 call->cong_ssthresh = max_t(unsigned int, in rxrpc_congestion_management()
56 if (cwnd >= call->cong_ssthresh && in rxrpc_congestion_management()
57 call->cong_mode == RXRPC_CALL_SLOW_START) { in rxrpc_congestion_management()
58 call->cong_mode = RXRPC_CALL_CONGEST_AVOIDANCE; in rxrpc_congestion_management()
59 call->cong_tstamp = skb->tstamp; in rxrpc_congestion_management()
69 summary->mode = call->cong_mode; in rxrpc_congestion_management()
70 summary->cwnd = call->cong_cwnd; in rxrpc_congestion_management()
71 summary->ssthresh = call->cong_ssthresh; in rxrpc_congestion_management()
73 summary->dup_acks = call->cong_dup_acks; in rxrpc_congestion_management()
75 switch (call->cong_mode) { in rxrpc_congestion_management()
81 if (cwnd >= call->cong_ssthresh) { in rxrpc_congestion_management()
82 call->cong_mode = RXRPC_CALL_CONGEST_AVOIDANCE; in rxrpc_congestion_management()
83 call->cong_tstamp = skb->tstamp; in rxrpc_congestion_management()
94 if (call->peer->rtt_usage == 0) in rxrpc_congestion_management()
97 ktime_add_ns(call->cong_tstamp, in rxrpc_congestion_management()
98 call->peer->rtt))) in rxrpc_congestion_management()
101 call->cong_tstamp = skb->tstamp; in rxrpc_congestion_management()
112 call->cong_dup_acks = 1; in rxrpc_congestion_management()
113 if (call->cong_extra > 1) in rxrpc_congestion_management()
114 call->cong_extra = 1; in rxrpc_congestion_management()
118 call->cong_dup_acks++; in rxrpc_congestion_management()
119 if (call->cong_dup_acks < 3) in rxrpc_congestion_management()
123 call->cong_mode = RXRPC_CALL_FAST_RETRANSMIT; in rxrpc_congestion_management()
124 call->cong_ssthresh = max_t(unsigned int, in rxrpc_congestion_management()
126 cwnd = call->cong_ssthresh + 3; in rxrpc_congestion_management()
127 call->cong_extra = 0; in rxrpc_congestion_management()
128 call->cong_dup_acks = 0; in rxrpc_congestion_management()
136 call->cong_dup_acks++; in rxrpc_congestion_management()
137 if (call->cong_dup_acks == 2) { in rxrpc_congestion_management()
139 call->cong_dup_acks = 0; in rxrpc_congestion_management()
144 cwnd = call->cong_ssthresh; in rxrpc_congestion_management()
157 call->cong_dup_acks = 0; in rxrpc_congestion_management()
158 call->cong_extra = 0; in rxrpc_congestion_management()
159 call->cong_tstamp = skb->tstamp; in rxrpc_congestion_management()
160 if (cwnd < call->cong_ssthresh) in rxrpc_congestion_management()
161 call->cong_mode = RXRPC_CALL_SLOW_START; in rxrpc_congestion_management()
163 call->cong_mode = RXRPC_CALL_CONGEST_AVOIDANCE; in rxrpc_congestion_management()
169 call->cong_cwnd = cwnd; in rxrpc_congestion_management()
170 call->cong_cumul_acks = cumulative_acks; in rxrpc_congestion_management()
171 trace_rxrpc_congest(call, summary, acked_serial, change); in rxrpc_congestion_management()
172 if (resend && !test_and_set_bit(RXRPC_CALL_EV_RESEND, &call->events)) in rxrpc_congestion_management()
173 rxrpc_queue_call(call); in rxrpc_congestion_management()
178 call->cong_mode = RXRPC_CALL_PACKET_LOSS; in rxrpc_congestion_management()
179 call->cong_dup_acks = 0; in rxrpc_congestion_management()
186 if (call->rxtx_annotations[call->tx_top & RXRPC_RXTX_BUFF_MASK] & in rxrpc_congestion_management()
188 summary->nr_acks != call->tx_top - call->tx_hard_ack) { in rxrpc_congestion_management()
189 call->cong_extra++; in rxrpc_congestion_management()
190 wake_up(&call->waitq); in rxrpc_congestion_management()
199 static void rxrpc_send_ping(struct rxrpc_call *call, struct sk_buff *skb) in rxrpc_send_ping() argument
204 if (call->peer->rtt_usage < 3 || in rxrpc_send_ping()
205 ktime_before(ktime_add_ms(call->peer->rtt_last_req, 1000), now)) in rxrpc_send_ping()
206 rxrpc_propose_ACK(call, RXRPC_ACK_PING, sp->hdr.serial, in rxrpc_send_ping()
214 static bool rxrpc_rotate_tx_window(struct rxrpc_call *call, rxrpc_seq_t to, in rxrpc_rotate_tx_window() argument
222 if (call->acks_lowest_nak == call->tx_hard_ack) { in rxrpc_rotate_tx_window()
223 call->acks_lowest_nak = to; in rxrpc_rotate_tx_window()
224 } else if (before_eq(call->acks_lowest_nak, to)) { in rxrpc_rotate_tx_window()
226 call->acks_lowest_nak = to; in rxrpc_rotate_tx_window()
229 spin_lock(&call->lock); in rxrpc_rotate_tx_window()
231 while (before(call->tx_hard_ack, to)) { in rxrpc_rotate_tx_window()
232 call->tx_hard_ack++; in rxrpc_rotate_tx_window()
233 ix = call->tx_hard_ack & RXRPC_RXTX_BUFF_MASK; in rxrpc_rotate_tx_window()
234 skb = call->rxtx_buffer[ix]; in rxrpc_rotate_tx_window()
235 annotation = call->rxtx_annotations[ix]; in rxrpc_rotate_tx_window()
237 call->rxtx_buffer[ix] = NULL; in rxrpc_rotate_tx_window()
238 call->rxtx_annotations[ix] = 0; in rxrpc_rotate_tx_window()
243 set_bit(RXRPC_CALL_TX_LAST, &call->flags); in rxrpc_rotate_tx_window()
250 spin_unlock(&call->lock); in rxrpc_rotate_tx_window()
252 trace_rxrpc_transmit(call, (rot_last ? in rxrpc_rotate_tx_window()
255 wake_up(&call->waitq); in rxrpc_rotate_tx_window()
268 * End the transmission phase of a call.
273 static bool rxrpc_end_tx_phase(struct rxrpc_call *call, bool reply_begun, in rxrpc_end_tx_phase() argument
278 ASSERT(test_bit(RXRPC_CALL_TX_LAST, &call->flags)); in rxrpc_end_tx_phase()
280 write_lock(&call->state_lock); in rxrpc_end_tx_phase()
282 state = call->state; in rxrpc_end_tx_phase()
287 call->state = state = RXRPC_CALL_CLIENT_RECV_REPLY; in rxrpc_end_tx_phase()
289 call->state = state = RXRPC_CALL_CLIENT_AWAIT_REPLY; in rxrpc_end_tx_phase()
293 __rxrpc_call_completed(call); in rxrpc_end_tx_phase()
294 rxrpc_notify_socket(call); in rxrpc_end_tx_phase()
295 state = call->state; in rxrpc_end_tx_phase()
302 write_unlock(&call->state_lock); in rxrpc_end_tx_phase()
304 trace_rxrpc_transmit(call, rxrpc_transmit_await_reply); in rxrpc_end_tx_phase()
306 trace_rxrpc_transmit(call, rxrpc_transmit_end); in rxrpc_end_tx_phase()
311 write_unlock(&call->state_lock); in rxrpc_end_tx_phase()
312 kdebug("end_tx %s", rxrpc_call_states[call->state]); in rxrpc_end_tx_phase()
313 rxrpc_proto_abort(abort_why, call, call->tx_top); in rxrpc_end_tx_phase()
318 * Begin the reply reception phase of a call.
320 static bool rxrpc_receiving_reply(struct rxrpc_call *call) in rxrpc_receiving_reply() argument
324 rxrpc_seq_t top = READ_ONCE(call->tx_top); in rxrpc_receiving_reply()
326 if (call->ackr_reason) { in rxrpc_receiving_reply()
327 spin_lock_bh(&call->lock); in rxrpc_receiving_reply()
328 call->ackr_reason = 0; in rxrpc_receiving_reply()
329 spin_unlock_bh(&call->lock); in rxrpc_receiving_reply()
332 WRITE_ONCE(call->resend_at, timo); in rxrpc_receiving_reply()
333 WRITE_ONCE(call->ack_at, timo); in rxrpc_receiving_reply()
334 trace_rxrpc_timer(call, rxrpc_timer_init_for_reply, now); in rxrpc_receiving_reply()
337 if (!test_bit(RXRPC_CALL_TX_LAST, &call->flags)) { in rxrpc_receiving_reply()
338 if (!rxrpc_rotate_tx_window(call, top, &summary)) { in rxrpc_receiving_reply()
339 rxrpc_proto_abort("TXL", call, top); in rxrpc_receiving_reply()
343 if (!rxrpc_end_tx_phase(call, true, "ETD")) in rxrpc_receiving_reply()
345 call->tx_phase = false; in rxrpc_receiving_reply()
401 * space until the call times out.
404 * call. After that, we tell the other side we're no longer accepting jumbos
407 static void rxrpc_input_dup_data(struct rxrpc_call *call, rxrpc_seq_t seq, in rxrpc_input_dup_data() argument
416 * jumbos for this call. in rxrpc_input_dup_data()
419 call->nr_jumbo_bad++; in rxrpc_input_dup_data()
428 static void rxrpc_input_data(struct rxrpc_call *call, struct sk_buff *skb) in rxrpc_input_data() argument
439 call->rx_hard_ack, call->rx_top, skb->len, seq0); in rxrpc_input_data()
444 state = READ_ONCE(call->state); in rxrpc_input_data()
450 if (call->state == RXRPC_CALL_SERVER_RECV_REQUEST) { in rxrpc_input_data()
451 unsigned long timo = READ_ONCE(call->next_req_timo); in rxrpc_input_data()
457 WRITE_ONCE(call->expect_req_by, expect_req_by); in rxrpc_input_data()
458 rxrpc_reduce_call_timer(call, expect_req_by, now, in rxrpc_input_data()
463 spin_lock(&call->input_lock); in rxrpc_input_data()
470 !rxrpc_receiving_reply(call)) in rxrpc_input_data()
473 call->ackr_prev_seq = seq0; in rxrpc_input_data()
474 hard_ack = READ_ONCE(call->rx_hard_ack); in rxrpc_input_data()
477 if (call->nr_jumbo_bad > 3) { in rxrpc_input_data()
496 if (test_bit(RXRPC_CALL_RX_LAST, &call->flags) && in rxrpc_input_data()
497 seq != call->rx_top) { in rxrpc_input_data()
498 rxrpc_proto_abort("LSN", call, seq); in rxrpc_input_data()
502 if (test_bit(RXRPC_CALL_RX_LAST, &call->flags) && in rxrpc_input_data()
503 after_eq(seq, call->rx_top)) { in rxrpc_input_data()
504 rxrpc_proto_abort("LSA", call, seq); in rxrpc_input_data()
516 trace_rxrpc_rx_data(call->debug_id, seq, serial, flags, annotation); in rxrpc_input_data()
524 if (call->rxtx_buffer[ix]) { in rxrpc_input_data()
525 rxrpc_input_dup_data(call, seq, sp->nr_subpackets > 1, in rxrpc_input_data()
535 if (after(seq, hard_ack + call->rx_winsize)) { in rxrpc_input_data()
540 call->nr_jumbo_bad++; in rxrpc_input_data()
563 call->rxtx_annotations[ix] = annotation; in rxrpc_input_data()
565 call->rxtx_buffer[ix] = skb; in rxrpc_input_data()
566 if (after(seq, call->rx_top)) { in rxrpc_input_data()
567 smp_store_release(&call->rx_top, seq); in rxrpc_input_data()
568 } else if (before(seq, call->rx_top)) { in rxrpc_input_data()
586 set_bit(RXRPC_CALL_RX_LAST, &call->flags); in rxrpc_input_data()
591 trace_rxrpc_receive(call, rxrpc_receive_queue_last, serial, seq); in rxrpc_input_data()
593 trace_rxrpc_receive(call, rxrpc_receive_queue, serial, seq); in rxrpc_input_data()
596 if (after_eq(seq, call->rx_expect_next)) { in rxrpc_input_data()
597 if (after(seq, call->rx_expect_next)) { in rxrpc_input_data()
598 _net("OOS %u > %u", seq, call->rx_expect_next); in rxrpc_input_data()
602 call->rx_expect_next = seq + 1; in rxrpc_input_data()
608 rxrpc_propose_ACK(call, ack, ack_serial, in rxrpc_input_data()
612 rxrpc_propose_ACK(call, RXRPC_ACK_DELAY, serial, in rxrpc_input_data()
616 if (seq0 == READ_ONCE(call->rx_hard_ack) + 1) { in rxrpc_input_data()
617 trace_rxrpc_notify_socket(call->debug_id, serial); in rxrpc_input_data()
618 rxrpc_notify_socket(call); in rxrpc_input_data()
622 spin_unlock(&call->input_lock); in rxrpc_input_data()
630 static void rxrpc_input_requested_ack(struct rxrpc_call *call, in rxrpc_input_requested_ack() argument
641 skb = call->rxtx_buffer[ix]; in rxrpc_input_requested_ack()
656 rxrpc_peer_add_rtt(call, rxrpc_rtt_rx_requested_ack, in rxrpc_input_requested_ack()
667 static void rxrpc_input_check_for_lost_ack(struct rxrpc_call *call) in rxrpc_input_check_for_lost_ack() argument
672 spin_lock_bh(&call->lock); in rxrpc_input_check_for_lost_ack()
674 bottom = call->tx_hard_ack + 1; in rxrpc_input_check_for_lost_ack()
675 top = call->acks_lost_top; in rxrpc_input_check_for_lost_ack()
679 u8 annotation = call->rxtx_annotations[ix]; in rxrpc_input_check_for_lost_ack()
686 call->rxtx_annotations[ix] = annotation; in rxrpc_input_check_for_lost_ack()
691 spin_unlock_bh(&call->lock); in rxrpc_input_check_for_lost_ack()
693 if (resend && !test_and_set_bit(RXRPC_CALL_EV_RESEND, &call->events)) in rxrpc_input_check_for_lost_ack()
694 rxrpc_queue_call(call); in rxrpc_input_check_for_lost_ack()
700 static void rxrpc_input_ping_response(struct rxrpc_call *call, in rxrpc_input_ping_response() argument
708 ping_time = call->ping_time; in rxrpc_input_ping_response()
710 ping_serial = READ_ONCE(call->ping_serial); in rxrpc_input_ping_response()
712 if (orig_serial == call->acks_lost_ping) in rxrpc_input_ping_response()
713 rxrpc_input_check_for_lost_ack(call); in rxrpc_input_ping_response()
716 !test_and_clear_bit(RXRPC_CALL_PINGING, &call->flags)) in rxrpc_input_ping_response()
721 rxrpc_peer_add_rtt(call, rxrpc_rtt_rx_ping_response, in rxrpc_input_ping_response()
728 static void rxrpc_input_ackinfo(struct rxrpc_call *call, struct sk_buff *skb, in rxrpc_input_ackinfo() argument
742 if (call->tx_winsize != rwind) { in rxrpc_input_ackinfo()
745 if (rwind > call->tx_winsize) in rxrpc_input_ackinfo()
747 trace_rxrpc_rx_rwind_change(call, sp->hdr.serial, in rxrpc_input_ackinfo()
749 call->tx_winsize = rwind; in rxrpc_input_ackinfo()
752 if (call->cong_ssthresh > rwind) in rxrpc_input_ackinfo()
753 call->cong_ssthresh = rwind; in rxrpc_input_ackinfo()
757 peer = call->peer; in rxrpc_input_ackinfo()
767 wake_up(&call->waitq); in rxrpc_input_ackinfo()
779 static void rxrpc_input_soft_acks(struct rxrpc_call *call, u8 *acks, in rxrpc_input_soft_acks() argument
788 annotation = call->rxtx_annotations[ix]; in rxrpc_input_soft_acks()
797 call->rxtx_annotations[ix] = in rxrpc_input_soft_acks()
802 call->acks_lowest_nak != seq) { in rxrpc_input_soft_acks()
803 call->acks_lowest_nak = seq; in rxrpc_input_soft_acks()
812 call->rxtx_annotations[ix] = in rxrpc_input_soft_acks()
816 return rxrpc_proto_abort("SFT", call, 0); in rxrpc_input_soft_acks()
831 static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb) in rxrpc_input_ack() argument
849 return rxrpc_proto_abort("XAK", call, 0); in rxrpc_input_ack()
861 trace_rxrpc_rx_ack(call, sp->hdr.serial, acked_serial, in rxrpc_input_ack()
866 rxrpc_input_ping_response(call, skb->tstamp, acked_serial, in rxrpc_input_ack()
869 rxrpc_input_requested_ack(call, skb->tstamp, acked_serial, in rxrpc_input_ack()
874 rxrpc_propose_ACK(call, RXRPC_ACK_PING_RESPONSE, in rxrpc_input_ack()
878 rxrpc_propose_ACK(call, RXRPC_ACK_REQUESTED, in rxrpc_input_ack()
884 if (before(first_soft_ack, call->ackr_first_seq) || in rxrpc_input_ack()
885 before(prev_pkt, call->ackr_prev_seq)) in rxrpc_input_ack()
892 return rxrpc_proto_abort("XAI", call, 0); in rxrpc_input_ack()
894 spin_lock(&call->input_lock); in rxrpc_input_ack()
897 if (before(first_soft_ack, call->ackr_first_seq) || in rxrpc_input_ack()
898 before(prev_pkt, call->ackr_prev_seq)) in rxrpc_input_ack()
900 call->acks_latest_ts = skb->tstamp; in rxrpc_input_ack()
901 call->acks_latest = sp->hdr.serial; in rxrpc_input_ack()
903 call->ackr_first_seq = first_soft_ack; in rxrpc_input_ack()
904 call->ackr_prev_seq = prev_pkt; in rxrpc_input_ack()
908 rxrpc_input_ackinfo(call, skb, &buf.info); in rxrpc_input_ack()
911 rxrpc_proto_abort("AK0", call, 0); in rxrpc_input_ack()
916 switch (READ_ONCE(call->state)) { in rxrpc_input_ack()
926 if (before(hard_ack, call->tx_hard_ack) || in rxrpc_input_ack()
927 after(hard_ack, call->tx_top)) { in rxrpc_input_ack()
928 rxrpc_proto_abort("AKW", call, 0); in rxrpc_input_ack()
931 if (nr_acks > call->tx_top - hard_ack) { in rxrpc_input_ack()
932 rxrpc_proto_abort("AKN", call, 0); in rxrpc_input_ack()
936 if (after(hard_ack, call->tx_hard_ack)) { in rxrpc_input_ack()
937 if (rxrpc_rotate_tx_window(call, hard_ack, &summary)) { in rxrpc_input_ack()
938 rxrpc_end_tx_phase(call, false, "ETA"); in rxrpc_input_ack()
945 rxrpc_proto_abort("XSA", call, 0); in rxrpc_input_ack()
948 rxrpc_input_soft_acks(call, buf.acks, first_soft_ack, nr_acks, in rxrpc_input_ack()
952 if (call->rxtx_annotations[call->tx_top & RXRPC_RXTX_BUFF_MASK] & in rxrpc_input_ack()
954 summary.nr_acks == call->tx_top - hard_ack && in rxrpc_input_ack()
955 rxrpc_is_client_call(call)) in rxrpc_input_ack()
956 rxrpc_propose_ACK(call, RXRPC_ACK_PING, sp->hdr.serial, in rxrpc_input_ack()
960 rxrpc_congestion_management(call, skb, &summary, acked_serial); in rxrpc_input_ack()
962 spin_unlock(&call->input_lock); in rxrpc_input_ack()
968 static void rxrpc_input_ackall(struct rxrpc_call *call, struct sk_buff *skb) in rxrpc_input_ackall() argument
975 spin_lock(&call->input_lock); in rxrpc_input_ackall()
977 if (rxrpc_rotate_tx_window(call, call->tx_top, &summary)) in rxrpc_input_ackall()
978 rxrpc_end_tx_phase(call, false, "ETL"); in rxrpc_input_ackall()
980 spin_unlock(&call->input_lock); in rxrpc_input_ackall()
984 * Process an ABORT packet directed at a call.
986 static void rxrpc_input_abort(struct rxrpc_call *call, struct sk_buff *skb) in rxrpc_input_abort() argument
999 trace_rxrpc_rx_abort(call, sp->hdr.serial, abort_code); in rxrpc_input_abort()
1003 if (rxrpc_set_call_completion(call, RXRPC_CALL_REMOTELY_ABORTED, in rxrpc_input_abort()
1005 rxrpc_notify_socket(call); in rxrpc_input_abort()
1009 * Process an incoming call packet.
1011 static void rxrpc_input_call_packet(struct rxrpc_call *call, in rxrpc_input_call_packet() argument
1017 _enter("%p,%p", call, skb); in rxrpc_input_call_packet()
1019 timo = READ_ONCE(call->next_rx_timo); in rxrpc_input_call_packet()
1024 WRITE_ONCE(call->expect_rx_by, expect_rx_by); in rxrpc_input_call_packet()
1025 rxrpc_reduce_call_timer(call, expect_rx_by, now, in rxrpc_input_call_packet()
1031 rxrpc_input_data(call, skb); in rxrpc_input_call_packet()
1035 rxrpc_input_ack(call, skb); in rxrpc_input_call_packet()
1048 rxrpc_input_abort(call, skb); in rxrpc_input_call_packet()
1052 rxrpc_input_ackall(call, skb); in rxrpc_input_call_packet()
1065 * Handle a new service call on a channel implicitly completing the preceding
1066 * call on that channel. This does not apply to client conns.
1072 struct rxrpc_call *call) in rxrpc_input_implicit_end_call() argument
1074 switch (READ_ONCE(call->state)) { in rxrpc_input_implicit_end_call()
1076 rxrpc_call_completed(call); in rxrpc_input_implicit_end_call()
1081 if (rxrpc_abort_call("IMP", call, 0, RX_CALL_DEAD, -ESHUTDOWN)) { in rxrpc_input_implicit_end_call()
1082 set_bit(RXRPC_CALL_EV_ABORT, &call->events); in rxrpc_input_implicit_end_call()
1083 rxrpc_queue_call(call); in rxrpc_input_implicit_end_call()
1085 trace_rxrpc_improper_term(call); in rxrpc_input_implicit_end_call()
1090 __rxrpc_disconnect_call(conn, call); in rxrpc_input_implicit_end_call()
1092 rxrpc_notify_socket(call); in rxrpc_input_implicit_end_call()
1097 * - this includes challenges, responses, some aborts and call terminal packet
1186 struct rxrpc_call *call = NULL; in rxrpc_input_packet() local
1297 * that would begin a call are explicitly rejected and the rest in rxrpc_input_packet()
1338 /* Call-bound packets are routed by connection channel. */ in rxrpc_input_packet()
1347 if (chan->call || in rxrpc_input_packet()
1351 /* For the previous service call, if completed in rxrpc_input_packet()
1370 call = rcu_dereference(chan->call); in rxrpc_input_packet()
1375 if (call) in rxrpc_input_packet()
1376 rxrpc_input_implicit_end_call(rx, conn, call); in rxrpc_input_packet()
1377 call = NULL; in rxrpc_input_packet()
1380 if (call) { in rxrpc_input_packet()
1381 if (sp->hdr.serviceId != call->service_id) in rxrpc_input_packet()
1382 call->service_id = sp->hdr.serviceId; in rxrpc_input_packet()
1383 if ((int)sp->hdr.serial - (int)call->rx_serial > 0) in rxrpc_input_packet()
1384 call->rx_serial = sp->hdr.serial; in rxrpc_input_packet()
1385 if (!test_bit(RXRPC_CALL_RX_HEARD, &call->flags)) in rxrpc_input_packet()
1386 set_bit(RXRPC_CALL_RX_HEARD, &call->flags); in rxrpc_input_packet()
1390 if (!call || atomic_read(&call->usage) == 0) { in rxrpc_input_packet()
1396 call = rxrpc_new_incoming_call(local, rx, skb); in rxrpc_input_packet()
1397 if (!call) in rxrpc_input_packet()
1399 rxrpc_send_ping(call, skb); in rxrpc_input_packet()
1400 mutex_unlock(&call->user_mutex); in rxrpc_input_packet()
1403 /* Process a call packet; this either discards or passes on the ref in rxrpc_input_packet()
1406 rxrpc_input_call_packet(call, skb); in rxrpc_input_packet()