1eef4f27bSRobert Mustacchi /*
2eef4f27bSRobert Mustacchi  * Copyright 2014-2017 Cavium, Inc.
3eef4f27bSRobert Mustacchi  * The contents of this file are subject to the terms of the Common Development
4eef4f27bSRobert Mustacchi  * and Distribution License, v.1,  (the "License").
5eef4f27bSRobert Mustacchi  *
6eef4f27bSRobert Mustacchi  * You may not use this file except in compliance with the License.
7eef4f27bSRobert Mustacchi  *
8eef4f27bSRobert Mustacchi  * You can obtain a copy of the License at available
9eef4f27bSRobert Mustacchi  * at http://opensource.org/licenses/CDDL-1.0
10eef4f27bSRobert Mustacchi  *
11eef4f27bSRobert Mustacchi  * See the License for the specific language governing permissions and
12eef4f27bSRobert Mustacchi  * limitations under the License.
13eef4f27bSRobert Mustacchi  */
14eef4f27bSRobert Mustacchi 
15eef4f27bSRobert Mustacchi #ifndef _TCP_CTX_H
16eef4f27bSRobert Mustacchi #define _TCP_CTX_H
17eef4f27bSRobert Mustacchi 
18eef4f27bSRobert Mustacchi #include "bcmtype.h"
19eef4f27bSRobert Mustacchi #include "l2_defs.h"
20eef4f27bSRobert Mustacchi 
21eef4f27bSRobert Mustacchi /////////////////////////////////////////////////////////////////////
22eef4f27bSRobert Mustacchi // TCP TX section
23eef4f27bSRobert Mustacchi /////////////////////////////////////////////////////////////////////
24eef4f27bSRobert Mustacchi 
25eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
26eef4f27bSRobert Mustacchi     typedef struct {
27*55fea89dSDan Cross         u32_t  tcp_tsch_snd_next;        // TSCH copy of snd_next, used for window calculations
28eef4f27bSRobert Mustacchi         u32_t  tcp_snd_max;              // TCP snd_max
29*55fea89dSDan Cross         u8_t   tcp_tsch_xnum;            // last slot number that was scheduled by TSCH
30eef4f27bSRobert Mustacchi         u8_t   tcp_cons_retx_num;        // last retransmit flush index that COM has received completion for
31*55fea89dSDan Cross         u8_t   tcp_tsch_cmd;             // Index of next ccell to be scheduled by TSCH
32*55fea89dSDan Cross         u8_t   tcp_cp_cmd;               // Command Queue producer
33*55fea89dSDan Cross         u8_t   tcp_tsch_cons_retx_num;   // last retransmit flush index that was sent by TSCH
34*55fea89dSDan Cross         u8_t   tcp_prod_retx_num;        // Retransmit flush is initiated by incrementing this member
35*55fea89dSDan Cross         u16_t  tcp_pgid;                 // L2 context cid that belong to this connection
36eef4f27bSRobert Mustacchi         u8_t   cam_pending;              // number of free entries in the CAM that are reserved for offloading the connection
37*55fea89dSDan Cross         u8_t   tcp_tcp_hlen;             // size of TCP header in 32 bit  words
38*55fea89dSDan Cross         u8_t   tcp_iphdr_nbytes;         // size of IP header in bytes
39*55fea89dSDan Cross         u8_t   l2_slot_size;             // N/A for iSCSI
40*55fea89dSDan Cross         u32_t  tcp_max_adv_win;          // Maximum advertised window to the remote peer
41eef4f27bSRobert Mustacchi         u8_t   tcp_modes;
42eef4f27bSRobert Mustacchi         u8_t   tcp_dack;
43eef4f27bSRobert Mustacchi         u8_t   tcp_tos;
44eef4f27bSRobert Mustacchi         u8_t   tcp_ttl;
45eef4f27bSRobert Mustacchi         union {
46eef4f27bSRobert Mustacchi             u32_t  tcp_ip_dst;           // destination IP address
47eef4f27bSRobert Mustacchi             u32_t  tcp_ipv6_dst[4];      // destination IP v6 address
48eef4f27bSRobert Mustacchi         }u1;
49eef4f27bSRobert Mustacchi         union {
50*55fea89dSDan Cross             u32_t  tcp_ip_src;	         // source IP address
51eef4f27bSRobert Mustacchi             u32_t  tcp_ipv6_src[4];      // source IP v6 address
52eef4f27bSRobert Mustacchi         }u2;
53*55fea89dSDan Cross         u16_t  tcp_dst_port;             // TCP destination port number
54*55fea89dSDan Cross         u16_t  tcp_src_port;             // TCP source port number
55eef4f27bSRobert Mustacchi     } tcp_tx_ctx_l_t;
56eef4f27bSRobert Mustacchi     typedef tcp_tx_ctx_l_t  tcp_tx_ctx_t;
57eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
58eef4f27bSRobert Mustacchi     typedef struct {
59*55fea89dSDan Cross         u32_t  tcp_tsch_snd_next;        // TSCH copy of snd_next, used for window calculations
60eef4f27bSRobert Mustacchi         u32_t  tcp_snd_max;              // TCP snd_max
61*55fea89dSDan Cross         u8_t   tcp_cp_cmd;               // Command Queue producer
62*55fea89dSDan Cross         u8_t   tcp_tsch_cmd;             // Index of next ccell to be scheduled by TSCH
63eef4f27bSRobert Mustacchi         u8_t   tcp_cons_retx_num;        // last retransmit flush index that COM has received completion for
64*55fea89dSDan Cross         u8_t   tcp_tsch_xnum;            // last slot number that was scheduled by TSCH
65*55fea89dSDan Cross         u16_t  tcp_pgid;                 // L2 context cid that belong to this connection
66*55fea89dSDan Cross         u8_t   tcp_prod_retx_num;        // Retransmit flush is initiated by incrementing this member
67*55fea89dSDan Cross         u8_t   tcp_tsch_cons_retx_num;   // last retransmit flush index that was sent by TSCH
68*55fea89dSDan Cross         u8_t   l2_slot_size;             // N/A for iSCSI
69*55fea89dSDan Cross         u8_t   tcp_iphdr_nbytes;         // size of IP header in bytes
70*55fea89dSDan Cross         u8_t   tcp_tcp_hlen;             // size of TCP header in 32 bit  words
71eef4f27bSRobert Mustacchi         u8_t   cam_pending;              // number of free entries in the CAM that are reserved for offloading the connection
72*55fea89dSDan Cross         u32_t  tcp_max_adv_win;          // Maximum advertised window to the remote peer
73eef4f27bSRobert Mustacchi         u8_t   tcp_ttl;
74eef4f27bSRobert Mustacchi         u8_t   tcp_tos;
75eef4f27bSRobert Mustacchi         u8_t   tcp_dack;
76eef4f27bSRobert Mustacchi         u8_t   tcp_modes;
77eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_RST_INDICATED_PENDING       (1<<0)
78eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_DISC_BD                     (1<<1)
79eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_UPLOAD_INITED               (1<<2)
80eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_RMT_DISC                    (1<<3)
81eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_PG_INVALIDATED              (1<<4)
82eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_ABORT_PENDING               (1<<5)
83eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_DISC_PENDING                (1<<6)
84eef4f27bSRobert Mustacchi             #define L4CTX_TCP_MODES_STOP_TX                     (1<<7)
85eef4f27bSRobert Mustacchi         union {
86eef4f27bSRobert Mustacchi             u32_t  tcp_ip_dst;           // destination IP address
87eef4f27bSRobert Mustacchi             u32_t  tcp_ipv6_dst[4];      // destination IP v6 address
88eef4f27bSRobert Mustacchi         };
89eef4f27bSRobert Mustacchi         union {
90*55fea89dSDan Cross             u32_t  tcp_ip_src;	         // source IP address
91eef4f27bSRobert Mustacchi             u32_t  tcp_ipv6_src[4];      // source IP v6 address
92eef4f27bSRobert Mustacchi         };
93*55fea89dSDan Cross         u16_t  tcp_src_port;             // TCP source port number
94eef4f27bSRobert Mustacchi         u16_t  tcp_dst_port;             // TCP destination port number
95eef4f27bSRobert Mustacchi     } tcp_tx_ctx_b_t;
96eef4f27bSRobert Mustacchi 
97eef4f27bSRobert Mustacchi     typedef tcp_tx_ctx_b_t  tcp_tx_ctx_t;
98eef4f27bSRobert Mustacchi #endif
99eef4f27bSRobert Mustacchi /////////////////////////////////////////////////////////////////////
100eef4f27bSRobert Mustacchi // TCP CMN section
101eef4f27bSRobert Mustacchi /////////////////////////////////////////////////////////////////////
102eef4f27bSRobert Mustacchi 
103*55fea89dSDan Cross // Congestion avoidance and slow start require that two variables be maintained
104*55fea89dSDan Cross // for each connection: a congestion window, cwnd, and a slow start threshold
105*55fea89dSDan Cross // size, ssthresh. Initialization for a given connection sets cwnd to one segment
106*55fea89dSDan Cross // and ssthresh to 65535 (or 0xFFFF)bytes. (but MS passed down 0xFFFFFFFF as
107eef4f27bSRobert Mustacchi // initial value)
108eef4f27bSRobert Mustacchi #define INITIAL_SSTHRESH_VAL    0xFFFFFFFF
109eef4f27bSRobert Mustacchi #define MAX_SSTHRESH_VAL        0x7FFFFFFF
110eef4f27bSRobert Mustacchi 
111eef4f27bSRobert Mustacchi typedef struct {
112*55fea89dSDan Cross     u8_t    ctx_type;                   // 0x0     context type enum
113eef4f27bSRobert Mustacchi         #define CTX_TYPE_ISCSI                           (5<<4)
114*55fea89dSDan Cross     u8_t    size;                       // 0x1     context size in bytes
115eef4f27bSRobert Mustacchi     u8_t    bd_pre_read;                // 0x2
116eef4f27bSRobert Mustacchi     u8_t    gen_bd_cid;                 // 0x3
117*55fea89dSDan Cross     u8_t    gen_bd_max;                 // 0x4
118eef4f27bSRobert Mustacchi     u8_t    oubits;                     // 0x5
119eef4f27bSRobert Mustacchi     u16_t   sq_prod;                    // 0x6     SQ producer, updated by host via mailbox. wraps at size: bits 0 - (k-1): queue element index within page, bits k - 15: page index in page table
120*55fea89dSDan Cross     u8_t    tcp_flags;                  // 0x8
121*55fea89dSDan Cross     u8_t    tcp_state;                  // 0x9     TCP state machine
122eef4f27bSRobert Mustacchi     union idx16_union_t rq_prod;        // 0xa     RQ producer, updated by driver, wraps at rq_size
123*55fea89dSDan Cross     u32_t   tcp_timer1;                 // 0xc     retransmit timer
124*55fea89dSDan Cross     u16_t   tcp_timer2;                 // 0x10
125*55fea89dSDan Cross     u16_t   tcp_timer3;                 //
126*55fea89dSDan Cross     u16_t   tcp_timer4;                 // 0x14
127*55fea89dSDan Cross     u16_t   tcp_timer5;                 //
128*55fea89dSDan Cross     u32_t   tcp_slot_size;              // 0x18
129eef4f27bSRobert Mustacchi         #define L4CTX_TCP_SLOT_SIZE_SLOT_SIZE               (0xffffffL<<0)
130eef4f27bSRobert Mustacchi         #define L4CTX_TCP_SLOT_SIZE_CMD_MAX                 (0x7fL<<24)
131eef4f27bSRobert Mustacchi         #define L4CTX_TCP_SLOT_SIZE_STOP                    (1UL<<31)
132*55fea89dSDan Cross     u32_t   tcp_snd_cwin;               // 0x1c
133*55fea89dSDan Cross     u32_t   tcp_snd_win;                // 0x20
134*55fea89dSDan Cross     u8_t    tcp_num_dupack;             // 0x24    number of consecutive duplicate ACK received
135*55fea89dSDan Cross     u8_t    tcp_tx_protocol_flags;      // 0x25    ack/rst/syn/fin indication
136*55fea89dSDan Cross     u8_t    tcp_comp_cons_retx_num;     //         Last retransmit flush index that was completed by TXP
137*55fea89dSDan Cross     u8_t    tcp_num_retx;               //
138eef4f27bSRobert Mustacchi     u32_t   tcp_fl;                     //         TCP flow label for IPV6
139*55fea89dSDan Cross     u32_t   tcp_ssthresh;               // 0x2c    TCP slow start threshold
140eef4f27bSRobert Mustacchi     u32_t   tcp_rcv_next;               // 0x30    TCP receive next sequence number
141*55fea89dSDan Cross     u32_t   tcp_rcv_win_seq;            //         unused in iSCSI
142eef4f27bSRobert Mustacchi     u32_t   tcp_snd_una;                //
143eef4f27bSRobert Mustacchi     u32_t   tcp_snd_next;               //
144eef4f27bSRobert Mustacchi     u32_t   tcp_sm_rtt;                 // 0x40
145eef4f27bSRobert Mustacchi     u32_t   tcp_sm_delta;               //
146eef4f27bSRobert Mustacchi     u32_t   tcp_max_snd_win;            //
147eef4f27bSRobert Mustacchi     u8_t    tcp_txp_cmd;                // 0x4c    index of the ccell that the TXP is currently transmitting
148*55fea89dSDan Cross     u8_t    tcp_upload_reason;          //
149eef4f27bSRobert Mustacchi 	u8_t   	tcp_rcv_seg_scale;        	// 		   TCP segment scale that is advertised by Xinan
150*55fea89dSDan Cross     u8_t    tcp_ulp_ooo_flags;
151eef4f27bSRobert Mustacchi #define TCP_ULP_OOO_DETECTED		(0x01)
152*55fea89dSDan Cross 	u32_t  	last_ack_sent;        	//         TCP ack sequence of the previous packet transmitted
153eef4f27bSRobert Mustacchi     u32_t   tcp_offload_seq;            //         initial TCP seq number of the Xinan sid (i.e. bseq + offload_seq = tcp_seq)
154*55fea89dSDan Cross     u32_t   tcp_tstamp;                 //
155eef4f27bSRobert Mustacchi     u16_t   tcp_mss;                    //         mss of the connection
156eef4f27bSRobert Mustacchi     u8_t    ka_probe_cnt;
157eef4f27bSRobert Mustacchi     u8_t    ka_max_probe_cnt;
158eef4f27bSRobert Mustacchi     u8_t    force_ack_pending;
159eef4f27bSRobert Mustacchi     u8_t    krnlq_id;                   //         indicate which krnlq that kcqe should be written to.
160eef4f27bSRobert Mustacchi     u16_t   ka_timeout_tick;
161eef4f27bSRobert Mustacchi     u16_t   ka_interval_tick;
162eef4f27bSRobert Mustacchi     u8_t    unused2;
163eef4f27bSRobert Mustacchi     u8_t    challenge_ack_state;         //         refer to tcpm-tcpsecure-09 requirement
164eef4f27bSRobert Mustacchi         #define CHALLENGE_ACK_NOT_SENT          0            // Challenge Ack not sent
165eef4f27bSRobert Mustacchi         #define CHALLENGE_ACK_SENT_KA_DISABLED  1            // Challenge ACK is sent while KA was disabled
166eef4f27bSRobert Mustacchi         #define CHALLENGE_ACK_SENT_KA_ENABLED   2            // Challenge ACK is sent while KA was enabled
167*55fea89dSDan Cross } tcp_cmn_ctx_b_t;
168eef4f27bSRobert Mustacchi 
169eef4f27bSRobert Mustacchi typedef struct {
170eef4f27bSRobert Mustacchi     u8_t    gen_bd_cid;                 // 0x0
171eef4f27bSRobert Mustacchi     u8_t    bd_pre_read;                // 0x1
172eef4f27bSRobert Mustacchi     u8_t    size;                       // 0x2
173*55fea89dSDan Cross     u8_t    ctx_type;                   // 0x3     context type enum
174eef4f27bSRobert Mustacchi     u16_t   sq_prod;                    // 0x4     SQ producer, updated by host via mailbox. wraps at size: bits 0 - (k-1): queue element index within page, bits k - 15: page index in page table
175*55fea89dSDan Cross     u8_t    oubits;                     // 0x6      ???
176eef4f27bSRobert Mustacchi     u8_t    gen_bd_max;                 // 0x7
177*55fea89dSDan Cross     u16_t   rq_prod;                    // 0x8     RQ producer, updated by driver, wraps at rq_size
178*55fea89dSDan Cross     u8_t    tcp_state;                  // 0xa     TCP state machine
179*55fea89dSDan Cross     u8_t    tcp_flags;                  // 0xb
180*55fea89dSDan Cross     u32_t   tcp_timer1;                 // 0xc     retransmit timer
181eef4f27bSRobert Mustacchi     u16_t   tcp_timer3;                 //
182eef4f27bSRobert Mustacchi     u16_t   tcp_timer2;                 // 0x10
183*55fea89dSDan Cross     u16_t   tcp_timer5;                 //
184*55fea89dSDan Cross     u16_t   tcp_timer4;                 // 0x14
185eef4f27bSRobert Mustacchi     u32_t   tcp_slot_size;              // 0x18
186*55fea89dSDan Cross     u32_t   tcp_snd_cwin;               // 0x1c
187*55fea89dSDan Cross     u32_t   tcp_snd_win;                // 0x20
188*55fea89dSDan Cross     u8_t    tcp_num_retx;               //
189*55fea89dSDan Cross     u8_t    tcp_comp_cons_retx_num;     //         Last retransmit flush index that was completed by TXP
190eef4f27bSRobert Mustacchi     u8_t    tcp_tx_protocol_flags;      // 0x25    ack/rst/syn/fin indication
191*55fea89dSDan Cross     u8_t    tcp_num_dupack;             // 0x24    number of consecutive duplicate ACK received
192eef4f27bSRobert Mustacchi     u32_t   tcp_fl;                     // 0x28    TCP flow label for IPV6
193eef4f27bSRobert Mustacchi     u32_t   tcp_ssthresh;               // 0x2c    TCP slow start threshold
194eef4f27bSRobert Mustacchi     u32_t   tcp_rcv_next;               // 0x30    TCP receive next sequence number
195eef4f27bSRobert Mustacchi     u32_t   tcp_rcv_win_seq;            //         unused in iSCSI
196eef4f27bSRobert Mustacchi     u32_t   tcp_snd_una;                //
197eef4f27bSRobert Mustacchi     u32_t   tcp_snd_next;               //
198eef4f27bSRobert Mustacchi     u32_t   tcp_sm_rtt;                 // 0x40
199eef4f27bSRobert Mustacchi     u32_t   tcp_sm_delta;               //
200eef4f27bSRobert Mustacchi     u32_t   tcp_max_snd_win;            //
201eef4f27bSRobert Mustacchi     u8_t    tcp_ulp_ooo_flags;
202eef4f27bSRobert Mustacchi     u8_t   	tcp_rcv_seg_scale;        	//          TCP segment scale that is advertised by Xinan
203eef4f27bSRobert Mustacchi     u8_t    tcp_upload_reason;          //
204eef4f27bSRobert Mustacchi     u8_t    tcp_txp_cmd;                // 0x4c    index of the ccell that the TXP is currently transmitting
205eef4f27bSRobert Mustacchi 	u32_t  	last_ack_sent;        	// TCP ack sequence of the previous packet transmitted
206eef4f27bSRobert Mustacchi     u32_t   tcp_offload_seq;            // initial TCP seq number of the Xinan side (i.e. bseq + offload_seq = tcp_seq)
207*55fea89dSDan Cross     u32_t   tcp_tstamp;                 //
208eef4f27bSRobert Mustacchi     u8_t    ka_max_probe_cnt;
209eef4f27bSRobert Mustacchi     u8_t    ka_probe_cnt;
210eef4f27bSRobert Mustacchi     u16_t   tcp_mss;                    // mss of the connection
211eef4f27bSRobert Mustacchi     u16_t   ka_timeout_tick;
212eef4f27bSRobert Mustacchi     u8_t    krnlq_id;                   // indicate which krnlq that kcqe should be written to.
213*55fea89dSDan Cross     u8_t    force_ack_pending;
214eef4f27bSRobert Mustacchi     u8_t    challenge_ack_state;        // refer to tcpm-tcpsecure-09 requirement
215eef4f27bSRobert Mustacchi     u8_t    unused2;
216eef4f27bSRobert Mustacchi     u16_t   ka_interval_tick;
217eef4f27bSRobert Mustacchi } tcp_cmn_ctx_l_t;
218eef4f27bSRobert Mustacchi 
219eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
220eef4f27bSRobert Mustacchi     typedef tcp_cmn_ctx_l_t  tcp_cmn_ctx_t;
221eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
222eef4f27bSRobert Mustacchi     typedef tcp_cmn_ctx_b_t  tcp_cmn_ctx_t;
223eef4f27bSRobert Mustacchi #endif
224eef4f27bSRobert Mustacchi /////////////////////////////////////////////////////////////////////
225eef4f27bSRobert Mustacchi // TCP RX section
226eef4f27bSRobert Mustacchi /////////////////////////////////////////////////////////////////////
227eef4f27bSRobert Mustacchi typedef struct {
228eef4f27bSRobert Mustacchi     u8_t    state;                      // iooo state
229eef4f27bSRobert Mustacchi     u8_t    spill_mode:1;
230*55fea89dSDan Cross     u8_t    mode:7;
231eef4f27bSRobert Mustacchi } iooo_tcp_b_t;
232eef4f27bSRobert Mustacchi 
233eef4f27bSRobert Mustacchi typedef struct {
234*55fea89dSDan Cross     u8_t    mode:7;
235eef4f27bSRobert Mustacchi     u8_t    spill_mode:1;
236eef4f27bSRobert Mustacchi     u8_t    state;                      // iooo state
237eef4f27bSRobert Mustacchi } iooo_tcp_l_t;
238eef4f27bSRobert Mustacchi 
239eef4f27bSRobert Mustacchi typedef struct {
240*55fea89dSDan Cross     u32_t   tcp_snd_wl1;            //
241*55fea89dSDan Cross     u32_t   tcp_snd_wl2;            //
242eef4f27bSRobert Mustacchi     u8_t   	tcp_snd_seg_scale;    	// TCP segment scale that is advertised by the remote peer
243eef4f27bSRobert Mustacchi #if (ISCSI_OOO_SUPPORT)
244eef4f27bSRobert Mustacchi     iooo_tcp_b_t iooo_tcp;              // iSCSI OOO tcp manager structure
245eef4f27bSRobert Mustacchi     u8_t    reserved0;
246eef4f27bSRobert Mustacchi #else
247eef4f27bSRobert Mustacchi     u8_t    reserved0[3];
248eef4f27bSRobert Mustacchi #endif
249eef4f27bSRobert Mustacchi } tcp_rx_ctx_b_t;
250eef4f27bSRobert Mustacchi 
251eef4f27bSRobert Mustacchi typedef struct {
252*55fea89dSDan Cross     u32_t  tcp_snd_wl1;             //
253eef4f27bSRobert Mustacchi     u32_t  tcp_snd_wl2;             //
254eef4f27bSRobert Mustacchi #if (ISCSI_OOO_SUPPORT)
255eef4f27bSRobert Mustacchi     iooo_tcp_l_t iooo_tcp;              // iSCSI OOO tcp manager structure
256eef4f27bSRobert Mustacchi     u8_t    reserved0;
257eef4f27bSRobert Mustacchi #else
258eef4f27bSRobert Mustacchi     u8_t    reserved0[3];
259eef4f27bSRobert Mustacchi #endif
260*55fea89dSDan Cross     u8_t   	tcp_snd_seg_scale;      // TCP segment scale that is advertised by the remote peer
261eef4f27bSRobert Mustacchi } tcp_rx_ctx_l_t;
262eef4f27bSRobert Mustacchi 
263eef4f27bSRobert Mustacchi #if defined(LITTLE_ENDIAN)
264eef4f27bSRobert Mustacchi     typedef tcp_rx_ctx_l_t  tcp_rx_ctx_t;
265eef4f27bSRobert Mustacchi #elif defined(BIG_ENDIAN)
266eef4f27bSRobert Mustacchi     typedef tcp_rx_ctx_b_t  tcp_rx_ctx_t;
267eef4f27bSRobert Mustacchi #endif
268eef4f27bSRobert Mustacchi 
269eef4f27bSRobert Mustacchi #endif /* _TCP_CTX_H */
270eef4f27bSRobert Mustacchi 
271