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 PUSH_PORT_CNT_MAX 10 15 #define NATA_DATA_RETRIES_MAX 50 16 #define NATA_SYN_RETRIES_MAX 50 17 #define BITS_PRE_BYTE 8 18 #define NATA_RTO_MAX_SHIFT 17 19 #define NATA_RTO_MAX ((unsigned)(120*HZ)) 20 #define MAX_SHIFT (sizeof(unsigned long) * BITS_PER_BYTE - NATA_RTO_MAX_SHIFT) 21 22 enum nata_retries_type_t { 23 NATA_NA = 0, 24 NATA_URC = 1, 25 NATA_STL = 2, 26 }; 27 28 #ifdef CONFIG_TCP_NATA_URC 29 #define NATA_URC_RTO_MS_MIN 200 // 200ms 30 #define NATA_URC_RTO_MS_MAX 120000 // 120s 31 #define NATA_URC_RTO_MS_TO_HZ 1000 32 int tcp_set_nata_urc(struct sock *sk, sockptr_t optval, int optlen); 33 void tcp_set_nata_push_urc(struct sock *sk); 34 #endif /* CONFIG_TCP_NATA_URC */ 35 36 #ifdef CONFIG_TCP_NATA_STL 37 #define NATA_STL_SYN_RTO_MS_MIN 800 // 800ms 38 #define NATA_STL_DATA_RTO_MS_MIN 1800 // 1800ms 39 #define NATA_STL_RTO_MS_MAX 120000 // 120s 40 #define NATA_STL_RTO_MS_TO_HZ 1000 41 int tcp_set_nata_stl(struct sock *sk, sockptr_t optval, int optlen); 42 #endif /* CONFIG_TCP_NATA_STL */ 43 44 #endif 45 #endif /* _INET_NATA_H */ 46