rxrpc: Fix duplicate const
[cascardo/linux.git] / net / rxrpc / misc.c
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  * The maximum listening backlog queue size that may be set on a socket by
19  * listen().
20  */
21 unsigned int rxrpc_max_backlog __read_mostly = 10;
22
23 /*
24  * Maximum lifetime of a call (in mx).
25  */
26 unsigned int rxrpc_max_call_lifetime = 60 * 1000;
27
28 /*
29  * How long to wait before scheduling ACK generation after seeing a
30  * packet with RXRPC_REQUEST_ACK set (in ms).
31  */
32 unsigned int rxrpc_requested_ack_delay = 1;
33
34 /*
35  * How long to wait before scheduling an ACK with subtype DELAY (in ms).
36  *
37  * We use this when we've received new data packets.  If those packets aren't
38  * all consumed within this time we will send a DELAY ACK if an ACK was not
39  * requested to let the sender know it doesn't need to resend.
40  */
41 unsigned int rxrpc_soft_ack_delay = 1 * 1000;
42
43 /*
44  * How long to wait before scheduling an ACK with subtype IDLE (in ms).
45  *
46  * We use this when we've consumed some previously soft-ACK'd packets when
47  * further packets aren't immediately received to decide when to send an IDLE
48  * ACK let the other end know that it can free up its Tx buffer space.
49  */
50 unsigned int rxrpc_idle_ack_delay = 0.5 * 1000;
51
52 /*
53  * Receive window size in packets.  This indicates the maximum number of
54  * unconsumed received packets we're willing to retain in memory.  Once this
55  * limit is hit, we should generate an EXCEEDS_WINDOW ACK and discard further
56  * packets.
57  */
58 unsigned int rxrpc_rx_window_size = RXRPC_INIT_RX_WINDOW_SIZE;
59 #if (RXRPC_RXTX_BUFF_SIZE - 1) < RXRPC_INIT_RX_WINDOW_SIZE
60 #error Need to reduce RXRPC_INIT_RX_WINDOW_SIZE
61 #endif
62
63 /*
64  * Maximum Rx MTU size.  This indicates to the sender the size of jumbo packet
65  * made by gluing normal packets together that we're willing to handle.
66  */
67 unsigned int rxrpc_rx_mtu = 5692;
68
69 /*
70  * The maximum number of fragments in a received jumbo packet that we tell the
71  * sender that we're willing to handle.
72  */
73 unsigned int rxrpc_rx_jumbo_max = 4;
74
75 /*
76  * Time till packet resend (in milliseconds).
77  */
78 unsigned int rxrpc_resend_timeout = 4 * 1000;
79
80 const char *const rxrpc_pkts[] = {
81         "?00",
82         "DATA", "ACK", "BUSY", "ABORT", "ACKALL", "CHALL", "RESP", "DEBUG",
83         "?09", "?10", "?11", "?12", "VERSION", "?14", "?15"
84 };
85
86 const s8 rxrpc_ack_priority[] = {
87         [0]                             = 0,
88         [RXRPC_ACK_DELAY]               = 1,
89         [RXRPC_ACK_REQUESTED]           = 2,
90         [RXRPC_ACK_IDLE]                = 3,
91         [RXRPC_ACK_DUPLICATE]           = 4,
92         [RXRPC_ACK_OUT_OF_SEQUENCE]     = 5,
93         [RXRPC_ACK_EXCEEDS_WINDOW]      = 6,
94         [RXRPC_ACK_NOSPACE]             = 7,
95         [RXRPC_ACK_PING_RESPONSE]       = 8,
96         [RXRPC_ACK_PING]                = 9,
97 };
98
99 const char rxrpc_ack_names[RXRPC_ACK__INVALID + 1][4] = {
100         "---", "REQ", "DUP", "OOS", "WIN", "MEM", "PNG", "PNR", "DLY",
101         "IDL", "-?-"
102 };
103
104 const char rxrpc_skb_traces[rxrpc_skb__nr_trace][7] = {
105         [rxrpc_skb_rx_cleaned]          = "Rx CLN",
106         [rxrpc_skb_rx_freed]            = "Rx FRE",
107         [rxrpc_skb_rx_got]              = "Rx GOT",
108         [rxrpc_skb_rx_lost]             = "Rx *L*",
109         [rxrpc_skb_rx_received]         = "Rx RCV",
110         [rxrpc_skb_rx_purged]           = "Rx PUR",
111         [rxrpc_skb_rx_rotated]          = "Rx ROT",
112         [rxrpc_skb_rx_seen]             = "Rx SEE",
113         [rxrpc_skb_tx_cleaned]          = "Tx CLN",
114         [rxrpc_skb_tx_freed]            = "Tx FRE",
115         [rxrpc_skb_tx_got]              = "Tx GOT",
116         [rxrpc_skb_tx_new]              = "Tx NEW",
117         [rxrpc_skb_tx_rotated]          = "Tx ROT",
118         [rxrpc_skb_tx_seen]             = "Tx SEE",
119 };
120
121 const char rxrpc_conn_traces[rxrpc_conn__nr_trace][4] = {
122         [rxrpc_conn_new_client]         = "NWc",
123         [rxrpc_conn_new_service]        = "NWs",
124         [rxrpc_conn_queued]             = "QUE",
125         [rxrpc_conn_seen]               = "SEE",
126         [rxrpc_conn_got]                = "GOT",
127         [rxrpc_conn_put_client]         = "PTc",
128         [rxrpc_conn_put_service]        = "PTs",
129 };
130
131 const char rxrpc_client_traces[rxrpc_client__nr_trace][7] = {
132         [rxrpc_client_activate_chans]   = "Activa",
133         [rxrpc_client_alloc]            = "Alloc ",
134         [rxrpc_client_chan_activate]    = "ChActv",
135         [rxrpc_client_chan_disconnect]  = "ChDisc",
136         [rxrpc_client_chan_pass]        = "ChPass",
137         [rxrpc_client_chan_unstarted]   = "ChUnst",
138         [rxrpc_client_cleanup]          = "Clean ",
139         [rxrpc_client_count]            = "Count ",
140         [rxrpc_client_discard]          = "Discar",
141         [rxrpc_client_duplicate]        = "Duplic",
142         [rxrpc_client_exposed]          = "Expose",
143         [rxrpc_client_replace]          = "Replac",
144         [rxrpc_client_to_active]        = "->Actv",
145         [rxrpc_client_to_culled]        = "->Cull",
146         [rxrpc_client_to_idle]          = "->Idle",
147         [rxrpc_client_to_inactive]      = "->Inac",
148         [rxrpc_client_to_waiting]       = "->Wait",
149         [rxrpc_client_uncount]          = "Uncoun",
150 };
151
152 const char rxrpc_transmit_traces[rxrpc_transmit__nr_trace][4] = {
153         [rxrpc_transmit_wait]           = "WAI",
154         [rxrpc_transmit_queue]          = "QUE",
155         [rxrpc_transmit_queue_last]     = "QLS",
156         [rxrpc_transmit_rotate]         = "ROT",
157         [rxrpc_transmit_rotate_last]    = "RLS",
158         [rxrpc_transmit_await_reply]    = "AWR",
159         [rxrpc_transmit_end]            = "END",
160 };
161
162 const char rxrpc_receive_traces[rxrpc_receive__nr_trace][4] = {
163         [rxrpc_receive_incoming]        = "INC",
164         [rxrpc_receive_queue]           = "QUE",
165         [rxrpc_receive_queue_last]      = "QLS",
166         [rxrpc_receive_front]           = "FRN",
167         [rxrpc_receive_rotate]          = "ROT",
168         [rxrpc_receive_end]             = "END",
169 };
170
171 const char rxrpc_recvmsg_traces[rxrpc_recvmsg__nr_trace][5] = {
172         [rxrpc_recvmsg_enter]           = "ENTR",
173         [rxrpc_recvmsg_wait]            = "WAIT",
174         [rxrpc_recvmsg_dequeue]         = "DEQU",
175         [rxrpc_recvmsg_hole]            = "HOLE",
176         [rxrpc_recvmsg_next]            = "NEXT",
177         [rxrpc_recvmsg_cont]            = "CONT",
178         [rxrpc_recvmsg_full]            = "FULL",
179         [rxrpc_recvmsg_data_return]     = "DATA",
180         [rxrpc_recvmsg_terminal]        = "TERM",
181         [rxrpc_recvmsg_to_be_accepted]  = "TBAC",
182         [rxrpc_recvmsg_return]          = "RETN",
183 };
184
185 const char rxrpc_rtt_tx_traces[rxrpc_rtt_tx__nr_trace][5] = {
186         [rxrpc_rtt_tx_ping]             = "PING",
187         [rxrpc_rtt_tx_data]             = "DATA",
188 };
189
190 const char rxrpc_rtt_rx_traces[rxrpc_rtt_rx__nr_trace][5] = {
191         [rxrpc_rtt_rx_ping_response]    = "PONG",
192         [rxrpc_rtt_rx_requested_ack]    = "RACK",
193 };
194
195 const char rxrpc_timer_traces[rxrpc_timer__nr_trace][8] = {
196         [rxrpc_timer_begin]                     = "Begin ",
197         [rxrpc_timer_expired]                   = "*EXPR*",
198         [rxrpc_timer_init_for_reply]            = "IniRpl",
199         [rxrpc_timer_set_for_ack]               = "SetAck",
200         [rxrpc_timer_set_for_send]              = "SetTx ",
201         [rxrpc_timer_set_for_resend]            = "SetRTx",
202 };
203
204 const char rxrpc_propose_ack_traces[rxrpc_propose_ack__nr_trace][8] = {
205         [rxrpc_propose_ack_client_tx_end]       = "ClTxEnd",
206         [rxrpc_propose_ack_input_data]          = "DataIn ",
207         [rxrpc_propose_ack_ping_for_lost_ack]   = "LostAck",
208         [rxrpc_propose_ack_ping_for_lost_reply] = "LostRpl",
209         [rxrpc_propose_ack_ping_for_params]     = "Params ",
210         [rxrpc_propose_ack_respond_to_ack]      = "Rsp2Ack",
211         [rxrpc_propose_ack_respond_to_ping]     = "Rsp2Png",
212         [rxrpc_propose_ack_retry_tx]            = "RetryTx",
213         [rxrpc_propose_ack_rotate_rx]           = "RxAck  ",
214         [rxrpc_propose_ack_terminal_ack]        = "ClTerm ",
215 };
216
217 const char *const rxrpc_propose_ack_outcomes[rxrpc_propose_ack__nr_outcomes] = {
218         [rxrpc_propose_ack_use]                 = "",
219         [rxrpc_propose_ack_update]              = " Update",
220         [rxrpc_propose_ack_subsume]             = " Subsume",
221 };
222
223 const char rxrpc_congest_modes[NR__RXRPC_CONGEST_MODES][10] = {
224         [RXRPC_CALL_SLOW_START]         = "SlowStart",
225         [RXRPC_CALL_CONGEST_AVOIDANCE]  = "CongAvoid",
226         [RXRPC_CALL_PACKET_LOSS]        = "PktLoss  ",
227         [RXRPC_CALL_FAST_RETRANSMIT]    = "FastReTx ",
228 };
229
230 const char rxrpc_congest_changes[rxrpc_congest__nr_change][9] = {
231         [rxrpc_cong_begin_retransmission]       = " Retrans",
232         [rxrpc_cong_cleared_nacks]              = " Cleared",
233         [rxrpc_cong_new_low_nack]               = " NewLowN",
234         [rxrpc_cong_no_change]                  = "",
235         [rxrpc_cong_progress]                   = " Progres",
236         [rxrpc_cong_retransmit_again]           = " ReTxAgn",
237         [rxrpc_cong_rtt_window_end]             = " RttWinE",
238         [rxrpc_cong_saw_nack]                   = " SawNack",
239 };