^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /* Miscellaneous bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (C) 2016 Red Hat, Inc. All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Written by David Howells (dhowells@redhat.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/kernel.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <net/sock.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <net/af_rxrpc.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "ar-internal.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * The maximum listening backlog queue size that may be set on a socket by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * listen().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) unsigned int rxrpc_max_backlog __read_mostly = 10;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * How long to wait before scheduling ACK generation after seeing a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * packet with RXRPC_REQUEST_ACK set (in jiffies).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) unsigned long rxrpc_requested_ack_delay = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) * How long to wait before scheduling an ACK with subtype DELAY (in jiffies).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * We use this when we've received new data packets. If those packets aren't
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) * all consumed within this time we will send a DELAY ACK if an ACK was not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) * requested to let the sender know it doesn't need to resend.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) unsigned long rxrpc_soft_ack_delay = HZ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * How long to wait before scheduling an ACK with subtype IDLE (in jiffies).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * We use this when we've consumed some previously soft-ACK'd packets when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) * further packets aren't immediately received to decide when to send an IDLE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) * ACK let the other end know that it can free up its Tx buffer space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) unsigned long rxrpc_idle_ack_delay = HZ / 2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) * Receive window size in packets. This indicates the maximum number of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) * unconsumed received packets we're willing to retain in memory. Once this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) * limit is hit, we should generate an EXCEEDS_WINDOW ACK and discard further
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) * packets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) unsigned int rxrpc_rx_window_size = RXRPC_INIT_RX_WINDOW_SIZE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #if (RXRPC_RXTX_BUFF_SIZE - 1) < RXRPC_INIT_RX_WINDOW_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #error Need to reduce RXRPC_INIT_RX_WINDOW_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) * Maximum Rx MTU size. This indicates to the sender the size of jumbo packet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) * made by gluing normal packets together that we're willing to handle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) unsigned int rxrpc_rx_mtu = 5692;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) * The maximum number of fragments in a received jumbo packet that we tell the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) * sender that we're willing to handle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) unsigned int rxrpc_rx_jumbo_max = 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) const s8 rxrpc_ack_priority[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) [0] = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) [RXRPC_ACK_DELAY] = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) [RXRPC_ACK_REQUESTED] = 2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) [RXRPC_ACK_IDLE] = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) [RXRPC_ACK_DUPLICATE] = 4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) [RXRPC_ACK_OUT_OF_SEQUENCE] = 5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) [RXRPC_ACK_EXCEEDS_WINDOW] = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) [RXRPC_ACK_NOSPACE] = 7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) [RXRPC_ACK_PING_RESPONSE] = 8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) };