cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tcp_common.h (6808B)


      1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
      2/* QLogic qed NIC Driver
      3 * Copyright (c) 2015-2017  QLogic Corporation
      4 * Copyright (c) 2019-2020 Marvell International Ltd.
      5 */
      6
      7#ifndef __TCP_COMMON__
      8#define __TCP_COMMON__
      9
     10/********************/
     11/* TCP FW CONSTANTS */
     12/********************/
     13
     14#define TCP_INVALID_TIMEOUT_VAL	-1
     15
     16/* OOO opaque data received from LL2 */
     17struct ooo_opaque {
     18	__le32 cid;
     19	u8 drop_isle;
     20	u8 drop_size;
     21	u8 ooo_opcode;
     22	u8 ooo_isle;
     23};
     24
     25/* tcp connect mode enum */
     26enum tcp_connect_mode {
     27	TCP_CONNECT_ACTIVE,
     28	TCP_CONNECT_PASSIVE,
     29	MAX_TCP_CONNECT_MODE
     30};
     31
     32/* tcp function init parameters */
     33struct tcp_init_params {
     34	__le32 two_msl_timer;
     35	__le16 tx_sws_timer;
     36	u8 max_fin_rt;
     37	u8 reserved[9];
     38};
     39
     40/* tcp IPv4/IPv6 enum */
     41enum tcp_ip_version {
     42	TCP_IPV4,
     43	TCP_IPV6,
     44	MAX_TCP_IP_VERSION
     45};
     46
     47/* tcp offload parameters */
     48struct tcp_offload_params {
     49	__le16 local_mac_addr_lo;
     50	__le16 local_mac_addr_mid;
     51	__le16 local_mac_addr_hi;
     52	__le16 remote_mac_addr_lo;
     53	__le16 remote_mac_addr_mid;
     54	__le16 remote_mac_addr_hi;
     55	__le16 vlan_id;
     56	__le16 flags;
     57#define TCP_OFFLOAD_PARAMS_TS_EN_MASK			0x1
     58#define TCP_OFFLOAD_PARAMS_TS_EN_SHIFT			0
     59#define TCP_OFFLOAD_PARAMS_DA_EN_MASK			0x1
     60#define TCP_OFFLOAD_PARAMS_DA_EN_SHIFT			1
     61#define TCP_OFFLOAD_PARAMS_KA_EN_MASK			0x1
     62#define TCP_OFFLOAD_PARAMS_KA_EN_SHIFT			2
     63#define TCP_OFFLOAD_PARAMS_ECN_SENDER_EN_MASK		0x1
     64#define TCP_OFFLOAD_PARAMS_ECN_SENDER_EN_SHIFT		3
     65#define TCP_OFFLOAD_PARAMS_ECN_RECEIVER_EN_MASK		0x1
     66#define TCP_OFFLOAD_PARAMS_ECN_RECEIVER_EN_SHIFT	4
     67#define TCP_OFFLOAD_PARAMS_NAGLE_EN_MASK		0x1
     68#define TCP_OFFLOAD_PARAMS_NAGLE_EN_SHIFT		5
     69#define TCP_OFFLOAD_PARAMS_DA_CNT_EN_MASK		0x1
     70#define TCP_OFFLOAD_PARAMS_DA_CNT_EN_SHIFT		6
     71#define TCP_OFFLOAD_PARAMS_FIN_SENT_MASK		0x1
     72#define TCP_OFFLOAD_PARAMS_FIN_SENT_SHIFT		7
     73#define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_MASK		0x1
     74#define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_SHIFT		8
     75#define TCP_OFFLOAD_PARAMS_RESERVED_MASK		0x7F
     76#define TCP_OFFLOAD_PARAMS_RESERVED_SHIFT		9
     77	u8 ip_version;
     78	u8 reserved0[3];
     79	__le32 remote_ip[4];
     80	__le32 local_ip[4];
     81	__le32 flow_label;
     82	u8 ttl;
     83	u8 tos_or_tc;
     84	__le16 remote_port;
     85	__le16 local_port;
     86	__le16 mss;
     87	u8 rcv_wnd_scale;
     88	u8 connect_mode;
     89	__le16 srtt;
     90	__le32 ss_thresh;
     91	__le32 rcv_wnd;
     92	__le32 cwnd;
     93	u8 ka_max_probe_cnt;
     94	u8 dup_ack_theshold;
     95	__le16 reserved1;
     96	__le32 ka_timeout;
     97	__le32 ka_interval;
     98	__le32 max_rt_time;
     99	__le32 initial_rcv_wnd;
    100	__le32 rcv_next;
    101	__le32 snd_una;
    102	__le32 snd_next;
    103	__le32 snd_max;
    104	__le32 snd_wnd;
    105	__le32 snd_wl1;
    106	__le32 ts_recent;
    107	__le32 ts_recent_age;
    108	__le32 total_rt;
    109	__le32 ka_timeout_delta;
    110	__le32 rt_timeout_delta;
    111	u8 dup_ack_cnt;
    112	u8 snd_wnd_probe_cnt;
    113	u8 ka_probe_cnt;
    114	u8 rt_cnt;
    115	__le16 rtt_var;
    116	__le16 fw_internal;
    117	u8 snd_wnd_scale;
    118	u8 ack_frequency;
    119	__le16 da_timeout_value;
    120	__le32 reserved3;
    121};
    122
    123/* tcp offload parameters */
    124struct tcp_offload_params_opt2 {
    125	__le16 local_mac_addr_lo;
    126	__le16 local_mac_addr_mid;
    127	__le16 local_mac_addr_hi;
    128	__le16 remote_mac_addr_lo;
    129	__le16 remote_mac_addr_mid;
    130	__le16 remote_mac_addr_hi;
    131	__le16 vlan_id;
    132	__le16 flags;
    133#define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_MASK	0x1
    134#define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_SHIFT	0
    135#define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_MASK	0x1
    136#define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_SHIFT	1
    137#define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_MASK	0x1
    138#define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_SHIFT	2
    139#define TCP_OFFLOAD_PARAMS_OPT2_ECN_EN_MASK	0x1
    140#define TCP_OFFLOAD_PARAMS_OPT2_ECN_EN_SHIFT	3
    141#define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_MASK	0xFFF
    142#define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_SHIFT	4
    143	u8 ip_version;
    144	u8 reserved1[3];
    145	__le32 remote_ip[4];
    146	__le32 local_ip[4];
    147	__le32 flow_label;
    148	u8 ttl;
    149	u8 tos_or_tc;
    150	__le16 remote_port;
    151	__le16 local_port;
    152	__le16 mss;
    153	u8 rcv_wnd_scale;
    154	u8 connect_mode;
    155	__le16 syn_ip_payload_length;
    156	__le32 syn_phy_addr_lo;
    157	__le32 syn_phy_addr_hi;
    158	__le32 cwnd;
    159	u8 ka_max_probe_cnt;
    160	u8 reserved2[3];
    161	__le32 ka_timeout;
    162	__le32 ka_interval;
    163	__le32 max_rt_time;
    164	__le32 reserved3[16];
    165};
    166
    167/* tcp IPv4/IPv6 enum */
    168enum tcp_seg_placement_event {
    169	TCP_EVENT_ADD_PEN,
    170	TCP_EVENT_ADD_NEW_ISLE,
    171	TCP_EVENT_ADD_ISLE_RIGHT,
    172	TCP_EVENT_ADD_ISLE_LEFT,
    173	TCP_EVENT_JOIN,
    174	TCP_EVENT_DELETE_ISLES,
    175	TCP_EVENT_NOP,
    176	MAX_TCP_SEG_PLACEMENT_EVENT
    177};
    178
    179/* tcp init parameters */
    180struct tcp_update_params {
    181	__le16 flags;
    182#define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_MASK		0x1
    183#define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_SHIFT		0
    184#define TCP_UPDATE_PARAMS_MSS_CHANGED_MASK			0x1
    185#define TCP_UPDATE_PARAMS_MSS_CHANGED_SHIFT			1
    186#define TCP_UPDATE_PARAMS_TTL_CHANGED_MASK			0x1
    187#define TCP_UPDATE_PARAMS_TTL_CHANGED_SHIFT			2
    188#define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_MASK		0x1
    189#define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_SHIFT		3
    190#define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_MASK		0x1
    191#define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_SHIFT		4
    192#define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_MASK		0x1
    193#define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_SHIFT		5
    194#define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_MASK		0x1
    195#define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_SHIFT		6
    196#define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_MASK		0x1
    197#define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_SHIFT		7
    198#define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_MASK		0x1
    199#define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_SHIFT		8
    200#define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_MASK		0x1
    201#define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_SHIFT	9
    202#define TCP_UPDATE_PARAMS_KA_EN_CHANGED_MASK			0x1
    203#define TCP_UPDATE_PARAMS_KA_EN_CHANGED_SHIFT			10
    204#define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_MASK			0x1
    205#define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_SHIFT		11
    206#define TCP_UPDATE_PARAMS_KA_EN_MASK				0x1
    207#define TCP_UPDATE_PARAMS_KA_EN_SHIFT				12
    208#define TCP_UPDATE_PARAMS_NAGLE_EN_MASK				0x1
    209#define TCP_UPDATE_PARAMS_NAGLE_EN_SHIFT			13
    210#define TCP_UPDATE_PARAMS_KA_RESTART_MASK			0x1
    211#define TCP_UPDATE_PARAMS_KA_RESTART_SHIFT			14
    212#define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_MASK		0x1
    213#define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_SHIFT		15
    214	__le16 remote_mac_addr_lo;
    215	__le16 remote_mac_addr_mid;
    216	__le16 remote_mac_addr_hi;
    217	__le16 mss;
    218	u8 ttl;
    219	u8 tos_or_tc;
    220	__le32 ka_timeout;
    221	__le32 ka_interval;
    222	__le32 max_rt_time;
    223	__le32 flow_label;
    224	__le32 initial_rcv_wnd;
    225	u8 ka_max_probe_cnt;
    226	u8 reserved1[7];
    227};
    228
    229/* toe upload parameters */
    230struct tcp_upload_params {
    231	__le32 rcv_next;
    232	__le32 snd_una;
    233	__le32 snd_next;
    234	__le32 snd_max;
    235	__le32 snd_wnd;
    236	__le32 rcv_wnd;
    237	__le32 snd_wl1;
    238	__le32 cwnd;
    239	__le32 ss_thresh;
    240	__le16 srtt;
    241	__le16 rtt_var;
    242	__le32 ts_time;
    243	__le32 ts_recent;
    244	__le32 ts_recent_age;
    245	__le32 total_rt;
    246	__le32 ka_timeout_delta;
    247	__le32 rt_timeout_delta;
    248	u8 dup_ack_cnt;
    249	u8 snd_wnd_probe_cnt;
    250	u8 ka_probe_cnt;
    251	u8 rt_cnt;
    252	__le32 reserved;
    253};
    254
    255#endif /* __TCP_COMMON__ */