d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER START
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * The contents of this file are subject to the terms of the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Common Development and Distribution License (the "License").
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You may not use this file except in compliance with the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * or http://www.opensolaris.org/os/licensing.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * See the License for the specific language governing permissions
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * and limitations under the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * When distributing Covered Code, include this CDDL HEADER in each
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * If applicable, add the following below this CDDL HEADER, with the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * fields enclosed by brackets "[]" replaced with your own identifying
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * information: Portions Copyright [yyyy] [name of copyright owner]
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER END
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Copyright 2014 QLogic Corporation
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * The contents of this file are subject to the terms of the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * QLogic End User License (the "License").
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You may not use this file except in compliance with the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You can obtain a copy of the License at
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * QLogic_End_User_Software_License.txt
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * See the License for the specific language governing permissions
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * and limitations under the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#ifndef _L4STATES_H
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define _L4STATES_H
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#include "bcmtype.h"
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Disconnect type.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef enum _l4_disconnect_type_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_DISCONNECT_TYPE_GRACEFUL = 1,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_DISCONNECT_TYPE_ABORTIVE = 2,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_disconnect_type_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Upload reason.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef enum _l4_upload_reason_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_UNKNOWN = 0,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_URG = 1,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_FRAGMENT = 2,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_IP_OPTION = 3,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_KEEP_ALIVE_TIMEOUT = 4,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_UPLOAD_REQUESTED = 5,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_LOW_ACTIVITY = 6,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_HIGH_DROP_RATE = 7,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_SMALL_IO = 8,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_NO_BUFFER_PRE_POSTING = 9,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_HIGH_OUT_OF_ORDER_PACKETS = 10,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_RETRANSMIT_TIMEOUT = 11,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_UPLOAD_REASON_MAX
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_upload_reason_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi* TCP connection state.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef enum _l4_tcp_con_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_UNDEFINED = 0,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_CLOSED = 1,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_SYN_SENT = 2,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_SYN_RCVD = 3,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_ESTABLISHED = 4,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_FIN_WAIT1 = 5,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_FIN_WAIT2 = 6,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_CLOSING = 7,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_CLOSE_WAIT = 8,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_LAST_ACK = 9,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_TIME_WAIT = 10,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_LISTEN = 11,
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi L4_TCP_CON_STATE_MAX
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_tcp_con_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Neighbor information.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_neigh_const_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t src_addr[8];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t vlan_tag; /* 4 MSBs are always 0 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_neigh_const_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_neigh_cached_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t dst_addr[8];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t host_reachability_delta;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_neigh_cached_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_neigh_delegated_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t nic_reachability_delta;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_neigh_delegated_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Path information.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_path_const_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t ip_version;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define IP_VERSION_IPV4 4
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define IP_VERSION_IPV6 6
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t _pad[3];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi union _u_ip_type_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct _ip_v4_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t dst_ip;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t src_ip;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi } ipv4;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct _ip_v6_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t dst_ip[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t src_ip[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi } ipv6;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi } u;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_path_const_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_path_cached_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t path_mtu;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_path_cached_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_path_delegated_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t ipv4_current_ip_id;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t _pad;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_path_delegated_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * TCP destination and source ports.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_tcp_const_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t tcp_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_ENABLE_TIME_STAMP 0x0001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_ENABLE_SACK 0x0002
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_ENABLE_WIN_SCALING 0x0004
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t dst_port; /* in host order */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t src_port; /* in host order */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t remote_mss;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t snd_seg_scale:4; /* 0 if win scaling is disabled */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t rcv_seg_scale:4; /* 0 if win scaling is disabled */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t _pad[3];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t hash_value;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_tcp_const_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_tcp_cached_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t tcp_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_ENABLE_KEEP_ALIVE 0x01
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_ENABLE_NAGLING 0x02
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_RESTART_KEEP_ALIVE 0x04
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_RESTART_MAX_RT 0x08
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define TCP_FLAG_UPDATE_RCV_WINDOW 0x10
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t _pad;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t initial_rcv_wnd;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t ttl_or_hop_limit;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t tos_or_traffic_class;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t ka_probe_cnt;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t user_priority; /* 5 MSBs are always 0 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t rcv_indication_size;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ka_time_out;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ka_interval;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t max_rt;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* ipv6 fields. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t flow_label;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_tcp_cached_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_tcp_delegated_state_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t con_state; /* l4_tcp_con_state_t */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t recv_next;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t recv_win_seq; /* ndis_tcp_delegated->RcvWnd + ndis_tcp_delegated->RcvNxt */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t send_una;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t send_next;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t send_max;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t send_win; /* ndis_tcp_delegated->SndWnd + ndis_tcp_delegated->SndUna */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t max_send_win; /* ndis_tcp_delegated->MaxSndWnd */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t send_wl1;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t send_cwin; /* ndis_tcp_delegated->CWnd + ndis_tcp_delegated->SndUna */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ss_thresh;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t sm_rtt; /* ndis_tcp_delegated->SRtt */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t sm_delta; /* ndis_tcp_delegated->RttVar */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t tstamp; /* ndis_tcp_delegated->TsTime */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ts_recent;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ts_recent_age;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t total_rt;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t dup_ack_count;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t snd_wnd_probe_count;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t _pad;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* TODO: remove the union in the next if version change. */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi union _keep_alive_or_retransmit_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct _keep_alive_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t probe_cnt;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t timeout_delta;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi } keep_alive;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct _retransmit_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t num_retx;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t retx_ms;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi } retransmit;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi } u;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_tcp_delegated_state_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Set offload parameters.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ******************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _l4_ofld_params_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define OFLD_PARAM_FLAG_SNAP_ENCAP 0x0001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ticks_per_second;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t ack_frequency;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t delayed_ack_ticks;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t max_retx;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t doubt_reachability_retx;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t sws_prevention_ticks;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t dup_ack_threshold;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t push_ticks;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t nce_stale_ticks;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t starting_ip_id;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t _pad;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} l4_ofld_params_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#endif /* _L4STATES_H */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi