diff options
Diffstat (limited to 'net/rxrpc/misc.c')
-rw-r--r-- | net/rxrpc/misc.c | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/net/rxrpc/misc.c b/net/rxrpc/misc.c new file mode 100644 index 000000000000..1afe9876e79f --- /dev/null +++ b/net/rxrpc/misc.c | |||
@@ -0,0 +1,89 @@ | |||
1 | /* Miscellaneous bits | ||
2 | * | ||
3 | * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #include <linux/kernel.h> | ||
13 | #include <net/sock.h> | ||
14 | #include <net/af_rxrpc.h> | ||
15 | #include "ar-internal.h" | ||
16 | |||
17 | /* | ||
18 | * How long to wait before scheduling ACK generation after seeing a | ||
19 | * packet with RXRPC_REQUEST_ACK set (in jiffies). | ||
20 | */ | ||
21 | unsigned int rxrpc_requested_ack_delay = 1; | ||
22 | |||
23 | /* | ||
24 | * How long to wait before scheduling an ACK with subtype DELAY (in jiffies). | ||
25 | * | ||
26 | * We use this when we've received new data packets. If those packets aren't | ||
27 | * all consumed within this time we will send a DELAY ACK if an ACK was not | ||
28 | * requested to let the sender know it doesn't need to resend. | ||
29 | */ | ||
30 | unsigned int rxrpc_soft_ack_delay = 1 * HZ; | ||
31 | |||
32 | /* | ||
33 | * How long to wait before scheduling an ACK with subtype IDLE (in jiffies). | ||
34 | * | ||
35 | * We use this when we've consumed some previously soft-ACK'd packets when | ||
36 | * further packets aren't immediately received to decide when to send an IDLE | ||
37 | * ACK let the other end know that it can free up its Tx buffer space. | ||
38 | */ | ||
39 | unsigned int rxrpc_idle_ack_delay = 0.5 * HZ; | ||
40 | |||
41 | /* | ||
42 | * Receive window size in packets. This indicates the maximum number of | ||
43 | * unconsumed received packets we're willing to retain in memory. Once this | ||
44 | * limit is hit, we should generate an EXCEEDS_WINDOW ACK and discard further | ||
45 | * packets. | ||
46 | */ | ||
47 | unsigned int rxrpc_rx_window_size = 32; | ||
48 | |||
49 | /* | ||
50 | * Maximum Rx MTU size. This indicates to the sender the size of jumbo packet | ||
51 | * made by gluing normal packets together that we're willing to handle. | ||
52 | */ | ||
53 | unsigned int rxrpc_rx_mtu = 5692; | ||
54 | |||
55 | /* | ||
56 | * The maximum number of fragments in a received jumbo packet that we tell the | ||
57 | * sender that we're willing to handle. | ||
58 | */ | ||
59 | unsigned int rxrpc_rx_jumbo_max = 4; | ||
60 | |||
61 | const char *const rxrpc_pkts[] = { | ||
62 | "?00", | ||
63 | "DATA", "ACK", "BUSY", "ABORT", "ACKALL", "CHALL", "RESP", "DEBUG", | ||
64 | "?09", "?10", "?11", "?12", "VERSION", "?14", "?15" | ||
65 | }; | ||
66 | |||
67 | const s8 rxrpc_ack_priority[] = { | ||
68 | [0] = 0, | ||
69 | [RXRPC_ACK_DELAY] = 1, | ||
70 | [RXRPC_ACK_REQUESTED] = 2, | ||
71 | [RXRPC_ACK_IDLE] = 3, | ||
72 | [RXRPC_ACK_PING_RESPONSE] = 4, | ||
73 | [RXRPC_ACK_DUPLICATE] = 5, | ||
74 | [RXRPC_ACK_OUT_OF_SEQUENCE] = 6, | ||
75 | [RXRPC_ACK_EXCEEDS_WINDOW] = 7, | ||
76 | [RXRPC_ACK_NOSPACE] = 8, | ||
77 | }; | ||
78 | |||
79 | const char *rxrpc_acks(u8 reason) | ||
80 | { | ||
81 | static const char *const str[] = { | ||
82 | "---", "REQ", "DUP", "OOS", "WIN", "MEM", "PNG", "PNR", "DLY", | ||
83 | "IDL", "-?-" | ||
84 | }; | ||
85 | |||
86 | if (reason >= ARRAY_SIZE(str)) | ||
87 | reason = ARRAY_SIZE(str) - 1; | ||
88 | return str[reason]; | ||
89 | } | ||