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 
21 enum 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
31 int 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
39 int 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