tcp_common.h 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. /* QLogic qed NIC Driver
  2. * Copyright (c) 2015 QLogic Corporation
  3. *
  4. * This software is available under the terms of the GNU General Public License
  5. * (GPL) Version 2, available from the file COPYING in the main directory of
  6. * this source tree.
  7. */
  8. #ifndef __TCP_COMMON__
  9. #define __TCP_COMMON__
  10. #define TCP_INVALID_TIMEOUT_VAL -1
  11. struct ooo_opaque {
  12. __le32 cid;
  13. u8 drop_isle;
  14. u8 drop_size;
  15. u8 ooo_opcode;
  16. u8 ooo_isle;
  17. };
  18. enum tcp_connect_mode {
  19. TCP_CONNECT_ACTIVE,
  20. TCP_CONNECT_PASSIVE,
  21. MAX_TCP_CONNECT_MODE
  22. };
  23. struct tcp_init_params {
  24. __le32 two_msl_timer;
  25. __le16 tx_sws_timer;
  26. u8 maxfinrt;
  27. u8 reserved[9];
  28. };
  29. enum tcp_ip_version {
  30. TCP_IPV4,
  31. TCP_IPV6,
  32. MAX_TCP_IP_VERSION
  33. };
  34. struct tcp_offload_params {
  35. __le16 local_mac_addr_lo;
  36. __le16 local_mac_addr_mid;
  37. __le16 local_mac_addr_hi;
  38. __le16 remote_mac_addr_lo;
  39. __le16 remote_mac_addr_mid;
  40. __le16 remote_mac_addr_hi;
  41. __le16 vlan_id;
  42. u8 flags;
  43. #define TCP_OFFLOAD_PARAMS_TS_EN_MASK 0x1
  44. #define TCP_OFFLOAD_PARAMS_TS_EN_SHIFT 0
  45. #define TCP_OFFLOAD_PARAMS_DA_EN_MASK 0x1
  46. #define TCP_OFFLOAD_PARAMS_DA_EN_SHIFT 1
  47. #define TCP_OFFLOAD_PARAMS_KA_EN_MASK 0x1
  48. #define TCP_OFFLOAD_PARAMS_KA_EN_SHIFT 2
  49. #define TCP_OFFLOAD_PARAMS_NAGLE_EN_MASK 0x1
  50. #define TCP_OFFLOAD_PARAMS_NAGLE_EN_SHIFT 3
  51. #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_MASK 0x1
  52. #define TCP_OFFLOAD_PARAMS_DA_CNT_EN_SHIFT 4
  53. #define TCP_OFFLOAD_PARAMS_FIN_SENT_MASK 0x1
  54. #define TCP_OFFLOAD_PARAMS_FIN_SENT_SHIFT 5
  55. #define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_MASK 0x1
  56. #define TCP_OFFLOAD_PARAMS_FIN_RECEIVED_SHIFT 6
  57. #define TCP_OFFLOAD_PARAMS_RESERVED0_MASK 0x1
  58. #define TCP_OFFLOAD_PARAMS_RESERVED0_SHIFT 7
  59. u8 ip_version;
  60. __le32 remote_ip[4];
  61. __le32 local_ip[4];
  62. __le32 flow_label;
  63. u8 ttl;
  64. u8 tos_or_tc;
  65. __le16 remote_port;
  66. __le16 local_port;
  67. __le16 mss;
  68. u8 rcv_wnd_scale;
  69. u8 connect_mode;
  70. __le16 srtt;
  71. __le32 cwnd;
  72. __le32 ss_thresh;
  73. __le16 reserved1;
  74. u8 ka_max_probe_cnt;
  75. u8 dup_ack_theshold;
  76. __le32 rcv_next;
  77. __le32 snd_una;
  78. __le32 snd_next;
  79. __le32 snd_max;
  80. __le32 snd_wnd;
  81. __le32 rcv_wnd;
  82. __le32 snd_wl1;
  83. __le32 ts_time;
  84. __le32 ts_recent;
  85. __le32 ts_recent_age;
  86. __le32 total_rt;
  87. __le32 ka_timeout_delta;
  88. __le32 rt_timeout_delta;
  89. u8 dup_ack_cnt;
  90. u8 snd_wnd_probe_cnt;
  91. u8 ka_probe_cnt;
  92. u8 rt_cnt;
  93. __le16 rtt_var;
  94. __le16 reserved2;
  95. __le32 ka_timeout;
  96. __le32 ka_interval;
  97. __le32 max_rt_time;
  98. __le32 initial_rcv_wnd;
  99. u8 snd_wnd_scale;
  100. u8 ack_frequency;
  101. __le16 da_timeout_value;
  102. __le32 ts_ticks_per_second;
  103. };
  104. struct tcp_offload_params_opt2 {
  105. __le16 local_mac_addr_lo;
  106. __le16 local_mac_addr_mid;
  107. __le16 local_mac_addr_hi;
  108. __le16 remote_mac_addr_lo;
  109. __le16 remote_mac_addr_mid;
  110. __le16 remote_mac_addr_hi;
  111. __le16 vlan_id;
  112. u8 flags;
  113. #define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_MASK 0x1
  114. #define TCP_OFFLOAD_PARAMS_OPT2_TS_EN_SHIFT 0
  115. #define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_MASK 0x1
  116. #define TCP_OFFLOAD_PARAMS_OPT2_DA_EN_SHIFT 1
  117. #define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_MASK 0x1
  118. #define TCP_OFFLOAD_PARAMS_OPT2_KA_EN_SHIFT 2
  119. #define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_MASK 0x1F
  120. #define TCP_OFFLOAD_PARAMS_OPT2_RESERVED0_SHIFT 3
  121. u8 ip_version;
  122. __le32 remote_ip[4];
  123. __le32 local_ip[4];
  124. __le32 flow_label;
  125. u8 ttl;
  126. u8 tos_or_tc;
  127. __le16 remote_port;
  128. __le16 local_port;
  129. __le16 mss;
  130. u8 rcv_wnd_scale;
  131. u8 connect_mode;
  132. __le16 syn_ip_payload_length;
  133. __le32 syn_phy_addr_lo;
  134. __le32 syn_phy_addr_hi;
  135. __le32 reserved1[22];
  136. };
  137. enum tcp_seg_placement_event {
  138. TCP_EVENT_ADD_PEN,
  139. TCP_EVENT_ADD_NEW_ISLE,
  140. TCP_EVENT_ADD_ISLE_RIGHT,
  141. TCP_EVENT_ADD_ISLE_LEFT,
  142. TCP_EVENT_JOIN,
  143. TCP_EVENT_NOP,
  144. MAX_TCP_SEG_PLACEMENT_EVENT
  145. };
  146. struct tcp_update_params {
  147. __le16 flags;
  148. #define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_MASK 0x1
  149. #define TCP_UPDATE_PARAMS_REMOTE_MAC_ADDR_CHANGED_SHIFT 0
  150. #define TCP_UPDATE_PARAMS_MSS_CHANGED_MASK 0x1
  151. #define TCP_UPDATE_PARAMS_MSS_CHANGED_SHIFT 1
  152. #define TCP_UPDATE_PARAMS_TTL_CHANGED_MASK 0x1
  153. #define TCP_UPDATE_PARAMS_TTL_CHANGED_SHIFT 2
  154. #define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_MASK 0x1
  155. #define TCP_UPDATE_PARAMS_TOS_OR_TC_CHANGED_SHIFT 3
  156. #define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_MASK 0x1
  157. #define TCP_UPDATE_PARAMS_KA_TIMEOUT_CHANGED_SHIFT 4
  158. #define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_MASK 0x1
  159. #define TCP_UPDATE_PARAMS_KA_INTERVAL_CHANGED_SHIFT 5
  160. #define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_MASK 0x1
  161. #define TCP_UPDATE_PARAMS_MAX_RT_TIME_CHANGED_SHIFT 6
  162. #define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_MASK 0x1
  163. #define TCP_UPDATE_PARAMS_FLOW_LABEL_CHANGED_SHIFT 7
  164. #define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_MASK 0x1
  165. #define TCP_UPDATE_PARAMS_INITIAL_RCV_WND_CHANGED_SHIFT 8
  166. #define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_MASK 0x1
  167. #define TCP_UPDATE_PARAMS_KA_MAX_PROBE_CNT_CHANGED_SHIFT 9
  168. #define TCP_UPDATE_PARAMS_KA_EN_CHANGED_MASK 0x1
  169. #define TCP_UPDATE_PARAMS_KA_EN_CHANGED_SHIFT 10
  170. #define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_MASK 0x1
  171. #define TCP_UPDATE_PARAMS_NAGLE_EN_CHANGED_SHIFT 11
  172. #define TCP_UPDATE_PARAMS_KA_EN_MASK 0x1
  173. #define TCP_UPDATE_PARAMS_KA_EN_SHIFT 12
  174. #define TCP_UPDATE_PARAMS_NAGLE_EN_MASK 0x1
  175. #define TCP_UPDATE_PARAMS_NAGLE_EN_SHIFT 13
  176. #define TCP_UPDATE_PARAMS_KA_RESTART_MASK 0x1
  177. #define TCP_UPDATE_PARAMS_KA_RESTART_SHIFT 14
  178. #define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_MASK 0x1
  179. #define TCP_UPDATE_PARAMS_RETRANSMIT_RESTART_SHIFT 15
  180. __le16 remote_mac_addr_lo;
  181. __le16 remote_mac_addr_mid;
  182. __le16 remote_mac_addr_hi;
  183. __le16 mss;
  184. u8 ttl;
  185. u8 tos_or_tc;
  186. __le32 ka_timeout;
  187. __le32 ka_interval;
  188. __le32 max_rt_time;
  189. __le32 flow_label;
  190. __le32 initial_rcv_wnd;
  191. u8 ka_max_probe_cnt;
  192. u8 reserved1[7];
  193. };
  194. struct tcp_upload_params {
  195. __le32 rcv_next;
  196. __le32 snd_una;
  197. __le32 snd_next;
  198. __le32 snd_max;
  199. __le32 snd_wnd;
  200. __le32 rcv_wnd;
  201. __le32 snd_wl1;
  202. __le32 cwnd;
  203. __le32 ss_thresh;
  204. __le16 srtt;
  205. __le16 rtt_var;
  206. __le32 ts_time;
  207. __le32 ts_recent;
  208. __le32 ts_recent_age;
  209. __le32 total_rt;
  210. __le32 ka_timeout_delta;
  211. __le32 rt_timeout_delta;
  212. u8 dup_ack_cnt;
  213. u8 snd_wnd_probe_cnt;
  214. u8 ka_probe_cnt;
  215. u8 rt_cnt;
  216. __le32 reserved;
  217. };
  218. #endif /* __TCP_COMMON__ */