input.c (2c55d703391acf7e9101da596d0c15ee03b318a3) input.c (a343b174b4bdde851033996960bca5ad1394d04b)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/* Processing of received RxRPC packets
3 *
4 * Copyright (C) 2020 Red Hat, Inc. All Rights Reserved.
5 * Written by David Howells (dhowells@redhat.com)
6 */
7
8#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
9
10#include "ar-internal.h"
11
12static void rxrpc_proto_abort(const char *why,
13 struct rxrpc_call *call, rxrpc_seq_t seq)
14{
1// SPDX-License-Identifier: GPL-2.0-or-later
2/* Processing of received RxRPC packets
3 *
4 * Copyright (C) 2020 Red Hat, Inc. All Rights Reserved.
5 * Written by David Howells (dhowells@redhat.com)
6 */
7
8#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
9
10#include "ar-internal.h"
11
12static void rxrpc_proto_abort(const char *why,
13 struct rxrpc_call *call, rxrpc_seq_t seq)
14{
15 if (rxrpc_abort_call(why, call, seq, RX_PROTOCOL_ERROR, -EBADMSG))
16 rxrpc_send_abort_packet(call);
15 rxrpc_abort_call(why, call, seq, RX_PROTOCOL_ERROR, -EBADMSG);
17}
18
19/*
20 * Do TCP-style congestion management [RFC 5681].
21 */
22static void rxrpc_congestion_management(struct rxrpc_call *call,
23 struct sk_buff *skb,
24 struct rxrpc_ack_summary *summary,

--- 977 unchanged lines hidden (view full) ---

1002
1003 switch (READ_ONCE(call->state)) {
1004 case RXRPC_CALL_SERVER_AWAIT_ACK:
1005 rxrpc_call_completed(call);
1006 fallthrough;
1007 case RXRPC_CALL_COMPLETE:
1008 break;
1009 default:
16}
17
18/*
19 * Do TCP-style congestion management [RFC 5681].
20 */
21static void rxrpc_congestion_management(struct rxrpc_call *call,
22 struct sk_buff *skb,
23 struct rxrpc_ack_summary *summary,

--- 977 unchanged lines hidden (view full) ---

1001
1002 switch (READ_ONCE(call->state)) {
1003 case RXRPC_CALL_SERVER_AWAIT_ACK:
1004 rxrpc_call_completed(call);
1005 fallthrough;
1006 case RXRPC_CALL_COMPLETE:
1007 break;
1008 default:
1010 if (rxrpc_abort_call("IMP", call, 0, RX_CALL_DEAD, -ESHUTDOWN))
1011 rxrpc_send_abort_packet(call);
1009 rxrpc_abort_call("IMP", call, 0, RX_CALL_DEAD, -ESHUTDOWN);
1012 trace_rxrpc_improper_term(call);
1013 break;
1014 }
1015
1016 rxrpc_input_call_event(call, skb);
1017
1018 spin_lock(&conn->bundle->channel_lock);
1019 __rxrpc_disconnect_call(conn, call);
1020 spin_unlock(&conn->bundle->channel_lock);
1021}
1010 trace_rxrpc_improper_term(call);
1011 break;
1012 }
1013
1014 rxrpc_input_call_event(call, skb);
1015
1016 spin_lock(&conn->bundle->channel_lock);
1017 __rxrpc_disconnect_call(conn, call);
1018 spin_unlock(&conn->bundle->channel_lock);
1019}