18c2ecf20Sopenharmony_ci/***************************************************************************** 28c2ecf20Sopenharmony_ci * * 38c2ecf20Sopenharmony_ci * File: cpl5_cmd.h * 48c2ecf20Sopenharmony_ci * $Revision: 1.6 $ * 58c2ecf20Sopenharmony_ci * $Date: 2005/06/21 18:29:47 $ * 68c2ecf20Sopenharmony_ci * Description: * 78c2ecf20Sopenharmony_ci * part of the Chelsio 10Gb Ethernet Driver. * 88c2ecf20Sopenharmony_ci * * 98c2ecf20Sopenharmony_ci * This program is free software; you can redistribute it and/or modify * 108c2ecf20Sopenharmony_ci * it under the terms of the GNU General Public License, version 2, as * 118c2ecf20Sopenharmony_ci * published by the Free Software Foundation. * 128c2ecf20Sopenharmony_ci * * 138c2ecf20Sopenharmony_ci * You should have received a copy of the GNU General Public License along * 148c2ecf20Sopenharmony_ci * with this program; if not, see <http://www.gnu.org/licenses/>. * 158c2ecf20Sopenharmony_ci * * 168c2ecf20Sopenharmony_ci * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * 178c2ecf20Sopenharmony_ci * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * 188c2ecf20Sopenharmony_ci * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * 198c2ecf20Sopenharmony_ci * * 208c2ecf20Sopenharmony_ci * http://www.chelsio.com * 218c2ecf20Sopenharmony_ci * * 228c2ecf20Sopenharmony_ci * Copyright (c) 2003 - 2005 Chelsio Communications, Inc. * 238c2ecf20Sopenharmony_ci * All rights reserved. * 248c2ecf20Sopenharmony_ci * * 258c2ecf20Sopenharmony_ci * Maintainers: maintainers@chelsio.com * 268c2ecf20Sopenharmony_ci * * 278c2ecf20Sopenharmony_ci * Authors: Dimitrios Michailidis <dm@chelsio.com> * 288c2ecf20Sopenharmony_ci * Tina Yang <tainay@chelsio.com> * 298c2ecf20Sopenharmony_ci * Felix Marti <felix@chelsio.com> * 308c2ecf20Sopenharmony_ci * Scott Bardone <sbardone@chelsio.com> * 318c2ecf20Sopenharmony_ci * Kurt Ottaway <kottaway@chelsio.com> * 328c2ecf20Sopenharmony_ci * Frank DiMambro <frank@chelsio.com> * 338c2ecf20Sopenharmony_ci * * 348c2ecf20Sopenharmony_ci * History: * 358c2ecf20Sopenharmony_ci * * 368c2ecf20Sopenharmony_ci ****************************************************************************/ 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci#ifndef _CXGB_CPL5_CMD_H_ 398c2ecf20Sopenharmony_ci#define _CXGB_CPL5_CMD_H_ 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci#include <asm/byteorder.h> 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci#if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD) 448c2ecf20Sopenharmony_ci#error "Adjust your <asm/byteorder.h> defines" 458c2ecf20Sopenharmony_ci#endif 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_cienum CPL_opcode { 488c2ecf20Sopenharmony_ci CPL_PASS_OPEN_REQ = 0x1, 498c2ecf20Sopenharmony_ci CPL_PASS_OPEN_RPL = 0x2, 508c2ecf20Sopenharmony_ci CPL_PASS_ESTABLISH = 0x3, 518c2ecf20Sopenharmony_ci CPL_PASS_ACCEPT_REQ = 0xE, 528c2ecf20Sopenharmony_ci CPL_PASS_ACCEPT_RPL = 0x4, 538c2ecf20Sopenharmony_ci CPL_ACT_OPEN_REQ = 0x5, 548c2ecf20Sopenharmony_ci CPL_ACT_OPEN_RPL = 0x6, 558c2ecf20Sopenharmony_ci CPL_CLOSE_CON_REQ = 0x7, 568c2ecf20Sopenharmony_ci CPL_CLOSE_CON_RPL = 0x8, 578c2ecf20Sopenharmony_ci CPL_CLOSE_LISTSRV_REQ = 0x9, 588c2ecf20Sopenharmony_ci CPL_CLOSE_LISTSRV_RPL = 0xA, 598c2ecf20Sopenharmony_ci CPL_ABORT_REQ = 0xB, 608c2ecf20Sopenharmony_ci CPL_ABORT_RPL = 0xC, 618c2ecf20Sopenharmony_ci CPL_PEER_CLOSE = 0xD, 628c2ecf20Sopenharmony_ci CPL_ACT_ESTABLISH = 0x17, 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci CPL_GET_TCB = 0x24, 658c2ecf20Sopenharmony_ci CPL_GET_TCB_RPL = 0x25, 668c2ecf20Sopenharmony_ci CPL_SET_TCB = 0x26, 678c2ecf20Sopenharmony_ci CPL_SET_TCB_FIELD = 0x27, 688c2ecf20Sopenharmony_ci CPL_SET_TCB_RPL = 0x28, 698c2ecf20Sopenharmony_ci CPL_PCMD = 0x29, 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ci CPL_PCMD_READ = 0x31, 728c2ecf20Sopenharmony_ci CPL_PCMD_READ_RPL = 0x32, 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci CPL_RX_DATA = 0xA0, 768c2ecf20Sopenharmony_ci CPL_RX_DATA_DDP = 0xA1, 778c2ecf20Sopenharmony_ci CPL_RX_DATA_ACK = 0xA3, 788c2ecf20Sopenharmony_ci CPL_RX_PKT = 0xAD, 798c2ecf20Sopenharmony_ci CPL_RX_ISCSI_HDR = 0xAF, 808c2ecf20Sopenharmony_ci CPL_TX_DATA_ACK = 0xB0, 818c2ecf20Sopenharmony_ci CPL_TX_DATA = 0xB1, 828c2ecf20Sopenharmony_ci CPL_TX_PKT = 0xB2, 838c2ecf20Sopenharmony_ci CPL_TX_PKT_LSO = 0xB6, 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci CPL_RTE_DELETE_REQ = 0xC0, 868c2ecf20Sopenharmony_ci CPL_RTE_DELETE_RPL = 0xC1, 878c2ecf20Sopenharmony_ci CPL_RTE_WRITE_REQ = 0xC2, 888c2ecf20Sopenharmony_ci CPL_RTE_WRITE_RPL = 0xD3, 898c2ecf20Sopenharmony_ci CPL_RTE_READ_REQ = 0xC3, 908c2ecf20Sopenharmony_ci CPL_RTE_READ_RPL = 0xC4, 918c2ecf20Sopenharmony_ci CPL_L2T_WRITE_REQ = 0xC5, 928c2ecf20Sopenharmony_ci CPL_L2T_WRITE_RPL = 0xD4, 938c2ecf20Sopenharmony_ci CPL_L2T_READ_REQ = 0xC6, 948c2ecf20Sopenharmony_ci CPL_L2T_READ_RPL = 0xC7, 958c2ecf20Sopenharmony_ci CPL_SMT_WRITE_REQ = 0xC8, 968c2ecf20Sopenharmony_ci CPL_SMT_WRITE_RPL = 0xD5, 978c2ecf20Sopenharmony_ci CPL_SMT_READ_REQ = 0xC9, 988c2ecf20Sopenharmony_ci CPL_SMT_READ_RPL = 0xCA, 998c2ecf20Sopenharmony_ci CPL_ARP_MISS_REQ = 0xCD, 1008c2ecf20Sopenharmony_ci CPL_ARP_MISS_RPL = 0xCE, 1018c2ecf20Sopenharmony_ci CPL_MIGRATE_C2T_REQ = 0xDC, 1028c2ecf20Sopenharmony_ci CPL_MIGRATE_C2T_RPL = 0xDD, 1038c2ecf20Sopenharmony_ci CPL_ERROR = 0xD7, 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_ci /* internal: driver -> TOM */ 1068c2ecf20Sopenharmony_ci CPL_MSS_CHANGE = 0xE1 1078c2ecf20Sopenharmony_ci}; 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci#define NUM_CPL_CMDS 256 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_cienum CPL_error { 1128c2ecf20Sopenharmony_ci CPL_ERR_NONE = 0, 1138c2ecf20Sopenharmony_ci CPL_ERR_TCAM_PARITY = 1, 1148c2ecf20Sopenharmony_ci CPL_ERR_TCAM_FULL = 3, 1158c2ecf20Sopenharmony_ci CPL_ERR_CONN_RESET = 20, 1168c2ecf20Sopenharmony_ci CPL_ERR_CONN_EXIST = 22, 1178c2ecf20Sopenharmony_ci CPL_ERR_ARP_MISS = 23, 1188c2ecf20Sopenharmony_ci CPL_ERR_BAD_SYN = 24, 1198c2ecf20Sopenharmony_ci CPL_ERR_CONN_TIMEDOUT = 30, 1208c2ecf20Sopenharmony_ci CPL_ERR_XMIT_TIMEDOUT = 31, 1218c2ecf20Sopenharmony_ci CPL_ERR_PERSIST_TIMEDOUT = 32, 1228c2ecf20Sopenharmony_ci CPL_ERR_FINWAIT2_TIMEDOUT = 33, 1238c2ecf20Sopenharmony_ci CPL_ERR_KEEPALIVE_TIMEDOUT = 34, 1248c2ecf20Sopenharmony_ci CPL_ERR_ABORT_FAILED = 42, 1258c2ecf20Sopenharmony_ci CPL_ERR_GENERAL = 99 1268c2ecf20Sopenharmony_ci}; 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_cienum { 1298c2ecf20Sopenharmony_ci CPL_CONN_POLICY_AUTO = 0, 1308c2ecf20Sopenharmony_ci CPL_CONN_POLICY_ASK = 1, 1318c2ecf20Sopenharmony_ci CPL_CONN_POLICY_DENY = 3 1328c2ecf20Sopenharmony_ci}; 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_cienum { 1358c2ecf20Sopenharmony_ci ULP_MODE_NONE = 0, 1368c2ecf20Sopenharmony_ci ULP_MODE_TCPDDP = 1, 1378c2ecf20Sopenharmony_ci ULP_MODE_ISCSI = 2, 1388c2ecf20Sopenharmony_ci ULP_MODE_IWARP = 3, 1398c2ecf20Sopenharmony_ci ULP_MODE_SSL = 4 1408c2ecf20Sopenharmony_ci}; 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_cienum { 1438c2ecf20Sopenharmony_ci CPL_PASS_OPEN_ACCEPT, 1448c2ecf20Sopenharmony_ci CPL_PASS_OPEN_REJECT 1458c2ecf20Sopenharmony_ci}; 1468c2ecf20Sopenharmony_ci 1478c2ecf20Sopenharmony_cienum { 1488c2ecf20Sopenharmony_ci CPL_ABORT_SEND_RST = 0, 1498c2ecf20Sopenharmony_ci CPL_ABORT_NO_RST, 1508c2ecf20Sopenharmony_ci CPL_ABORT_POST_CLOSE_REQ = 2 1518c2ecf20Sopenharmony_ci}; 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_cienum { // TX_PKT_LSO ethernet types 1548c2ecf20Sopenharmony_ci CPL_ETH_II, 1558c2ecf20Sopenharmony_ci CPL_ETH_II_VLAN, 1568c2ecf20Sopenharmony_ci CPL_ETH_802_3, 1578c2ecf20Sopenharmony_ci CPL_ETH_802_3_VLAN 1588c2ecf20Sopenharmony_ci}; 1598c2ecf20Sopenharmony_ci 1608c2ecf20Sopenharmony_ciunion opcode_tid { 1618c2ecf20Sopenharmony_ci u32 opcode_tid; 1628c2ecf20Sopenharmony_ci u8 opcode; 1638c2ecf20Sopenharmony_ci}; 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_ci#define S_OPCODE 24 1668c2ecf20Sopenharmony_ci#define V_OPCODE(x) ((x) << S_OPCODE) 1678c2ecf20Sopenharmony_ci#define G_OPCODE(x) (((x) >> S_OPCODE) & 0xFF) 1688c2ecf20Sopenharmony_ci#define G_TID(x) ((x) & 0xFFFFFF) 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_ci/* tid is assumed to be 24-bits */ 1718c2ecf20Sopenharmony_ci#define MK_OPCODE_TID(opcode, tid) (V_OPCODE(opcode) | (tid)) 1728c2ecf20Sopenharmony_ci 1738c2ecf20Sopenharmony_ci#define OPCODE_TID(cmd) ((cmd)->ot.opcode_tid) 1748c2ecf20Sopenharmony_ci 1758c2ecf20Sopenharmony_ci/* extract the TID from a CPL command */ 1768c2ecf20Sopenharmony_ci#define GET_TID(cmd) (G_TID(ntohl(OPCODE_TID(cmd)))) 1778c2ecf20Sopenharmony_ci 1788c2ecf20Sopenharmony_cistruct tcp_options { 1798c2ecf20Sopenharmony_ci u16 mss; 1808c2ecf20Sopenharmony_ci u8 wsf; 1818c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 1828c2ecf20Sopenharmony_ci u8 rsvd:4; 1838c2ecf20Sopenharmony_ci u8 ecn:1; 1848c2ecf20Sopenharmony_ci u8 sack:1; 1858c2ecf20Sopenharmony_ci u8 tstamp:1; 1868c2ecf20Sopenharmony_ci#else 1878c2ecf20Sopenharmony_ci u8 tstamp:1; 1888c2ecf20Sopenharmony_ci u8 sack:1; 1898c2ecf20Sopenharmony_ci u8 ecn:1; 1908c2ecf20Sopenharmony_ci u8 rsvd:4; 1918c2ecf20Sopenharmony_ci#endif 1928c2ecf20Sopenharmony_ci}; 1938c2ecf20Sopenharmony_ci 1948c2ecf20Sopenharmony_cistruct cpl_pass_open_req { 1958c2ecf20Sopenharmony_ci union opcode_tid ot; 1968c2ecf20Sopenharmony_ci u16 local_port; 1978c2ecf20Sopenharmony_ci u16 peer_port; 1988c2ecf20Sopenharmony_ci u32 local_ip; 1998c2ecf20Sopenharmony_ci u32 peer_ip; 2008c2ecf20Sopenharmony_ci u32 opt0h; 2018c2ecf20Sopenharmony_ci u32 opt0l; 2028c2ecf20Sopenharmony_ci u32 peer_netmask; 2038c2ecf20Sopenharmony_ci u32 opt1; 2048c2ecf20Sopenharmony_ci}; 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_cistruct cpl_pass_open_rpl { 2078c2ecf20Sopenharmony_ci union opcode_tid ot; 2088c2ecf20Sopenharmony_ci u16 local_port; 2098c2ecf20Sopenharmony_ci u16 peer_port; 2108c2ecf20Sopenharmony_ci u32 local_ip; 2118c2ecf20Sopenharmony_ci u32 peer_ip; 2128c2ecf20Sopenharmony_ci u8 resvd[7]; 2138c2ecf20Sopenharmony_ci u8 status; 2148c2ecf20Sopenharmony_ci}; 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_cistruct cpl_pass_establish { 2178c2ecf20Sopenharmony_ci union opcode_tid ot; 2188c2ecf20Sopenharmony_ci u16 local_port; 2198c2ecf20Sopenharmony_ci u16 peer_port; 2208c2ecf20Sopenharmony_ci u32 local_ip; 2218c2ecf20Sopenharmony_ci u32 peer_ip; 2228c2ecf20Sopenharmony_ci u32 tos_tid; 2238c2ecf20Sopenharmony_ci u8 l2t_idx; 2248c2ecf20Sopenharmony_ci u8 rsvd[3]; 2258c2ecf20Sopenharmony_ci u32 snd_isn; 2268c2ecf20Sopenharmony_ci u32 rcv_isn; 2278c2ecf20Sopenharmony_ci}; 2288c2ecf20Sopenharmony_ci 2298c2ecf20Sopenharmony_cistruct cpl_pass_accept_req { 2308c2ecf20Sopenharmony_ci union opcode_tid ot; 2318c2ecf20Sopenharmony_ci u16 local_port; 2328c2ecf20Sopenharmony_ci u16 peer_port; 2338c2ecf20Sopenharmony_ci u32 local_ip; 2348c2ecf20Sopenharmony_ci u32 peer_ip; 2358c2ecf20Sopenharmony_ci u32 tos_tid; 2368c2ecf20Sopenharmony_ci struct tcp_options tcp_options; 2378c2ecf20Sopenharmony_ci u8 dst_mac[6]; 2388c2ecf20Sopenharmony_ci u16 vlan_tag; 2398c2ecf20Sopenharmony_ci u8 src_mac[6]; 2408c2ecf20Sopenharmony_ci u8 rsvd[2]; 2418c2ecf20Sopenharmony_ci u32 rcv_isn; 2428c2ecf20Sopenharmony_ci u32 unknown_tcp_options; 2438c2ecf20Sopenharmony_ci}; 2448c2ecf20Sopenharmony_ci 2458c2ecf20Sopenharmony_cistruct cpl_pass_accept_rpl { 2468c2ecf20Sopenharmony_ci union opcode_tid ot; 2478c2ecf20Sopenharmony_ci u32 rsvd0; 2488c2ecf20Sopenharmony_ci u32 rsvd1; 2498c2ecf20Sopenharmony_ci u32 peer_ip; 2508c2ecf20Sopenharmony_ci u32 opt0h; 2518c2ecf20Sopenharmony_ci union { 2528c2ecf20Sopenharmony_ci u32 opt0l; 2538c2ecf20Sopenharmony_ci struct { 2548c2ecf20Sopenharmony_ci u8 rsvd[3]; 2558c2ecf20Sopenharmony_ci u8 status; 2568c2ecf20Sopenharmony_ci }; 2578c2ecf20Sopenharmony_ci }; 2588c2ecf20Sopenharmony_ci}; 2598c2ecf20Sopenharmony_ci 2608c2ecf20Sopenharmony_cistruct cpl_act_open_req { 2618c2ecf20Sopenharmony_ci union opcode_tid ot; 2628c2ecf20Sopenharmony_ci u16 local_port; 2638c2ecf20Sopenharmony_ci u16 peer_port; 2648c2ecf20Sopenharmony_ci u32 local_ip; 2658c2ecf20Sopenharmony_ci u32 peer_ip; 2668c2ecf20Sopenharmony_ci u32 opt0h; 2678c2ecf20Sopenharmony_ci u32 opt0l; 2688c2ecf20Sopenharmony_ci u32 iff_vlantag; 2698c2ecf20Sopenharmony_ci u32 rsvd; 2708c2ecf20Sopenharmony_ci}; 2718c2ecf20Sopenharmony_ci 2728c2ecf20Sopenharmony_cistruct cpl_act_open_rpl { 2738c2ecf20Sopenharmony_ci union opcode_tid ot; 2748c2ecf20Sopenharmony_ci u16 local_port; 2758c2ecf20Sopenharmony_ci u16 peer_port; 2768c2ecf20Sopenharmony_ci u32 local_ip; 2778c2ecf20Sopenharmony_ci u32 peer_ip; 2788c2ecf20Sopenharmony_ci u32 new_tid; 2798c2ecf20Sopenharmony_ci u8 rsvd[3]; 2808c2ecf20Sopenharmony_ci u8 status; 2818c2ecf20Sopenharmony_ci}; 2828c2ecf20Sopenharmony_ci 2838c2ecf20Sopenharmony_cistruct cpl_act_establish { 2848c2ecf20Sopenharmony_ci union opcode_tid ot; 2858c2ecf20Sopenharmony_ci u16 local_port; 2868c2ecf20Sopenharmony_ci u16 peer_port; 2878c2ecf20Sopenharmony_ci u32 local_ip; 2888c2ecf20Sopenharmony_ci u32 peer_ip; 2898c2ecf20Sopenharmony_ci u32 tos_tid; 2908c2ecf20Sopenharmony_ci u32 rsvd; 2918c2ecf20Sopenharmony_ci u32 snd_isn; 2928c2ecf20Sopenharmony_ci u32 rcv_isn; 2938c2ecf20Sopenharmony_ci}; 2948c2ecf20Sopenharmony_ci 2958c2ecf20Sopenharmony_cistruct cpl_get_tcb { 2968c2ecf20Sopenharmony_ci union opcode_tid ot; 2978c2ecf20Sopenharmony_ci u32 rsvd; 2988c2ecf20Sopenharmony_ci}; 2998c2ecf20Sopenharmony_ci 3008c2ecf20Sopenharmony_cistruct cpl_get_tcb_rpl { 3018c2ecf20Sopenharmony_ci union opcode_tid ot; 3028c2ecf20Sopenharmony_ci u16 len; 3038c2ecf20Sopenharmony_ci u8 rsvd; 3048c2ecf20Sopenharmony_ci u8 status; 3058c2ecf20Sopenharmony_ci}; 3068c2ecf20Sopenharmony_ci 3078c2ecf20Sopenharmony_cistruct cpl_set_tcb { 3088c2ecf20Sopenharmony_ci union opcode_tid ot; 3098c2ecf20Sopenharmony_ci u16 len; 3108c2ecf20Sopenharmony_ci u16 rsvd; 3118c2ecf20Sopenharmony_ci}; 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_cistruct cpl_set_tcb_field { 3148c2ecf20Sopenharmony_ci union opcode_tid ot; 3158c2ecf20Sopenharmony_ci u8 rsvd[3]; 3168c2ecf20Sopenharmony_ci u8 offset; 3178c2ecf20Sopenharmony_ci u32 mask; 3188c2ecf20Sopenharmony_ci u32 val; 3198c2ecf20Sopenharmony_ci}; 3208c2ecf20Sopenharmony_ci 3218c2ecf20Sopenharmony_cistruct cpl_set_tcb_rpl { 3228c2ecf20Sopenharmony_ci union opcode_tid ot; 3238c2ecf20Sopenharmony_ci u8 rsvd[3]; 3248c2ecf20Sopenharmony_ci u8 status; 3258c2ecf20Sopenharmony_ci}; 3268c2ecf20Sopenharmony_ci 3278c2ecf20Sopenharmony_cistruct cpl_pcmd { 3288c2ecf20Sopenharmony_ci union opcode_tid ot; 3298c2ecf20Sopenharmony_ci u16 dlen_in; 3308c2ecf20Sopenharmony_ci u16 dlen_out; 3318c2ecf20Sopenharmony_ci u32 pcmd_parm[2]; 3328c2ecf20Sopenharmony_ci}; 3338c2ecf20Sopenharmony_ci 3348c2ecf20Sopenharmony_cistruct cpl_pcmd_read { 3358c2ecf20Sopenharmony_ci union opcode_tid ot; 3368c2ecf20Sopenharmony_ci u32 rsvd1; 3378c2ecf20Sopenharmony_ci u16 rsvd2; 3388c2ecf20Sopenharmony_ci u32 addr; 3398c2ecf20Sopenharmony_ci u16 len; 3408c2ecf20Sopenharmony_ci}; 3418c2ecf20Sopenharmony_ci 3428c2ecf20Sopenharmony_cistruct cpl_pcmd_read_rpl { 3438c2ecf20Sopenharmony_ci union opcode_tid ot; 3448c2ecf20Sopenharmony_ci u16 len; 3458c2ecf20Sopenharmony_ci}; 3468c2ecf20Sopenharmony_ci 3478c2ecf20Sopenharmony_cistruct cpl_close_con_req { 3488c2ecf20Sopenharmony_ci union opcode_tid ot; 3498c2ecf20Sopenharmony_ci u32 rsvd; 3508c2ecf20Sopenharmony_ci}; 3518c2ecf20Sopenharmony_ci 3528c2ecf20Sopenharmony_cistruct cpl_close_con_rpl { 3538c2ecf20Sopenharmony_ci union opcode_tid ot; 3548c2ecf20Sopenharmony_ci u8 rsvd[3]; 3558c2ecf20Sopenharmony_ci u8 status; 3568c2ecf20Sopenharmony_ci u32 snd_nxt; 3578c2ecf20Sopenharmony_ci u32 rcv_nxt; 3588c2ecf20Sopenharmony_ci}; 3598c2ecf20Sopenharmony_ci 3608c2ecf20Sopenharmony_cistruct cpl_close_listserv_req { 3618c2ecf20Sopenharmony_ci union opcode_tid ot; 3628c2ecf20Sopenharmony_ci u32 rsvd; 3638c2ecf20Sopenharmony_ci}; 3648c2ecf20Sopenharmony_ci 3658c2ecf20Sopenharmony_cistruct cpl_close_listserv_rpl { 3668c2ecf20Sopenharmony_ci union opcode_tid ot; 3678c2ecf20Sopenharmony_ci u8 rsvd[3]; 3688c2ecf20Sopenharmony_ci u8 status; 3698c2ecf20Sopenharmony_ci}; 3708c2ecf20Sopenharmony_ci 3718c2ecf20Sopenharmony_cistruct cpl_abort_req { 3728c2ecf20Sopenharmony_ci union opcode_tid ot; 3738c2ecf20Sopenharmony_ci u32 rsvd0; 3748c2ecf20Sopenharmony_ci u8 rsvd1; 3758c2ecf20Sopenharmony_ci u8 cmd; 3768c2ecf20Sopenharmony_ci u8 rsvd2[6]; 3778c2ecf20Sopenharmony_ci}; 3788c2ecf20Sopenharmony_ci 3798c2ecf20Sopenharmony_cistruct cpl_abort_rpl { 3808c2ecf20Sopenharmony_ci union opcode_tid ot; 3818c2ecf20Sopenharmony_ci u32 rsvd0; 3828c2ecf20Sopenharmony_ci u8 rsvd1; 3838c2ecf20Sopenharmony_ci u8 status; 3848c2ecf20Sopenharmony_ci u8 rsvd2[6]; 3858c2ecf20Sopenharmony_ci}; 3868c2ecf20Sopenharmony_ci 3878c2ecf20Sopenharmony_cistruct cpl_peer_close { 3888c2ecf20Sopenharmony_ci union opcode_tid ot; 3898c2ecf20Sopenharmony_ci u32 rsvd; 3908c2ecf20Sopenharmony_ci}; 3918c2ecf20Sopenharmony_ci 3928c2ecf20Sopenharmony_cistruct cpl_tx_data { 3938c2ecf20Sopenharmony_ci union opcode_tid ot; 3948c2ecf20Sopenharmony_ci u32 len; 3958c2ecf20Sopenharmony_ci u32 rsvd0; 3968c2ecf20Sopenharmony_ci u16 urg; 3978c2ecf20Sopenharmony_ci u16 flags; 3988c2ecf20Sopenharmony_ci}; 3998c2ecf20Sopenharmony_ci 4008c2ecf20Sopenharmony_cistruct cpl_tx_data_ack { 4018c2ecf20Sopenharmony_ci union opcode_tid ot; 4028c2ecf20Sopenharmony_ci u32 ack_seq; 4038c2ecf20Sopenharmony_ci}; 4048c2ecf20Sopenharmony_ci 4058c2ecf20Sopenharmony_cistruct cpl_rx_data { 4068c2ecf20Sopenharmony_ci union opcode_tid ot; 4078c2ecf20Sopenharmony_ci u32 len; 4088c2ecf20Sopenharmony_ci u32 seq; 4098c2ecf20Sopenharmony_ci u16 urg; 4108c2ecf20Sopenharmony_ci u8 rsvd; 4118c2ecf20Sopenharmony_ci u8 status; 4128c2ecf20Sopenharmony_ci}; 4138c2ecf20Sopenharmony_ci 4148c2ecf20Sopenharmony_cistruct cpl_rx_data_ack { 4158c2ecf20Sopenharmony_ci union opcode_tid ot; 4168c2ecf20Sopenharmony_ci u32 credit; 4178c2ecf20Sopenharmony_ci}; 4188c2ecf20Sopenharmony_ci 4198c2ecf20Sopenharmony_cistruct cpl_rx_data_ddp { 4208c2ecf20Sopenharmony_ci union opcode_tid ot; 4218c2ecf20Sopenharmony_ci u32 len; 4228c2ecf20Sopenharmony_ci u32 seq; 4238c2ecf20Sopenharmony_ci u32 nxt_seq; 4248c2ecf20Sopenharmony_ci u32 ulp_crc; 4258c2ecf20Sopenharmony_ci u16 ddp_status; 4268c2ecf20Sopenharmony_ci u8 rsvd; 4278c2ecf20Sopenharmony_ci u8 status; 4288c2ecf20Sopenharmony_ci}; 4298c2ecf20Sopenharmony_ci 4308c2ecf20Sopenharmony_ci/* 4318c2ecf20Sopenharmony_ci * We want this header's alignment to be no more stringent than 2-byte aligned. 4328c2ecf20Sopenharmony_ci * All fields are u8 or u16 except for the length. However that field is not 4338c2ecf20Sopenharmony_ci * used so we break it into 2 16-bit parts to easily meet our alignment needs. 4348c2ecf20Sopenharmony_ci */ 4358c2ecf20Sopenharmony_cistruct cpl_tx_pkt { 4368c2ecf20Sopenharmony_ci u8 opcode; 4378c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 4388c2ecf20Sopenharmony_ci u8 iff:4; 4398c2ecf20Sopenharmony_ci u8 ip_csum_dis:1; 4408c2ecf20Sopenharmony_ci u8 l4_csum_dis:1; 4418c2ecf20Sopenharmony_ci u8 vlan_valid:1; 4428c2ecf20Sopenharmony_ci u8 rsvd:1; 4438c2ecf20Sopenharmony_ci#else 4448c2ecf20Sopenharmony_ci u8 rsvd:1; 4458c2ecf20Sopenharmony_ci u8 vlan_valid:1; 4468c2ecf20Sopenharmony_ci u8 l4_csum_dis:1; 4478c2ecf20Sopenharmony_ci u8 ip_csum_dis:1; 4488c2ecf20Sopenharmony_ci u8 iff:4; 4498c2ecf20Sopenharmony_ci#endif 4508c2ecf20Sopenharmony_ci u16 vlan; 4518c2ecf20Sopenharmony_ci u16 len_hi; 4528c2ecf20Sopenharmony_ci u16 len_lo; 4538c2ecf20Sopenharmony_ci}; 4548c2ecf20Sopenharmony_ci 4558c2ecf20Sopenharmony_cistruct cpl_tx_pkt_lso { 4568c2ecf20Sopenharmony_ci u8 opcode; 4578c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 4588c2ecf20Sopenharmony_ci u8 iff:4; 4598c2ecf20Sopenharmony_ci u8 ip_csum_dis:1; 4608c2ecf20Sopenharmony_ci u8 l4_csum_dis:1; 4618c2ecf20Sopenharmony_ci u8 vlan_valid:1; 4628c2ecf20Sopenharmony_ci u8 :1; 4638c2ecf20Sopenharmony_ci#else 4648c2ecf20Sopenharmony_ci u8 :1; 4658c2ecf20Sopenharmony_ci u8 vlan_valid:1; 4668c2ecf20Sopenharmony_ci u8 l4_csum_dis:1; 4678c2ecf20Sopenharmony_ci u8 ip_csum_dis:1; 4688c2ecf20Sopenharmony_ci u8 iff:4; 4698c2ecf20Sopenharmony_ci#endif 4708c2ecf20Sopenharmony_ci u16 vlan; 4718c2ecf20Sopenharmony_ci __be32 len; 4728c2ecf20Sopenharmony_ci 4738c2ecf20Sopenharmony_ci u8 rsvd[5]; 4748c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 4758c2ecf20Sopenharmony_ci u8 tcp_hdr_words:4; 4768c2ecf20Sopenharmony_ci u8 ip_hdr_words:4; 4778c2ecf20Sopenharmony_ci#else 4788c2ecf20Sopenharmony_ci u8 ip_hdr_words:4; 4798c2ecf20Sopenharmony_ci u8 tcp_hdr_words:4; 4808c2ecf20Sopenharmony_ci#endif 4818c2ecf20Sopenharmony_ci __be16 eth_type_mss; 4828c2ecf20Sopenharmony_ci}; 4838c2ecf20Sopenharmony_ci 4848c2ecf20Sopenharmony_cistruct cpl_rx_pkt { 4858c2ecf20Sopenharmony_ci u8 opcode; 4868c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 4878c2ecf20Sopenharmony_ci u8 iff:4; 4888c2ecf20Sopenharmony_ci u8 csum_valid:1; 4898c2ecf20Sopenharmony_ci u8 bad_pkt:1; 4908c2ecf20Sopenharmony_ci u8 vlan_valid:1; 4918c2ecf20Sopenharmony_ci u8 rsvd:1; 4928c2ecf20Sopenharmony_ci#else 4938c2ecf20Sopenharmony_ci u8 rsvd:1; 4948c2ecf20Sopenharmony_ci u8 vlan_valid:1; 4958c2ecf20Sopenharmony_ci u8 bad_pkt:1; 4968c2ecf20Sopenharmony_ci u8 csum_valid:1; 4978c2ecf20Sopenharmony_ci u8 iff:4; 4988c2ecf20Sopenharmony_ci#endif 4998c2ecf20Sopenharmony_ci u16 csum; 5008c2ecf20Sopenharmony_ci u16 vlan; 5018c2ecf20Sopenharmony_ci u16 len; 5028c2ecf20Sopenharmony_ci}; 5038c2ecf20Sopenharmony_ci 5048c2ecf20Sopenharmony_cistruct cpl_l2t_write_req { 5058c2ecf20Sopenharmony_ci union opcode_tid ot; 5068c2ecf20Sopenharmony_ci u32 params; 5078c2ecf20Sopenharmony_ci u8 rsvd1[2]; 5088c2ecf20Sopenharmony_ci u8 dst_mac[6]; 5098c2ecf20Sopenharmony_ci}; 5108c2ecf20Sopenharmony_ci 5118c2ecf20Sopenharmony_cistruct cpl_l2t_write_rpl { 5128c2ecf20Sopenharmony_ci union opcode_tid ot; 5138c2ecf20Sopenharmony_ci u8 status; 5148c2ecf20Sopenharmony_ci u8 rsvd[3]; 5158c2ecf20Sopenharmony_ci}; 5168c2ecf20Sopenharmony_ci 5178c2ecf20Sopenharmony_cistruct cpl_l2t_read_req { 5188c2ecf20Sopenharmony_ci union opcode_tid ot; 5198c2ecf20Sopenharmony_ci u8 rsvd[3]; 5208c2ecf20Sopenharmony_ci u8 l2t_idx; 5218c2ecf20Sopenharmony_ci}; 5228c2ecf20Sopenharmony_ci 5238c2ecf20Sopenharmony_cistruct cpl_l2t_read_rpl { 5248c2ecf20Sopenharmony_ci union opcode_tid ot; 5258c2ecf20Sopenharmony_ci u32 params; 5268c2ecf20Sopenharmony_ci u8 rsvd1[2]; 5278c2ecf20Sopenharmony_ci u8 dst_mac[6]; 5288c2ecf20Sopenharmony_ci}; 5298c2ecf20Sopenharmony_ci 5308c2ecf20Sopenharmony_cistruct cpl_smt_write_req { 5318c2ecf20Sopenharmony_ci union opcode_tid ot; 5328c2ecf20Sopenharmony_ci u8 rsvd0; 5338c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 5348c2ecf20Sopenharmony_ci u8 rsvd1:1; 5358c2ecf20Sopenharmony_ci u8 mtu_idx:3; 5368c2ecf20Sopenharmony_ci u8 iff:4; 5378c2ecf20Sopenharmony_ci#else 5388c2ecf20Sopenharmony_ci u8 iff:4; 5398c2ecf20Sopenharmony_ci u8 mtu_idx:3; 5408c2ecf20Sopenharmony_ci u8 rsvd1:1; 5418c2ecf20Sopenharmony_ci#endif 5428c2ecf20Sopenharmony_ci u16 rsvd2; 5438c2ecf20Sopenharmony_ci u16 rsvd3; 5448c2ecf20Sopenharmony_ci u8 src_mac1[6]; 5458c2ecf20Sopenharmony_ci u16 rsvd4; 5468c2ecf20Sopenharmony_ci u8 src_mac0[6]; 5478c2ecf20Sopenharmony_ci}; 5488c2ecf20Sopenharmony_ci 5498c2ecf20Sopenharmony_cistruct cpl_smt_write_rpl { 5508c2ecf20Sopenharmony_ci union opcode_tid ot; 5518c2ecf20Sopenharmony_ci u8 status; 5528c2ecf20Sopenharmony_ci u8 rsvd[3]; 5538c2ecf20Sopenharmony_ci}; 5548c2ecf20Sopenharmony_ci 5558c2ecf20Sopenharmony_cistruct cpl_smt_read_req { 5568c2ecf20Sopenharmony_ci union opcode_tid ot; 5578c2ecf20Sopenharmony_ci u8 rsvd0; 5588c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 5598c2ecf20Sopenharmony_ci u8 rsvd1:4; 5608c2ecf20Sopenharmony_ci u8 iff:4; 5618c2ecf20Sopenharmony_ci#else 5628c2ecf20Sopenharmony_ci u8 iff:4; 5638c2ecf20Sopenharmony_ci u8 rsvd1:4; 5648c2ecf20Sopenharmony_ci#endif 5658c2ecf20Sopenharmony_ci u16 rsvd2; 5668c2ecf20Sopenharmony_ci}; 5678c2ecf20Sopenharmony_ci 5688c2ecf20Sopenharmony_cistruct cpl_smt_read_rpl { 5698c2ecf20Sopenharmony_ci union opcode_tid ot; 5708c2ecf20Sopenharmony_ci u8 status; 5718c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 5728c2ecf20Sopenharmony_ci u8 rsvd1:1; 5738c2ecf20Sopenharmony_ci u8 mtu_idx:3; 5748c2ecf20Sopenharmony_ci u8 rsvd0:4; 5758c2ecf20Sopenharmony_ci#else 5768c2ecf20Sopenharmony_ci u8 rsvd0:4; 5778c2ecf20Sopenharmony_ci u8 mtu_idx:3; 5788c2ecf20Sopenharmony_ci u8 rsvd1:1; 5798c2ecf20Sopenharmony_ci#endif 5808c2ecf20Sopenharmony_ci u16 rsvd2; 5818c2ecf20Sopenharmony_ci u16 rsvd3; 5828c2ecf20Sopenharmony_ci u8 src_mac1[6]; 5838c2ecf20Sopenharmony_ci u16 rsvd4; 5848c2ecf20Sopenharmony_ci u8 src_mac0[6]; 5858c2ecf20Sopenharmony_ci}; 5868c2ecf20Sopenharmony_ci 5878c2ecf20Sopenharmony_cistruct cpl_rte_delete_req { 5888c2ecf20Sopenharmony_ci union opcode_tid ot; 5898c2ecf20Sopenharmony_ci u32 params; 5908c2ecf20Sopenharmony_ci}; 5918c2ecf20Sopenharmony_ci 5928c2ecf20Sopenharmony_cistruct cpl_rte_delete_rpl { 5938c2ecf20Sopenharmony_ci union opcode_tid ot; 5948c2ecf20Sopenharmony_ci u8 status; 5958c2ecf20Sopenharmony_ci u8 rsvd[3]; 5968c2ecf20Sopenharmony_ci}; 5978c2ecf20Sopenharmony_ci 5988c2ecf20Sopenharmony_cistruct cpl_rte_write_req { 5998c2ecf20Sopenharmony_ci union opcode_tid ot; 6008c2ecf20Sopenharmony_ci u32 params; 6018c2ecf20Sopenharmony_ci u32 netmask; 6028c2ecf20Sopenharmony_ci u32 faddr; 6038c2ecf20Sopenharmony_ci}; 6048c2ecf20Sopenharmony_ci 6058c2ecf20Sopenharmony_cistruct cpl_rte_write_rpl { 6068c2ecf20Sopenharmony_ci union opcode_tid ot; 6078c2ecf20Sopenharmony_ci u8 status; 6088c2ecf20Sopenharmony_ci u8 rsvd[3]; 6098c2ecf20Sopenharmony_ci}; 6108c2ecf20Sopenharmony_ci 6118c2ecf20Sopenharmony_cistruct cpl_rte_read_req { 6128c2ecf20Sopenharmony_ci union opcode_tid ot; 6138c2ecf20Sopenharmony_ci u32 params; 6148c2ecf20Sopenharmony_ci}; 6158c2ecf20Sopenharmony_ci 6168c2ecf20Sopenharmony_cistruct cpl_rte_read_rpl { 6178c2ecf20Sopenharmony_ci union opcode_tid ot; 6188c2ecf20Sopenharmony_ci u8 status; 6198c2ecf20Sopenharmony_ci u8 rsvd0[2]; 6208c2ecf20Sopenharmony_ci u8 l2t_idx; 6218c2ecf20Sopenharmony_ci#if defined(__LITTLE_ENDIAN_BITFIELD) 6228c2ecf20Sopenharmony_ci u8 rsvd1:7; 6238c2ecf20Sopenharmony_ci u8 select:1; 6248c2ecf20Sopenharmony_ci#else 6258c2ecf20Sopenharmony_ci u8 select:1; 6268c2ecf20Sopenharmony_ci u8 rsvd1:7; 6278c2ecf20Sopenharmony_ci#endif 6288c2ecf20Sopenharmony_ci u8 rsvd2[3]; 6298c2ecf20Sopenharmony_ci u32 addr; 6308c2ecf20Sopenharmony_ci}; 6318c2ecf20Sopenharmony_ci 6328c2ecf20Sopenharmony_cistruct cpl_mss_change { 6338c2ecf20Sopenharmony_ci union opcode_tid ot; 6348c2ecf20Sopenharmony_ci u32 mss; 6358c2ecf20Sopenharmony_ci}; 6368c2ecf20Sopenharmony_ci 6378c2ecf20Sopenharmony_ci#endif /* _CXGB_CPL5_CMD_H_ */ 6388c2ecf20Sopenharmony_ci 639