Commit | Line | Data |
---|---|---|
1f4d4ed6 | 1 | /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ |
7a9b6b8f | 2 | /* QLogic qed NIC Driver |
e8f1cb50 | 3 | * Copyright (c) 2015-2017 QLogic Corporation |
663eacd8 | 4 | * Copyright (c) 2019-2020 Marvell International Ltd. |
7a9b6b8f YM |
5 | */ |
6 | ||
7 | #ifndef __TCP_COMMON__ | |
8 | #define __TCP_COMMON__ | |
9 | ||
a2e7699e TT |
10 | /********************/ |
11 | /* TCP FW CONSTANTS */ | |
12 | /********************/ | |
7a9b6b8f | 13 | |
a2e7699e TT |
14 | #define TCP_INVALID_TIMEOUT_VAL -1 |
15 | ||
16 | /* OOO opaque data received from LL2 */ | |
05fafbfb YM |
17 | struct ooo_opaque { |
18 | __le32 cid; | |
19 | u8 drop_isle; | |
20 | u8 drop_size; | |
21 | u8 ooo_opcode; | |
22 | u8 ooo_isle; | |
23 | }; | |
24 | ||
a2e7699e | 25 | /* tcp connect mode enum */ |
7a9b6b8f YM |
26 | enum tcp_connect_mode { |
27 | TCP_CONNECT_ACTIVE, | |
28 | TCP_CONNECT_PASSIVE, | |
29 | MAX_TCP_CONNECT_MODE | |
30 | }; | |
31 | ||
a2e7699e | 32 | /* tcp function init parameters */ |
7a9b6b8f | 33 | struct tcp_init_params { |
05fafbfb | 34 | __le32 two_msl_timer; |
7a9b6b8f | 35 | __le16 tx_sws_timer; |
a2e7699e | 36 | u8 max_fin_rt; |
05fafbfb | 37 | u8 reserved[9]; |
7a9b6b8f YM |
38 | }; |
39 | ||
a2e7699e | 40 | /* tcp IPv4/IPv6 enum */ |
7a9b6b8f YM |
41 | enum tcp_ip_version { |
42 | TCP_IPV4, | |
43 | TCP_IPV6, | |
44 | MAX_TCP_IP_VERSION | |
45 | }; | |
46 | ||
a2e7699e | 47 | /* tcp offload parameters */ |
7a9b6b8f YM |
48 | struct 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; | |
da090917 | 56 | __le16 flags; |
a2e7699e TT |
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 | |
da090917 TT |
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 | |
a2e7699e | 67 | #define TCP_OFFLOAD_PARAMS_NAGLE_EN_MASK 0x1 |
da090917 | 68 | #define TCP_OFFLOAD_PARAMS_NAGLE_EN_SHIFT 5 |
a2e7699e | 69 | #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_MASK 0x1 |
da090917 | 70 | #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_SHIFT 6 |
a2e7699e | 71 | #define TCP_OFFLOAD_PARAMS_FIN_SENT_MASK 0x1 |
da090917 | 72 | #define TCP_OFFLOAD_PARAMS_FIN_SENT_SHIFT 7 |
a2e7699e | 73 | #define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_MASK 0x1 |
da090917 TT |
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 | |
7a9b6b8f | 77 | u8 ip_version; |
da090917 | 78 | u8 reserved0[3]; |
7a9b6b8f YM |
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; | |
7a9b6b8f | 90 | __le32 ss_thresh; |
da090917 TT |
91 | __le32 rcv_wnd; |
92 | __le32 cwnd; | |
7a9b6b8f YM |
93 | u8 ka_max_probe_cnt; |
94 | u8 dup_ack_theshold; | |
da090917 TT |
95 | __le16 reserved1; |
96 | __le32 ka_timeout; | |
97 | __le32 ka_interval; | |
98 | __le32 max_rt_time; | |
99 | __le32 initial_rcv_wnd; | |
7a9b6b8f YM |
100 | __le32 rcv_next; |
101 | __le32 snd_una; | |
102 | __le32 snd_next; | |
103 | __le32 snd_max; | |
104 | __le32 snd_wnd; | |
7a9b6b8f | 105 | __le32 snd_wl1; |
7a9b6b8f YM |
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; | |
7b6859fb | 116 | __le16 fw_internal; |
7a9b6b8f YM |
117 | u8 snd_wnd_scale; |
118 | u8 ack_frequency; | |
119 | __le16 da_timeout_value; | |
da090917 | 120 | __le32 reserved3; |
7a9b6b8f YM |
121 | }; |
122 | ||
a2e7699e | 123 | /* tcp offload parameters */ |
7a9b6b8f YM |
124 | struct 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; | |
da090917 | 132 | __le16 flags; |
a2e7699e TT |
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 | |
da090917 TT |
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 | |
7a9b6b8f | 143 | u8 ip_version; |
da090917 | 144 | u8 reserved1[3]; |
7a9b6b8f YM |
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; | |
da090917 TT |
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]; | |
7a9b6b8f YM |
165 | }; |
166 | ||
a2e7699e | 167 | /* tcp IPv4/IPv6 enum */ |
7a9b6b8f YM |
168 | enum 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, | |
be086e7c | 174 | TCP_EVENT_DELETE_ISLES, |
7a9b6b8f YM |
175 | TCP_EVENT_NOP, |
176 | MAX_TCP_SEG_PLACEMENT_EVENT | |
177 | }; | |
178 | ||
a2e7699e | 179 | /* tcp init parameters */ |
7a9b6b8f YM |
180 | struct tcp_update_params { |
181 | __le16 flags; | |
a2e7699e TT |
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 | |
7a9b6b8f YM |
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 | ||
a2e7699e | 229 | /* toe upload parameters */ |
7a9b6b8f YM |
230 | struct 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__ */ |