xref: /kernel/linux/linux-5.10/include/net/nata.h (revision 8c2ecf20)
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (c) 2024 Huawei Device Co., Ltd.
4 *
5 * Network and Application-driven Transport Augmentation (NATA).
6 * Authors: yangyanjun
7 */
8#ifndef _INET_NATA_H
9#define _INET_NATA_H
10#if defined(CONFIG_TCP_NATA_URC) || defined(CONFIG_TCP_NATA_STL)
11#include <net/inet_sock.h>
12#include <net/sock.h>
13
14#define NATA_DATA_RETRIES_MAX	50
15#define NATA_SYN_RETRIES_MAX	50
16#define BITS_PRE_BYTE		8
17#define NATA_RTO_MAX_SHIFT	17
18#define NATA_RTO_MAX		((unsigned)(120*HZ))
19#define MAX_SHIFT (sizeof(unsigned long) * BITS_PER_BYTE - NATA_RTO_MAX_SHIFT)
20
21enum nata_retries_type_t {
22	NATA_NA = 0,
23	NATA_URC = 1,
24	NATA_STL = 2,
25};
26
27#ifdef CONFIG_TCP_NATA_URC
28#define NATA_URC_RTO_MS_MIN   200      // 200ms
29#define NATA_URC_RTO_MS_MAX   120000   // 120s
30#define NATA_URC_RTO_MS_TO_HZ 1000
31int tcp_set_nata_urc(struct sock *sk, sockptr_t optval, int optlen);
32#endif /* CONFIG_TCP_NATA_URC */
33
34#ifdef CONFIG_TCP_NATA_STL
35#define NATA_STL_SYN_RTO_MS_MIN  800    // 800ms
36#define NATA_STL_DATA_RTO_MS_MIN 1800   // 1800ms
37#define NATA_STL_RTO_MS_MAX      120000 // 120s
38#define NATA_STL_RTO_MS_TO_HZ    1000
39int tcp_set_nata_stl(struct sock *sk, sockptr_t optval, int optlen);
40#endif /* CONFIG_TCP_NATA_STL */
41
42#endif
43#endif /* _INET_NATA_H */
44