aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/qed/tcp_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/qed/tcp_common.h')
-rw-r--r--include/linux/qed/tcp_common.h165
1 files changed, 96 insertions, 69 deletions
diff --git a/include/linux/qed/tcp_common.h b/include/linux/qed/tcp_common.h
index dbf7a43c3e1f..4a4845193539 100644
--- a/include/linux/qed/tcp_common.h
+++ b/include/linux/qed/tcp_common.h
@@ -33,8 +33,13 @@
33#ifndef __TCP_COMMON__ 33#ifndef __TCP_COMMON__
34#define __TCP_COMMON__ 34#define __TCP_COMMON__
35 35
36#define TCP_INVALID_TIMEOUT_VAL -1 36/********************/
37/* TCP FW CONSTANTS */
38/********************/
37 39
40#define TCP_INVALID_TIMEOUT_VAL -1
41
42/* OOO opaque data received from LL2 */
38struct ooo_opaque { 43struct ooo_opaque {
39 __le32 cid; 44 __le32 cid;
40 u8 drop_isle; 45 u8 drop_isle;
@@ -43,25 +48,29 @@ struct ooo_opaque {
43 u8 ooo_isle; 48 u8 ooo_isle;
44}; 49};
45 50
51/* tcp connect mode enum */
46enum tcp_connect_mode { 52enum tcp_connect_mode {
47 TCP_CONNECT_ACTIVE, 53 TCP_CONNECT_ACTIVE,
48 TCP_CONNECT_PASSIVE, 54 TCP_CONNECT_PASSIVE,
49 MAX_TCP_CONNECT_MODE 55 MAX_TCP_CONNECT_MODE
50}; 56};
51 57
58/* tcp function init parameters */
52struct tcp_init_params { 59struct tcp_init_params {
53 __le32 two_msl_timer; 60 __le32 two_msl_timer;
54 __le16 tx_sws_timer; 61 __le16 tx_sws_timer;
55 u8 maxfinrt; 62 u8 max_fin_rt;
56 u8 reserved[9]; 63 u8 reserved[9];
57}; 64};
58 65
66/* tcp IPv4/IPv6 enum */
59enum tcp_ip_version { 67enum tcp_ip_version {
60 TCP_IPV4, 68 TCP_IPV4,
61 TCP_IPV6, 69 TCP_IPV6,
62 MAX_TCP_IP_VERSION 70 MAX_TCP_IP_VERSION
63}; 71};
64 72
73/* tcp offload parameters */
65struct tcp_offload_params { 74struct tcp_offload_params {
66 __le16 local_mac_addr_lo; 75 __le16 local_mac_addr_lo;
67 __le16 local_mac_addr_mid; 76 __le16 local_mac_addr_mid;
@@ -70,24 +79,29 @@ struct tcp_offload_params {
70 __le16 remote_mac_addr_mid; 79 __le16 remote_mac_addr_mid;
71 __le16 remote_mac_addr_hi; 80 __le16 remote_mac_addr_hi;
72 __le16 vlan_id; 81 __le16 vlan_id;
73 u8 flags; 82 __le16 flags;
74#define TCP_OFFLOAD_PARAMS_TS_EN_MASK 0x1 83#define TCP_OFFLOAD_PARAMS_TS_EN_MASK 0x1
75#define TCP_OFFLOAD_PARAMS_TS_EN_SHIFT 0 84#define TCP_OFFLOAD_PARAMS_TS_EN_SHIFT 0
76#define TCP_OFFLOAD_PARAMS_DA_EN_MASK 0x1 85#define TCP_OFFLOAD_PARAMS_DA_EN_MASK 0x1
77#define TCP_OFFLOAD_PARAMS_DA_EN_SHIFT 1 86#define TCP_OFFLOAD_PARAMS_DA_EN_SHIFT 1
78#define TCP_OFFLOAD_PARAMS_KA_EN_MASK 0x1 87#define TCP_OFFLOAD_PARAMS_KA_EN_MASK 0x1
79#define TCP_OFFLOAD_PARAMS_KA_EN_SHIFT 2 88#define TCP_OFFLOAD_PARAMS_KA_EN_SHIFT 2
80#define TCP_OFFLOAD_PARAMS_NAGLE_EN_MASK 0x1 89#define TCP_OFFLOAD_PARAMS_ECN_SENDER_EN_MASK 0x1
81#define TCP_OFFLOAD_PARAMS_NAGLE_EN_SHIFT 3 90#define TCP_OFFLOAD_PARAMS_ECN_SENDER_EN_SHIFT 3
82#define TCP_OFFLOAD_PARAMS_DA_CNT_EN_MASK 0x1 91#define TCP_OFFLOAD_PARAMS_ECN_RECEIVER_EN_MASK 0x1
83#define TCP_OFFLOAD_PARAMS_DA_CNT_EN_SHIFT 4 92#define TCP_OFFLOAD_PARAMS_ECN_RECEIVER_EN_SHIFT 4
84#define TCP_OFFLOAD_PARAMS_FIN_SENT_MASK 0x1 93#define TCP_OFFLOAD_PARAMS_NAGLE_EN_MASK 0x1
85#define TCP_OFFLOAD_PARAMS_FIN_SENT_SHIFT 5 94#define TCP_OFFLOAD_PARAMS_NAGLE_EN_SHIFT 5
86#define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_MASK 0x1 95#define TCP_OFFLOAD_PARAMS_DA_CNT_EN_MASK 0x1
87#define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_SHIFT 6 96#define TCP_OFFLOAD_PARAMS_DA_CNT_EN_SHIFT 6
88#define TCP_OFFLOAD_PARAMS_RESERVED0_MASK 0x1 97#define TCP_OFFLOAD_PARAMS_FIN_SENT_MASK 0x1
89#define TCP_OFFLOAD_PARAMS_RESERVED0_SHIFT 7 98#define TCP_OFFLOAD_PARAMS_FIN_SENT_SHIFT 7
99#define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_MASK 0x1
100#define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_SHIFT 8
101#define TCP_OFFLOAD_PARAMS_RESERVED_MASK 0x7F
102#define TCP_OFFLOAD_PARAMS_RESERVED_SHIFT 9
90 u8 ip_version; 103 u8 ip_version;
104 u8 reserved0[3];
91 __le32 remote_ip[4]; 105 __le32 remote_ip[4];
92 __le32 local_ip[4]; 106 __le32 local_ip[4];
93 __le32 flow_label; 107 __le32 flow_label;
@@ -99,17 +113,21 @@ struct tcp_offload_params {
99 u8 rcv_wnd_scale; 113 u8 rcv_wnd_scale;
100 u8 connect_mode; 114 u8 connect_mode;
101 __le16 srtt; 115 __le16 srtt;
102 __le32 cwnd;
103 __le32 ss_thresh; 116 __le32 ss_thresh;
104 __le16 reserved1; 117 __le32 rcv_wnd;
118 __le32 cwnd;
105 u8 ka_max_probe_cnt; 119 u8 ka_max_probe_cnt;
106 u8 dup_ack_theshold; 120 u8 dup_ack_theshold;
121 __le16 reserved1;
122 __le32 ka_timeout;
123 __le32 ka_interval;
124 __le32 max_rt_time;
125 __le32 initial_rcv_wnd;
107 __le32 rcv_next; 126 __le32 rcv_next;
108 __le32 snd_una; 127 __le32 snd_una;
109 __le32 snd_next; 128 __le32 snd_next;
110 __le32 snd_max; 129 __le32 snd_max;
111 __le32 snd_wnd; 130 __le32 snd_wnd;
112 __le32 rcv_wnd;
113 __le32 snd_wl1; 131 __le32 snd_wl1;
114 __le32 ts_recent; 132 __le32 ts_recent;
115 __le32 ts_recent_age; 133 __le32 ts_recent_age;
@@ -122,16 +140,13 @@ struct tcp_offload_params {
122 u8 rt_cnt; 140 u8 rt_cnt;
123 __le16 rtt_var; 141 __le16 rtt_var;
124 __le16 fw_internal; 142 __le16 fw_internal;
125 __le32 ka_timeout;
126 __le32 ka_interval;
127 __le32 max_rt_time;
128 __le32 initial_rcv_wnd;
129 u8 snd_wnd_scale; 143 u8 snd_wnd_scale;
130 u8 ack_frequency; 144 u8 ack_frequency;
131 __le16 da_timeout_value; 145 __le16 da_timeout_value;
132 __le32 reserved3[2]; 146 __le32 reserved3;
133}; 147};
134 148
149/* tcp offload parameters */
135struct tcp_offload_params_opt2 { 150struct tcp_offload_params_opt2 {
136 __le16 local_mac_addr_lo; 151 __le16 local_mac_addr_lo;
137 __le16 local_mac_addr_mid; 152 __le16 local_mac_addr_mid;
@@ -140,16 +155,19 @@ struct tcp_offload_params_opt2 {
140 __le16 remote_mac_addr_mid; 155 __le16 remote_mac_addr_mid;
141 __le16 remote_mac_addr_hi; 156 __le16 remote_mac_addr_hi;
142 __le16 vlan_id; 157 __le16 vlan_id;
143 u8 flags; 158 __le16 flags;
144#define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_MASK 0x1 159#define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_MASK 0x1
145#define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_SHIFT 0 160#define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_SHIFT 0
146#define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_MASK 0x1 161#define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_MASK 0x1
147#define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_SHIFT 1 162#define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_SHIFT 1
148#define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_MASK 0x1 163#define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_MASK 0x1
149#define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_SHIFT 2 164#define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_SHIFT 2
150#define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_MASK 0x1F 165#define TCP_OFFLOAD_PARAMS_OPT2_ECN_EN_MASK 0x1
151#define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_SHIFT 3 166#define TCP_OFFLOAD_PARAMS_OPT2_ECN_EN_SHIFT 3
167#define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_MASK 0xFFF
168#define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_SHIFT 4
152 u8 ip_version; 169 u8 ip_version;
170 u8 reserved1[3];
153 __le32 remote_ip[4]; 171 __le32 remote_ip[4];
154 __le32 local_ip[4]; 172 __le32 local_ip[4];
155 __le32 flow_label; 173 __le32 flow_label;
@@ -163,9 +181,16 @@ struct tcp_offload_params_opt2 {
163 __le16 syn_ip_payload_length; 181 __le16 syn_ip_payload_length;
164 __le32 syn_phy_addr_lo; 182 __le32 syn_phy_addr_lo;
165 __le32 syn_phy_addr_hi; 183 __le32 syn_phy_addr_hi;
166 __le32 reserved1[22]; 184 __le32 cwnd;
185 u8 ka_max_probe_cnt;
186 u8 reserved2[3];
187 __le32 ka_timeout;
188 __le32 ka_interval;
189 __le32 max_rt_time;
190 __le32 reserved3[16];
167}; 191};
168 192
193/* tcp IPv4/IPv6 enum */
169enum tcp_seg_placement_event { 194enum tcp_seg_placement_event {
170 TCP_EVENT_ADD_PEN, 195 TCP_EVENT_ADD_PEN,
171 TCP_EVENT_ADD_NEW_ISLE, 196 TCP_EVENT_ADD_NEW_ISLE,
@@ -177,40 +202,41 @@ enum tcp_seg_placement_event {
177 MAX_TCP_SEG_PLACEMENT_EVENT 202 MAX_TCP_SEG_PLACEMENT_EVENT
178}; 203};
179 204
205/* tcp init parameters */
180struct tcp_update_params { 206struct tcp_update_params {
181 __le16 flags; 207 __le16 flags;
182#define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_MASK 0x1 208#define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_MASK 0x1
183#define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_SHIFT 0 209#define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_SHIFT 0
184#define TCP_UPDATE_PARAMS_MSS_CHANGED_MASK 0x1 210#define TCP_UPDATE_PARAMS_MSS_CHANGED_MASK 0x1
185#define TCP_UPDATE_PARAMS_MSS_CHANGED_SHIFT 1 211#define TCP_UPDATE_PARAMS_MSS_CHANGED_SHIFT 1
186#define TCP_UPDATE_PARAMS_TTL_CHANGED_MASK 0x1 212#define TCP_UPDATE_PARAMS_TTL_CHANGED_MASK 0x1
187#define TCP_UPDATE_PARAMS_TTL_CHANGED_SHIFT 2 213#define TCP_UPDATE_PARAMS_TTL_CHANGED_SHIFT 2
188#define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_MASK 0x1 214#define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_MASK 0x1
189#define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_SHIFT 3 215#define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_SHIFT 3
190#define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_MASK 0x1 216#define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_MASK 0x1
191#define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_SHIFT 4 217#define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_SHIFT 4
192#define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_MASK 0x1 218#define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_MASK 0x1
193#define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_SHIFT 5 219#define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_SHIFT 5
194#define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_MASK 0x1 220#define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_MASK 0x1
195#define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_SHIFT 6 221#define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_SHIFT 6
196#define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_MASK 0x1 222#define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_MASK 0x1
197#define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_SHIFT 7 223#define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_SHIFT 7
198#define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_MASK 0x1 224#define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_MASK 0x1
199#define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_SHIFT 8 225#define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_SHIFT 8
200#define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_MASK 0x1 226#define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_MASK 0x1
201#define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_SHIFT 9 227#define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_SHIFT 9
202#define TCP_UPDATE_PARAMS_KA_EN_CHANGED_MASK 0x1 228#define TCP_UPDATE_PARAMS_KA_EN_CHANGED_MASK 0x1
203#define TCP_UPDATE_PARAMS_KA_EN_CHANGED_SHIFT 10 229#define TCP_UPDATE_PARAMS_KA_EN_CHANGED_SHIFT 10
204#define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_MASK 0x1 230#define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_MASK 0x1
205#define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_SHIFT 11 231#define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_SHIFT 11
206#define TCP_UPDATE_PARAMS_KA_EN_MASK 0x1 232#define TCP_UPDATE_PARAMS_KA_EN_MASK 0x1
207#define TCP_UPDATE_PARAMS_KA_EN_SHIFT 12 233#define TCP_UPDATE_PARAMS_KA_EN_SHIFT 12
208#define TCP_UPDATE_PARAMS_NAGLE_EN_MASK 0x1 234#define TCP_UPDATE_PARAMS_NAGLE_EN_MASK 0x1
209#define TCP_UPDATE_PARAMS_NAGLE_EN_SHIFT 13 235#define TCP_UPDATE_PARAMS_NAGLE_EN_SHIFT 13
210#define TCP_UPDATE_PARAMS_KA_RESTART_MASK 0x1 236#define TCP_UPDATE_PARAMS_KA_RESTART_MASK 0x1
211#define TCP_UPDATE_PARAMS_KA_RESTART_SHIFT 14 237#define TCP_UPDATE_PARAMS_KA_RESTART_SHIFT 14
212#define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_MASK 0x1 238#define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_MASK 0x1
213#define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_SHIFT 15 239#define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_SHIFT 15
214 __le16 remote_mac_addr_lo; 240 __le16 remote_mac_addr_lo;
215 __le16 remote_mac_addr_mid; 241 __le16 remote_mac_addr_mid;
216 __le16 remote_mac_addr_hi; 242 __le16 remote_mac_addr_hi;
@@ -226,6 +252,7 @@ struct tcp_update_params {
226 u8 reserved1[7]; 252 u8 reserved1[7];
227}; 253};
228 254
255/* toe upload parameters */
229struct tcp_upload_params { 256struct tcp_upload_params {
230 __le32 rcv_next; 257 __le32 rcv_next;
231 __le32 snd_una; 258 __le32 snd_una;