linux/include/linux/qed/tcp_common.h
<<
>>
Prefs
   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__ */
 256