156b2bdd1SGireesh Nagabhushana /*
256b2bdd1SGireesh Nagabhushana  * This file and its contents are supplied under the terms of the
356b2bdd1SGireesh Nagabhushana  * Common Development and Distribution License ("CDDL"), version 1.0.
456b2bdd1SGireesh Nagabhushana  * You may only use this file in accordance with the terms of version
556b2bdd1SGireesh Nagabhushana  * 1.0 of the CDDL.
656b2bdd1SGireesh Nagabhushana  *
756b2bdd1SGireesh Nagabhushana  * A full copy of the text of the CDDL should have accompanied this
856b2bdd1SGireesh Nagabhushana  * source. A copy of the CDDL is also available via the Internet at
956b2bdd1SGireesh Nagabhushana  * http://www.illumos.org/license/CDDL.
1056b2bdd1SGireesh Nagabhushana  */
1156b2bdd1SGireesh Nagabhushana 
1256b2bdd1SGireesh Nagabhushana /*
133dde7c95SVishal Kulkarni  * Definitions of T4/T5/T6 work request and CPL5 commands and status codes
1456b2bdd1SGireesh Nagabhushana  *
157e6ad469SVishal Kulkarni  * Copyright (C) 2008-2019 Chelsio Communications.  All rights reserved.
1656b2bdd1SGireesh Nagabhushana  *
1756b2bdd1SGireesh Nagabhushana  * Written by Dimitris Michailidis (dm@chelsio.com)
1856b2bdd1SGireesh Nagabhushana  *
1956b2bdd1SGireesh Nagabhushana  * This program is distributed in the hope that it will be useful, but WITHOUT
2056b2bdd1SGireesh Nagabhushana  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2156b2bdd1SGireesh Nagabhushana  * FITNESS FOR A PARTICULAR PURPOSE.  See the LICENSE file included in this
2256b2bdd1SGireesh Nagabhushana  * release for licensing terms and conditions.
2356b2bdd1SGireesh Nagabhushana  */
2456b2bdd1SGireesh Nagabhushana 
253dde7c95SVishal Kulkarni #ifndef T4_MSG_H
263dde7c95SVishal Kulkarni #define T4_MSG_H
273dde7c95SVishal Kulkarni 
283dde7c95SVishal Kulkarni #if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD)
293dde7c95SVishal Kulkarni # include <asm/byteorder.h>
303dde7c95SVishal Kulkarni #endif
3156b2bdd1SGireesh Nagabhushana 
3256b2bdd1SGireesh Nagabhushana enum {
333dde7c95SVishal Kulkarni 	CPL_PASS_OPEN_REQ     = 0x1,
343dde7c95SVishal Kulkarni 	CPL_PASS_ACCEPT_RPL   = 0x2,
353dde7c95SVishal Kulkarni 	CPL_ACT_OPEN_REQ      = 0x3,
363dde7c95SVishal Kulkarni 	CPL_SET_TCB           = 0x4,
373dde7c95SVishal Kulkarni 	CPL_SET_TCB_FIELD     = 0x5,
383dde7c95SVishal Kulkarni 	CPL_GET_TCB           = 0x6,
393dde7c95SVishal Kulkarni 	CPL_CLOSE_CON_REQ     = 0x8,
403dde7c95SVishal Kulkarni 	CPL_CLOSE_LISTSRV_REQ = 0x9,
413dde7c95SVishal Kulkarni 	CPL_ABORT_REQ         = 0xA,
423dde7c95SVishal Kulkarni 	CPL_ABORT_RPL         = 0xB,
433dde7c95SVishal Kulkarni 	CPL_TX_DATA           = 0xC,
443dde7c95SVishal Kulkarni 	CPL_RX_DATA_ACK       = 0xD,
453dde7c95SVishal Kulkarni 	CPL_TX_PKT            = 0xE,
463dde7c95SVishal Kulkarni 	CPL_RTE_DELETE_REQ    = 0xF,
473dde7c95SVishal Kulkarni 	CPL_RTE_WRITE_REQ     = 0x10,
483dde7c95SVishal Kulkarni 	CPL_RTE_READ_REQ      = 0x11,
493dde7c95SVishal Kulkarni 	CPL_L2T_WRITE_REQ     = 0x12,
503dde7c95SVishal Kulkarni 	CPL_L2T_READ_REQ      = 0x13,
513dde7c95SVishal Kulkarni 	CPL_SMT_WRITE_REQ     = 0x14,
523dde7c95SVishal Kulkarni 	CPL_SMT_READ_REQ      = 0x15,
533dde7c95SVishal Kulkarni 	CPL_TAG_WRITE_REQ     = 0x16,
543dde7c95SVishal Kulkarni 	CPL_BARRIER           = 0x18,
553dde7c95SVishal Kulkarni 	CPL_TID_RELEASE       = 0x1A,
563dde7c95SVishal Kulkarni 	CPL_TAG_READ_REQ      = 0x1B,
573dde7c95SVishal Kulkarni 	CPL_SRQ_TABLE_REQ     = 0x1C,
583dde7c95SVishal Kulkarni 	CPL_TX_PKT_FSO        = 0x1E,
593dde7c95SVishal Kulkarni 	CPL_TX_DATA_ISO       = 0x1F,
603dde7c95SVishal Kulkarni 
613dde7c95SVishal Kulkarni 	CPL_CLOSE_LISTSRV_RPL = 0x20,
623dde7c95SVishal Kulkarni 	CPL_ERROR             = 0x21,
633dde7c95SVishal Kulkarni 	CPL_GET_TCB_RPL       = 0x22,
643dde7c95SVishal Kulkarni 	CPL_L2T_WRITE_RPL     = 0x23,
653dde7c95SVishal Kulkarni 	CPL_PASS_OPEN_RPL     = 0x24,
663dde7c95SVishal Kulkarni 	CPL_ACT_OPEN_RPL      = 0x25,
673dde7c95SVishal Kulkarni 	CPL_PEER_CLOSE        = 0x26,
683dde7c95SVishal Kulkarni 	CPL_RTE_DELETE_RPL    = 0x27,
693dde7c95SVishal Kulkarni 	CPL_RTE_WRITE_RPL     = 0x28,
703dde7c95SVishal Kulkarni 	CPL_RX_URG_PKT        = 0x29,
713dde7c95SVishal Kulkarni 	CPL_TAG_WRITE_RPL     = 0x2A,
723dde7c95SVishal Kulkarni 	CPL_ABORT_REQ_RSS     = 0x2B,
733dde7c95SVishal Kulkarni 	CPL_RX_URG_NOTIFY     = 0x2C,
743dde7c95SVishal Kulkarni 	CPL_ABORT_RPL_RSS     = 0x2D,
753dde7c95SVishal Kulkarni 	CPL_SMT_WRITE_RPL     = 0x2E,
763dde7c95SVishal Kulkarni 	CPL_TX_DATA_ACK       = 0x2F,
773dde7c95SVishal Kulkarni 
783dde7c95SVishal Kulkarni 	CPL_RX_PHYS_ADDR      = 0x30,
793dde7c95SVishal Kulkarni 	CPL_PCMD_READ_RPL     = 0x31,
803dde7c95SVishal Kulkarni 	CPL_CLOSE_CON_RPL     = 0x32,
813dde7c95SVishal Kulkarni 	CPL_ISCSI_HDR         = 0x33,
823dde7c95SVishal Kulkarni 	CPL_L2T_READ_RPL      = 0x34,
833dde7c95SVishal Kulkarni 	CPL_RDMA_CQE          = 0x35,
843dde7c95SVishal Kulkarni 	CPL_RDMA_CQE_READ_RSP = 0x36,
853dde7c95SVishal Kulkarni 	CPL_RDMA_CQE_ERR      = 0x37,
863dde7c95SVishal Kulkarni 	CPL_RTE_READ_RPL      = 0x38,
873dde7c95SVishal Kulkarni 	CPL_RX_DATA           = 0x39,
883dde7c95SVishal Kulkarni 	CPL_SET_TCB_RPL       = 0x3A,
893dde7c95SVishal Kulkarni 	CPL_RX_PKT            = 0x3B,
903dde7c95SVishal Kulkarni 	CPL_TAG_READ_RPL      = 0x3C,
913dde7c95SVishal Kulkarni 	CPL_HIT_NOTIFY        = 0x3D,
923dde7c95SVishal Kulkarni 	CPL_PKT_NOTIFY        = 0x3E,
933dde7c95SVishal Kulkarni 	CPL_RX_DDP_COMPLETE   = 0x3F,
943dde7c95SVishal Kulkarni 
953dde7c95SVishal Kulkarni 	CPL_ACT_ESTABLISH     = 0x40,
963dde7c95SVishal Kulkarni 	CPL_PASS_ESTABLISH    = 0x41,
973dde7c95SVishal Kulkarni 	CPL_RX_DATA_DDP       = 0x42,
983dde7c95SVishal Kulkarni 	CPL_SMT_READ_RPL      = 0x43,
993dde7c95SVishal Kulkarni 	CPL_PASS_ACCEPT_REQ   = 0x44,
1003dde7c95SVishal Kulkarni 	CPL_RX_ISCSI_CMP      = 0x45,
1013dde7c95SVishal Kulkarni 	CPL_RX_FCOE_DDP       = 0x46,
1023dde7c95SVishal Kulkarni 	CPL_FCOE_HDR          = 0x47,
1033dde7c95SVishal Kulkarni 	CPL_T5_TRACE_PKT      = 0x48,
1043dde7c95SVishal Kulkarni 	CPL_RX_ISCSI_DDP      = 0x49,
1053dde7c95SVishal Kulkarni 	CPL_RX_FCOE_DIF       = 0x4A,
1063dde7c95SVishal Kulkarni 	CPL_RX_DATA_DIF       = 0x4B,
1073dde7c95SVishal Kulkarni 	CPL_ERR_NOTIFY	      = 0x4D,
1083dde7c95SVishal Kulkarni 	CPL_RX_TLS_CMP        = 0x4E,
1093dde7c95SVishal Kulkarni 
1103dde7c95SVishal Kulkarni 	CPL_RDMA_READ_REQ     = 0x60,
1113dde7c95SVishal Kulkarni 	CPL_RX_ISCSI_DIF      = 0x60,
1123dde7c95SVishal Kulkarni 
1133dde7c95SVishal Kulkarni 	CPL_SET_LE_REQ        = 0x80,
1143dde7c95SVishal Kulkarni 	CPL_PASS_OPEN_REQ6    = 0x81,
1153dde7c95SVishal Kulkarni 	CPL_ACT_OPEN_REQ6     = 0x83,
1163dde7c95SVishal Kulkarni 	CPL_TX_TLS_PDU        = 0x88,
1173dde7c95SVishal Kulkarni 	CPL_TX_TLS_SFO        = 0x89,
1183dde7c95SVishal Kulkarni 
1193dde7c95SVishal Kulkarni 	CPL_TX_SEC_PDU        = 0x8A,
1203dde7c95SVishal Kulkarni 	CPL_TX_TLS_ACK        = 0x8B,
1213dde7c95SVishal Kulkarni 
1223dde7c95SVishal Kulkarni 	CPL_RDMA_TERMINATE    = 0xA2,
1233dde7c95SVishal Kulkarni 	CPL_RDMA_WRITE        = 0xA4,
1243dde7c95SVishal Kulkarni 	CPL_SGE_EGR_UPDATE    = 0xA5,
1253dde7c95SVishal Kulkarni 	CPL_SET_LE_RPL        = 0xA6,
1263dde7c95SVishal Kulkarni 	CPL_FW2_MSG           = 0xA7,
1273dde7c95SVishal Kulkarni 	CPL_FW2_PLD           = 0xA8,
1283dde7c95SVishal Kulkarni 	CPL_T5_RDMA_READ_REQ  = 0xA9,
1293dde7c95SVishal Kulkarni 	CPL_RDMA_ATOMIC_REQ   = 0xAA,
1303dde7c95SVishal Kulkarni 	CPL_RDMA_ATOMIC_RPL   = 0xAB,
1313dde7c95SVishal Kulkarni 	CPL_RDMA_IMM_DATA     = 0xAC,
1323dde7c95SVishal Kulkarni 	CPL_RDMA_IMM_DATA_SE  = 0xAD,
1333dde7c95SVishal Kulkarni 	CPL_RX_MPS_PKT        = 0xAF,
1343dde7c95SVishal Kulkarni 
1353dde7c95SVishal Kulkarni 	CPL_TRACE_PKT         = 0xB0,
1363dde7c95SVishal Kulkarni 	CPL_RX2TX_DATA        = 0xB1,
1373dde7c95SVishal Kulkarni 	CPL_TLS_DATA          = 0xB1,
1383dde7c95SVishal Kulkarni 	CPL_ISCSI_DATA        = 0xB2,
1393dde7c95SVishal Kulkarni 	CPL_FCOE_DATA         = 0xB3,
1403dde7c95SVishal Kulkarni 
1413dde7c95SVishal Kulkarni 	CPL_FW4_MSG           = 0xC0,
1423dde7c95SVishal Kulkarni 	CPL_FW4_PLD           = 0xC1,
1433dde7c95SVishal Kulkarni 	CPL_FW4_ACK           = 0xC3,
1443dde7c95SVishal Kulkarni 	CPL_SRQ_TABLE_RPL     = 0xCC,
1453dde7c95SVishal Kulkarni 	CPL_RX_PHYS_DSGL      = 0xD0,
1463dde7c95SVishal Kulkarni 
1473dde7c95SVishal Kulkarni 	CPL_FW6_MSG           = 0xE0,
1483dde7c95SVishal Kulkarni 	CPL_FW6_PLD           = 0xE1,
1493dde7c95SVishal Kulkarni 	CPL_TX_TNL_LSO        = 0xEC,
1503dde7c95SVishal Kulkarni 	CPL_TX_PKT_LSO        = 0xED,
1513dde7c95SVishal Kulkarni 	CPL_TX_PKT_XT         = 0xEE,
1523dde7c95SVishal Kulkarni 
1533dde7c95SVishal Kulkarni 	NUM_CPL_CMDS    /* must be last and previous entries must be sorted */
15456b2bdd1SGireesh Nagabhushana };
15556b2bdd1SGireesh Nagabhushana 
15656b2bdd1SGireesh Nagabhushana enum CPL_error {
1573dde7c95SVishal Kulkarni 	CPL_ERR_NONE               = 0,
1583dde7c95SVishal Kulkarni 	CPL_ERR_TCAM_PARITY        = 1,
1593dde7c95SVishal Kulkarni 	CPL_ERR_TCAM_MISS          = 2,
1603dde7c95SVishal Kulkarni 	CPL_ERR_TCAM_FULL          = 3,
1613dde7c95SVishal Kulkarni 	CPL_ERR_BAD_LENGTH         = 15,
1623dde7c95SVishal Kulkarni 	CPL_ERR_BAD_ROUTE          = 18,
1633dde7c95SVishal Kulkarni 	CPL_ERR_CONN_RESET         = 20,
16456b2bdd1SGireesh Nagabhushana 	CPL_ERR_CONN_EXIST_SYNRECV = 21,
1653dde7c95SVishal Kulkarni 	CPL_ERR_CONN_EXIST         = 22,
1663dde7c95SVishal Kulkarni 	CPL_ERR_ARP_MISS           = 23,
1673dde7c95SVishal Kulkarni 	CPL_ERR_BAD_SYN            = 24,
1683dde7c95SVishal Kulkarni 	CPL_ERR_CONN_TIMEDOUT      = 30,
1693dde7c95SVishal Kulkarni 	CPL_ERR_XMIT_TIMEDOUT      = 31,
17056b2bdd1SGireesh Nagabhushana 	CPL_ERR_PERSIST_TIMEDOUT   = 32,
17156b2bdd1SGireesh Nagabhushana 	CPL_ERR_FINWAIT2_TIMEDOUT  = 33,
17256b2bdd1SGireesh Nagabhushana 	CPL_ERR_KEEPALIVE_TIMEDOUT = 34,
1733dde7c95SVishal Kulkarni 	CPL_ERR_RTX_NEG_ADVICE     = 35,
17456b2bdd1SGireesh Nagabhushana 	CPL_ERR_PERSIST_NEG_ADVICE = 36,
17556b2bdd1SGireesh Nagabhushana 	CPL_ERR_KEEPALV_NEG_ADVICE = 37,
1763dde7c95SVishal Kulkarni 	CPL_ERR_WAIT_ARP_RPL       = 41,
1773dde7c95SVishal Kulkarni 	CPL_ERR_ABORT_FAILED       = 42,
1783dde7c95SVishal Kulkarni 	CPL_ERR_IWARP_FLM          = 50,
1793dde7c95SVishal Kulkarni 	CPL_CONTAINS_READ_RPL      = 60,
1803dde7c95SVishal Kulkarni 	CPL_CONTAINS_WRITE_RPL     = 61,
18156b2bdd1SGireesh Nagabhushana };
18256b2bdd1SGireesh Nagabhushana 
1833dde7c95SVishal Kulkarni /*
1843dde7c95SVishal Kulkarni  * Some of the error codes above implicitly indicate that there is no TID
1853dde7c95SVishal Kulkarni  * allocated with the result of an ACT_OPEN.  We use this predicate to make
1863dde7c95SVishal Kulkarni  * that explicit.
1873dde7c95SVishal Kulkarni  */
act_open_has_tid(int status)1883dde7c95SVishal Kulkarni static inline int act_open_has_tid(int status)
1893dde7c95SVishal Kulkarni {
1903dde7c95SVishal Kulkarni 	return (status != CPL_ERR_TCAM_PARITY &&
1913dde7c95SVishal Kulkarni 		status != CPL_ERR_TCAM_MISS &&
1923dde7c95SVishal Kulkarni 		status != CPL_ERR_TCAM_FULL &&
1933dde7c95SVishal Kulkarni 		status != CPL_ERR_CONN_EXIST_SYNRECV &&
1943dde7c95SVishal Kulkarni 		status != CPL_ERR_CONN_EXIST);
1953dde7c95SVishal Kulkarni }
1963dde7c95SVishal Kulkarni 
19756b2bdd1SGireesh Nagabhushana enum {
19856b2bdd1SGireesh Nagabhushana 	CPL_CONN_POLICY_AUTO = 0,
19956b2bdd1SGireesh Nagabhushana 	CPL_CONN_POLICY_ASK  = 1,
20056b2bdd1SGireesh Nagabhushana 	CPL_CONN_POLICY_FILTER = 2,
20156b2bdd1SGireesh Nagabhushana 	CPL_CONN_POLICY_DENY = 3
20256b2bdd1SGireesh Nagabhushana };
20356b2bdd1SGireesh Nagabhushana 
20456b2bdd1SGireesh Nagabhushana enum {
2053dde7c95SVishal Kulkarni 	ULP_MODE_NONE          = 0,
2063dde7c95SVishal Kulkarni 	ULP_MODE_ISCSI         = 2,
2073dde7c95SVishal Kulkarni 	ULP_MODE_RDMA          = 4,
2083dde7c95SVishal Kulkarni 	ULP_MODE_TCPDDP        = 5,
2093dde7c95SVishal Kulkarni 	ULP_MODE_FCOE          = 6,
2103dde7c95SVishal Kulkarni 	ULP_MODE_TLS           = 8,
21156b2bdd1SGireesh Nagabhushana };
21256b2bdd1SGireesh Nagabhushana 
21356b2bdd1SGireesh Nagabhushana enum {
21456b2bdd1SGireesh Nagabhushana 	ULP_CRC_HEADER = 1 << 0,
21556b2bdd1SGireesh Nagabhushana 	ULP_CRC_DATA   = 1 << 1
21656b2bdd1SGireesh Nagabhushana };
21756b2bdd1SGireesh Nagabhushana 
21856b2bdd1SGireesh Nagabhushana enum {
21956b2bdd1SGireesh Nagabhushana 	CPL_PASS_OPEN_ACCEPT,
22056b2bdd1SGireesh Nagabhushana 	CPL_PASS_OPEN_REJECT,
22156b2bdd1SGireesh Nagabhushana 	CPL_PASS_OPEN_ACCEPT_TNL
22256b2bdd1SGireesh Nagabhushana };
22356b2bdd1SGireesh Nagabhushana 
22456b2bdd1SGireesh Nagabhushana enum {
22556b2bdd1SGireesh Nagabhushana 	CPL_ABORT_SEND_RST = 0,
22656b2bdd1SGireesh Nagabhushana 	CPL_ABORT_NO_RST,
22756b2bdd1SGireesh Nagabhushana };
22856b2bdd1SGireesh Nagabhushana 
2293dde7c95SVishal Kulkarni enum {                     /* TX_PKT_XT checksum types */
2303dde7c95SVishal Kulkarni 	TX_CSUM_TCP    = 0,
2313dde7c95SVishal Kulkarni 	TX_CSUM_UDP    = 1,
2323dde7c95SVishal Kulkarni 	TX_CSUM_CRC16  = 4,
2333dde7c95SVishal Kulkarni 	TX_CSUM_CRC32  = 5,
2343dde7c95SVishal Kulkarni 	TX_CSUM_CRC32C = 6,
2353dde7c95SVishal Kulkarni 	TX_CSUM_FCOE   = 7,
2363dde7c95SVishal Kulkarni 	TX_CSUM_TCPIP  = 8,
2373dde7c95SVishal Kulkarni 	TX_CSUM_UDPIP  = 9,
2383dde7c95SVishal Kulkarni 	TX_CSUM_TCPIP6 = 10,
2393dde7c95SVishal Kulkarni 	TX_CSUM_UDPIP6 = 11,
2403dde7c95SVishal Kulkarni 	TX_CSUM_IP     = 12,
24156b2bdd1SGireesh Nagabhushana };
24256b2bdd1SGireesh Nagabhushana 
2433dde7c95SVishal Kulkarni enum {                     /* packet type in CPL_RX_PKT */
24456b2bdd1SGireesh Nagabhushana 	PKTYPE_XACT_UCAST = 0,
24556b2bdd1SGireesh Nagabhushana 	PKTYPE_HASH_UCAST = 1,
24656b2bdd1SGireesh Nagabhushana 	PKTYPE_XACT_MCAST = 2,
24756b2bdd1SGireesh Nagabhushana 	PKTYPE_HASH_MCAST = 3,
2483dde7c95SVishal Kulkarni 	PKTYPE_PROMISC    = 4,
2493dde7c95SVishal Kulkarni 	PKTYPE_HPROMISC   = 5,
2503dde7c95SVishal Kulkarni 	PKTYPE_BCAST      = 6
25156b2bdd1SGireesh Nagabhushana };
25256b2bdd1SGireesh Nagabhushana 
2533dde7c95SVishal Kulkarni enum {                     /* DMAC type in CPL_RX_PKT */
25456b2bdd1SGireesh Nagabhushana 	DATYPE_UCAST,
25556b2bdd1SGireesh Nagabhushana 	DATYPE_MCAST,
25656b2bdd1SGireesh Nagabhushana 	DATYPE_BCAST
25756b2bdd1SGireesh Nagabhushana };
25856b2bdd1SGireesh Nagabhushana 
2593dde7c95SVishal Kulkarni enum {                     /* TCP congestion control algorithms */
26056b2bdd1SGireesh Nagabhushana 	CONG_ALG_RENO,
26156b2bdd1SGireesh Nagabhushana 	CONG_ALG_TAHOE,
26256b2bdd1SGireesh Nagabhushana 	CONG_ALG_NEWRENO,
26356b2bdd1SGireesh Nagabhushana 	CONG_ALG_HIGHSPEED
26456b2bdd1SGireesh Nagabhushana };
26556b2bdd1SGireesh Nagabhushana 
2663dde7c95SVishal Kulkarni enum {                     /* RSS hash type */
26756b2bdd1SGireesh Nagabhushana 	RSS_HASH_NONE = 0, /* no hash computed */
26856b2bdd1SGireesh Nagabhushana 	RSS_HASH_IP   = 1, /* IP or IPv6 2-tuple hash */
26956b2bdd1SGireesh Nagabhushana 	RSS_HASH_TCP  = 2, /* TCP 4-tuple hash */
27056b2bdd1SGireesh Nagabhushana 	RSS_HASH_UDP  = 3  /* UDP 4-tuple hash */
27156b2bdd1SGireesh Nagabhushana };
27256b2bdd1SGireesh Nagabhushana 
2733dde7c95SVishal Kulkarni enum {                     /* LE commands */
27456b2bdd1SGireesh Nagabhushana 	LE_CMD_READ  = 0x4,
27556b2bdd1SGireesh Nagabhushana 	LE_CMD_WRITE = 0xb
27656b2bdd1SGireesh Nagabhushana };
27756b2bdd1SGireesh Nagabhushana 
2783dde7c95SVishal Kulkarni enum {                     /* LE request size */
27956b2bdd1SGireesh Nagabhushana 	LE_SZ_NONE = 0,
28056b2bdd1SGireesh Nagabhushana 	LE_SZ_33   = 1,
28156b2bdd1SGireesh Nagabhushana 	LE_SZ_66   = 2,
28256b2bdd1SGireesh Nagabhushana 	LE_SZ_132  = 3,
28356b2bdd1SGireesh Nagabhushana 	LE_SZ_264  = 4,
28456b2bdd1SGireesh Nagabhushana 	LE_SZ_528  = 5
28556b2bdd1SGireesh Nagabhushana };
28656b2bdd1SGireesh Nagabhushana 
28756b2bdd1SGireesh Nagabhushana union opcode_tid {
28856b2bdd1SGireesh Nagabhushana 	__be32 opcode_tid;
28956b2bdd1SGireesh Nagabhushana 	__u8 opcode;
29056b2bdd1SGireesh Nagabhushana };
29156b2bdd1SGireesh Nagabhushana 
2923dde7c95SVishal Kulkarni #define S_CPL_OPCODE    24
2933dde7c95SVishal Kulkarni #define V_CPL_OPCODE(x) ((x) << S_CPL_OPCODE)
2943dde7c95SVishal Kulkarni #define G_CPL_OPCODE(x) (((x) >> S_CPL_OPCODE) & 0xFF)
2953dde7c95SVishal Kulkarni #define G_TID(x)    ((x) & 0xFFFFFF)
29656b2bdd1SGireesh Nagabhushana 
29756b2bdd1SGireesh Nagabhushana /* tid is assumed to be 24-bits */
2983dde7c95SVishal Kulkarni #define MK_OPCODE_TID(opcode, tid) (V_CPL_OPCODE(opcode) | (tid))
29956b2bdd1SGireesh Nagabhushana 
3003dde7c95SVishal Kulkarni #define OPCODE_TID(cmd) ((cmd)->ot.opcode_tid)
30156b2bdd1SGireesh Nagabhushana 
30256b2bdd1SGireesh Nagabhushana /* extract the TID from a CPL command */
3033dde7c95SVishal Kulkarni #define GET_TID(cmd) (G_TID(be32_to_cpu(OPCODE_TID(cmd))))
30456b2bdd1SGireesh Nagabhushana 
30556b2bdd1SGireesh Nagabhushana /* partitioning of TID fields that also carry a queue id */
3063dde7c95SVishal Kulkarni #define S_TID_TID    0
3073dde7c95SVishal Kulkarni #define M_TID_TID    0x3fff
3083dde7c95SVishal Kulkarni #define V_TID_TID(x) ((x) << S_TID_TID)
3093dde7c95SVishal Kulkarni #define G_TID_TID(x) (((x) >> S_TID_TID) & M_TID_TID)
31056b2bdd1SGireesh Nagabhushana 
3113dde7c95SVishal Kulkarni #define S_TID_QID    14
3123dde7c95SVishal Kulkarni #define M_TID_QID    0x3ff
3133dde7c95SVishal Kulkarni #define V_TID_QID(x) ((x) << S_TID_QID)
3143dde7c95SVishal Kulkarni #define G_TID_QID(x) (((x) >> S_TID_QID) & M_TID_QID)
31556b2bdd1SGireesh Nagabhushana 
31656b2bdd1SGireesh Nagabhushana union opcode_info {
31756b2bdd1SGireesh Nagabhushana 	__be64 opcode_info;
31856b2bdd1SGireesh Nagabhushana 	__u8 opcode;
31956b2bdd1SGireesh Nagabhushana };
32056b2bdd1SGireesh Nagabhushana 
32156b2bdd1SGireesh Nagabhushana struct tcp_options {
32256b2bdd1SGireesh Nagabhushana 	__be16 mss;
32356b2bdd1SGireesh Nagabhushana 	__u8 wsf;
32456b2bdd1SGireesh Nagabhushana #if defined(__LITTLE_ENDIAN_BITFIELD)
32556b2bdd1SGireesh Nagabhushana 	__u8 :4;
32656b2bdd1SGireesh Nagabhushana 	__u8 unknown:1;
327de483253SVishal Kulkarni 	__u8 ecn:1;
32856b2bdd1SGireesh Nagabhushana 	__u8 sack:1;
32956b2bdd1SGireesh Nagabhushana 	__u8 tstamp:1;
33056b2bdd1SGireesh Nagabhushana #else
33156b2bdd1SGireesh Nagabhushana 	__u8 tstamp:1;
33256b2bdd1SGireesh Nagabhushana 	__u8 sack:1;
333de483253SVishal Kulkarni 	__u8 ecn:1;
33456b2bdd1SGireesh Nagabhushana 	__u8 unknown:1;
33556b2bdd1SGireesh Nagabhushana 	__u8 :4;
33656b2bdd1SGireesh Nagabhushana #endif
33756b2bdd1SGireesh Nagabhushana };
33856b2bdd1SGireesh Nagabhushana 
33956b2bdd1SGireesh Nagabhushana struct rss_header {
34056b2bdd1SGireesh Nagabhushana 	__u8 opcode;
34156b2bdd1SGireesh Nagabhushana #if defined(__LITTLE_ENDIAN_BITFIELD)
34256b2bdd1SGireesh Nagabhushana 	__u8 channel:2;
34356b2bdd1SGireesh Nagabhushana 	__u8 filter_hit:1;
34456b2bdd1SGireesh Nagabhushana 	__u8 filter_tid:1;
34556b2bdd1SGireesh Nagabhushana 	__u8 hash_type:2;
34656b2bdd1SGireesh Nagabhushana 	__u8 ipv6:1;
34756b2bdd1SGireesh Nagabhushana 	__u8 send2fw:1;
34856b2bdd1SGireesh Nagabhushana #else
34956b2bdd1SGireesh Nagabhushana 	__u8 send2fw:1;
35056b2bdd1SGireesh Nagabhushana 	__u8 ipv6:1;
35156b2bdd1SGireesh Nagabhushana 	__u8 hash_type:2;
35256b2bdd1SGireesh Nagabhushana 	__u8 filter_tid:1;
35356b2bdd1SGireesh Nagabhushana 	__u8 filter_hit:1;
35456b2bdd1SGireesh Nagabhushana 	__u8 channel:2;
35556b2bdd1SGireesh Nagabhushana #endif
35656b2bdd1SGireesh Nagabhushana 	__be16 qid;
35756b2bdd1SGireesh Nagabhushana 	__be32 hash_val;
35856b2bdd1SGireesh Nagabhushana };
35956b2bdd1SGireesh Nagabhushana 
3603dde7c95SVishal Kulkarni #define S_HASHTYPE 20
3613dde7c95SVishal Kulkarni #define M_HASHTYPE 0x3
3623dde7c95SVishal Kulkarni #define G_HASHTYPE(x) (((x) >> S_HASHTYPE) & M_HASHTYPE)
36356b2bdd1SGireesh Nagabhushana 
3643dde7c95SVishal Kulkarni #define S_QNUM 0
3653dde7c95SVishal Kulkarni #define M_QNUM 0xFFFF
3663dde7c95SVishal Kulkarni #define G_QNUM(x) (((x) >> S_QNUM) & M_QNUM)
3673dde7c95SVishal Kulkarni 
3683dde7c95SVishal Kulkarni #if defined(RSS_HDR_VLD) || defined(CHELSIO_FW)
3693dde7c95SVishal Kulkarni # define RSS_HDR struct rss_header rss_hdr;
3703dde7c95SVishal Kulkarni #else
3713dde7c95SVishal Kulkarni # define RSS_HDR
3723dde7c95SVishal Kulkarni #endif
37356b2bdd1SGireesh Nagabhushana 
37456b2bdd1SGireesh Nagabhushana #ifndef CHELSIO_FW
37556b2bdd1SGireesh Nagabhushana struct work_request_hdr {
37656b2bdd1SGireesh Nagabhushana 	__be32 wr_hi;
37756b2bdd1SGireesh Nagabhushana 	__be32 wr_mid;
37856b2bdd1SGireesh Nagabhushana 	__be64 wr_lo;
37956b2bdd1SGireesh Nagabhushana };
38056b2bdd1SGireesh Nagabhushana 
38156b2bdd1SGireesh Nagabhushana /* wr_mid fields */
3823dde7c95SVishal Kulkarni #define S_WR_LEN16    0
3833dde7c95SVishal Kulkarni #define M_WR_LEN16    0xFF
3843dde7c95SVishal Kulkarni #define V_WR_LEN16(x) ((x) << S_WR_LEN16)
3853dde7c95SVishal Kulkarni #define G_WR_LEN16(x) (((x) >> S_WR_LEN16) & M_WR_LEN16)
38656b2bdd1SGireesh Nagabhushana 
38756b2bdd1SGireesh Nagabhushana /* wr_hi fields */
3883dde7c95SVishal Kulkarni #define S_WR_OP    24
3893dde7c95SVishal Kulkarni #define M_WR_OP    0xFF
3903dde7c95SVishal Kulkarni #define V_WR_OP(x) ((__u64)(x) << S_WR_OP)
3913dde7c95SVishal Kulkarni #define G_WR_OP(x) (((x) >> S_WR_OP) & M_WR_OP)
3923dde7c95SVishal Kulkarni 
3933dde7c95SVishal Kulkarni # define WR_HDR struct work_request_hdr wr
3943dde7c95SVishal Kulkarni # define WR_HDR_SIZE sizeof(struct work_request_hdr)
39556b2bdd1SGireesh Nagabhushana #else
3963dde7c95SVishal Kulkarni # define WR_HDR
3973dde7c95SVishal Kulkarni # define WR_HDR_SIZE 0
39856b2bdd1SGireesh Nagabhushana #endif
39956b2bdd1SGireesh Nagabhushana 
40056b2bdd1SGireesh Nagabhushana /* option 0 fields */
4013dde7c95SVishal Kulkarni #define S_ACCEPT_MODE    0
4023dde7c95SVishal Kulkarni #define M_ACCEPT_MODE    0x3
4033dde7c95SVishal Kulkarni #define V_ACCEPT_MODE(x) ((x) << S_ACCEPT_MODE)
4043dde7c95SVishal Kulkarni #define G_ACCEPT_MODE(x) (((x) >> S_ACCEPT_MODE) & M_ACCEPT_MODE)
4053dde7c95SVishal Kulkarni 
4063dde7c95SVishal Kulkarni #define S_TX_CHAN    2
4073dde7c95SVishal Kulkarni #define M_TX_CHAN    0x3
4083dde7c95SVishal Kulkarni #define V_TX_CHAN(x) ((x) << S_TX_CHAN)
4093dde7c95SVishal Kulkarni #define G_TX_CHAN(x) (((x) >> S_TX_CHAN) & M_TX_CHAN)
4103dde7c95SVishal Kulkarni 
4113dde7c95SVishal Kulkarni #define S_NO_CONG    4
4123dde7c95SVishal Kulkarni #define V_NO_CONG(x) ((x) << S_NO_CONG)
4133dde7c95SVishal Kulkarni #define F_NO_CONG    V_NO_CONG(1U)
4143dde7c95SVishal Kulkarni 
4153dde7c95SVishal Kulkarni #define S_DELACK    5
4163dde7c95SVishal Kulkarni #define V_DELACK(x) ((x) << S_DELACK)
4173dde7c95SVishal Kulkarni #define F_DELACK    V_DELACK(1U)
4183dde7c95SVishal Kulkarni 
4193dde7c95SVishal Kulkarni #define S_INJECT_TIMER    6
4203dde7c95SVishal Kulkarni #define V_INJECT_TIMER(x) ((x) << S_INJECT_TIMER)
4213dde7c95SVishal Kulkarni #define F_INJECT_TIMER    V_INJECT_TIMER(1U)
4223dde7c95SVishal Kulkarni 
4233dde7c95SVishal Kulkarni #define S_NON_OFFLOAD    7
4243dde7c95SVishal Kulkarni #define V_NON_OFFLOAD(x) ((x) << S_NON_OFFLOAD)
4253dde7c95SVishal Kulkarni #define F_NON_OFFLOAD    V_NON_OFFLOAD(1U)
4263dde7c95SVishal Kulkarni 
4273dde7c95SVishal Kulkarni #define S_ULP_MODE    8
4283dde7c95SVishal Kulkarni #define M_ULP_MODE    0xF
4293dde7c95SVishal Kulkarni #define V_ULP_MODE(x) ((x) << S_ULP_MODE)
4303dde7c95SVishal Kulkarni #define G_ULP_MODE(x) (((x) >> S_ULP_MODE) & M_ULP_MODE)
4313dde7c95SVishal Kulkarni 
4323dde7c95SVishal Kulkarni #define S_RCV_BUFSIZ    12
4333dde7c95SVishal Kulkarni #define M_RCV_BUFSIZ    0x3FFU
4343dde7c95SVishal Kulkarni #define V_RCV_BUFSIZ(x) ((x) << S_RCV_BUFSIZ)
4353dde7c95SVishal Kulkarni #define G_RCV_BUFSIZ(x) (((x) >> S_RCV_BUFSIZ) & M_RCV_BUFSIZ)
4363dde7c95SVishal Kulkarni 
4373dde7c95SVishal Kulkarni #define S_DSCP    22
4383dde7c95SVishal Kulkarni #define M_DSCP    0x3F
4393dde7c95SVishal Kulkarni #define V_DSCP(x) ((x) << S_DSCP)
4403dde7c95SVishal Kulkarni #define G_DSCP(x) (((x) >> S_DSCP) & M_DSCP)
4413dde7c95SVishal Kulkarni 
4423dde7c95SVishal Kulkarni #define S_SMAC_SEL    28
4433dde7c95SVishal Kulkarni #define M_SMAC_SEL    0xFF
4443dde7c95SVishal Kulkarni #define V_SMAC_SEL(x) ((__u64)(x) << S_SMAC_SEL)
4453dde7c95SVishal Kulkarni #define G_SMAC_SEL(x) (((x) >> S_SMAC_SEL) & M_SMAC_SEL)
4463dde7c95SVishal Kulkarni 
4473dde7c95SVishal Kulkarni #define S_L2T_IDX    36
4483dde7c95SVishal Kulkarni #define M_L2T_IDX    0xFFF
4493dde7c95SVishal Kulkarni #define V_L2T_IDX(x) ((__u64)(x) << S_L2T_IDX)
4503dde7c95SVishal Kulkarni #define G_L2T_IDX(x) (((x) >> S_L2T_IDX) & M_L2T_IDX)
4513dde7c95SVishal Kulkarni 
4523dde7c95SVishal Kulkarni #define S_TCAM_BYPASS    48
4533dde7c95SVishal Kulkarni #define V_TCAM_BYPASS(x) ((__u64)(x) << S_TCAM_BYPASS)
4543dde7c95SVishal Kulkarni #define F_TCAM_BYPASS    V_TCAM_BYPASS(1ULL)
4553dde7c95SVishal Kulkarni 
4563dde7c95SVishal Kulkarni #define S_NAGLE    49
4573dde7c95SVishal Kulkarni #define V_NAGLE(x) ((__u64)(x) << S_NAGLE)
4583dde7c95SVishal Kulkarni #define F_NAGLE    V_NAGLE(1ULL)
4593dde7c95SVishal Kulkarni 
4603dde7c95SVishal Kulkarni #define S_WND_SCALE    50
4613dde7c95SVishal Kulkarni #define M_WND_SCALE    0xF
4623dde7c95SVishal Kulkarni #define V_WND_SCALE(x) ((__u64)(x) << S_WND_SCALE)
4633dde7c95SVishal Kulkarni #define G_WND_SCALE(x) (((x) >> S_WND_SCALE) & M_WND_SCALE)
4643dde7c95SVishal Kulkarni 
4653dde7c95SVishal Kulkarni #define S_KEEP_ALIVE    54
4663dde7c95SVishal Kulkarni #define V_KEEP_ALIVE(x) ((__u64)(x) << S_KEEP_ALIVE)
4673dde7c95SVishal Kulkarni #define F_KEEP_ALIVE    V_KEEP_ALIVE(1ULL)
4683dde7c95SVishal Kulkarni 
4693dde7c95SVishal Kulkarni #define S_MAX_RT    55
4703dde7c95SVishal Kulkarni #define M_MAX_RT    0xF
4713dde7c95SVishal Kulkarni #define V_MAX_RT(x) ((__u64)(x) << S_MAX_RT)
4723dde7c95SVishal Kulkarni #define G_MAX_RT(x) (((x) >> S_MAX_RT) & M_MAX_RT)
4733dde7c95SVishal Kulkarni 
4743dde7c95SVishal Kulkarni #define S_MAX_RT_OVERRIDE    59
4753dde7c95SVishal Kulkarni #define V_MAX_RT_OVERRIDE(x) ((__u64)(x) << S_MAX_RT_OVERRIDE)
4763dde7c95SVishal Kulkarni #define F_MAX_RT_OVERRIDE    V_MAX_RT_OVERRIDE(1ULL)
4773dde7c95SVishal Kulkarni 
4783dde7c95SVishal Kulkarni #define S_MSS_IDX    60
4793dde7c95SVishal Kulkarni #define M_MSS_IDX    0xF
4803dde7c95SVishal Kulkarni #define V_MSS_IDX(x) ((__u64)(x) << S_MSS_IDX)
4813dde7c95SVishal Kulkarni #define G_MSS_IDX(x) (((x) >> S_MSS_IDX) & M_MSS_IDX)
48256b2bdd1SGireesh Nagabhushana 
48356b2bdd1SGireesh Nagabhushana /* option 1 fields */
4843dde7c95SVishal Kulkarni #define S_SYN_RSS_ENABLE    0
4853dde7c95SVishal Kulkarni #define V_SYN_RSS_ENABLE(x) ((x) << S_SYN_RSS_ENABLE)
4863dde7c95SVishal Kulkarni #define F_SYN_RSS_ENABLE    V_SYN_RSS_ENABLE(1U)
4873dde7c95SVishal Kulkarni 
4883dde7c95SVishal Kulkarni #define S_SYN_RSS_USE_HASH    1
4893dde7c95SVishal Kulkarni #define V_SYN_RSS_USE_HASH(x) ((x) << S_SYN_RSS_USE_HASH)
4903dde7c95SVishal Kulkarni #define F_SYN_RSS_USE_HASH    V_SYN_RSS_USE_HASH(1U)
4913dde7c95SVishal Kulkarni 
4923dde7c95SVishal Kulkarni #define S_SYN_RSS_QUEUE    2
4933dde7c95SVishal Kulkarni #define M_SYN_RSS_QUEUE    0x3FF
4943dde7c95SVishal Kulkarni #define V_SYN_RSS_QUEUE(x) ((x) << S_SYN_RSS_QUEUE)
4953dde7c95SVishal Kulkarni #define G_SYN_RSS_QUEUE(x) (((x) >> S_SYN_RSS_QUEUE) & M_SYN_RSS_QUEUE)
4963dde7c95SVishal Kulkarni 
4973dde7c95SVishal Kulkarni #define S_LISTEN_INTF    12
4983dde7c95SVishal Kulkarni #define M_LISTEN_INTF    0xFF
4993dde7c95SVishal Kulkarni #define V_LISTEN_INTF(x) ((x) << S_LISTEN_INTF)
5003dde7c95SVishal Kulkarni #define G_LISTEN_INTF(x) (((x) >> S_LISTEN_INTF) & M_LISTEN_INTF)
5013dde7c95SVishal Kulkarni 
5023dde7c95SVishal Kulkarni #define S_LISTEN_FILTER    20
5033dde7c95SVishal Kulkarni #define V_LISTEN_FILTER(x) ((x) << S_LISTEN_FILTER)
5043dde7c95SVishal Kulkarni #define F_LISTEN_FILTER    V_LISTEN_FILTER(1U)
5053dde7c95SVishal Kulkarni 
5063dde7c95SVishal Kulkarni #define S_SYN_DEFENSE    21
5073dde7c95SVishal Kulkarni #define V_SYN_DEFENSE(x) ((x) << S_SYN_DEFENSE)
5083dde7c95SVishal Kulkarni #define F_SYN_DEFENSE    V_SYN_DEFENSE(1U)
5093dde7c95SVishal Kulkarni 
5103dde7c95SVishal Kulkarni #define S_CONN_POLICY    22
5113dde7c95SVishal Kulkarni #define M_CONN_POLICY    0x3
5123dde7c95SVishal Kulkarni #define V_CONN_POLICY(x) ((x) << S_CONN_POLICY)
5133dde7c95SVishal Kulkarni #define G_CONN_POLICY(x) (((x) >> S_CONN_POLICY) & M_CONN_POLICY)
5143dde7c95SVishal Kulkarni 
5153dde7c95SVishal Kulkarni #define S_T5_FILT_INFO    24
5163dde7c95SVishal Kulkarni #define M_T5_FILT_INFO    0xffffffffffULL
5173dde7c95SVishal Kulkarni #define V_T5_FILT_INFO(x) ((x) << S_T5_FILT_INFO)
5183dde7c95SVishal Kulkarni #define G_T5_FILT_INFO(x) (((x) >> S_T5_FILT_INFO) & M_T5_FILT_INFO)
51956b2bdd1SGireesh Nagabhushana 
520de483253SVishal Kulkarni #define S_FILT_INFO    28
521de483253SVishal Kulkarni #define M_FILT_INFO    0xfffffffffULL
522de483253SVishal Kulkarni #define V_FILT_INFO(x) ((x) << S_FILT_INFO)
523de483253SVishal Kulkarni #define G_FILT_INFO(x) (((x) >> S_FILT_INFO) & M_FILT_INFO)
524de483253SVishal Kulkarni 
52556b2bdd1SGireesh Nagabhushana /* option 2 fields */
5263dde7c95SVishal Kulkarni #define S_RSS_QUEUE    0
5273dde7c95SVishal Kulkarni #define M_RSS_QUEUE    0x3FF
5283dde7c95SVishal Kulkarni #define V_RSS_QUEUE(x) ((x) << S_RSS_QUEUE)
5293dde7c95SVishal Kulkarni #define G_RSS_QUEUE(x) (((x) >> S_RSS_QUEUE) & M_RSS_QUEUE)
5303dde7c95SVishal Kulkarni 
5313dde7c95SVishal Kulkarni #define S_RSS_QUEUE_VALID    10
5323dde7c95SVishal Kulkarni #define V_RSS_QUEUE_VALID(x) ((x) << S_RSS_QUEUE_VALID)
5333dde7c95SVishal Kulkarni #define F_RSS_QUEUE_VALID    V_RSS_QUEUE_VALID(1U)
5343dde7c95SVishal Kulkarni 
5353dde7c95SVishal Kulkarni #define S_RX_COALESCE_VALID    11
5363dde7c95SVishal Kulkarni #define V_RX_COALESCE_VALID(x) ((x) << S_RX_COALESCE_VALID)
5373dde7c95SVishal Kulkarni #define F_RX_COALESCE_VALID    V_RX_COALESCE_VALID(1U)
5383dde7c95SVishal Kulkarni 
5393dde7c95SVishal Kulkarni #define S_RX_COALESCE    12
5403dde7c95SVishal Kulkarni #define M_RX_COALESCE    0x3
5413dde7c95SVishal Kulkarni #define V_RX_COALESCE(x) ((x) << S_RX_COALESCE)
5423dde7c95SVishal Kulkarni #define G_RX_COALESCE(x) (((x) >> S_RX_COALESCE) & M_RX_COALESCE)
5433dde7c95SVishal Kulkarni 
5443dde7c95SVishal Kulkarni #define S_CONG_CNTRL    14
5453dde7c95SVishal Kulkarni #define M_CONG_CNTRL    0x3
5463dde7c95SVishal Kulkarni #define V_CONG_CNTRL(x) ((x) << S_CONG_CNTRL)
5473dde7c95SVishal Kulkarni #define G_CONG_CNTRL(x) (((x) >> S_CONG_CNTRL) & M_CONG_CNTRL)
5483dde7c95SVishal Kulkarni 
5493dde7c95SVishal Kulkarni #define S_PACE    16
5503dde7c95SVishal Kulkarni #define M_PACE    0x3
5513dde7c95SVishal Kulkarni #define V_PACE(x) ((x) << S_PACE)
5523dde7c95SVishal Kulkarni #define G_PACE(x) (((x) >> S_PACE) & M_PACE)
5533dde7c95SVishal Kulkarni 
5543dde7c95SVishal Kulkarni #define S_CONG_CNTRL_VALID    18
5553dde7c95SVishal Kulkarni #define V_CONG_CNTRL_VALID(x) ((x) << S_CONG_CNTRL_VALID)
5563dde7c95SVishal Kulkarni #define F_CONG_CNTRL_VALID    V_CONG_CNTRL_VALID(1U)
5573dde7c95SVishal Kulkarni 
5583dde7c95SVishal Kulkarni #define S_T5_ISS    18
5593dde7c95SVishal Kulkarni #define V_T5_ISS(x) ((x) << S_T5_ISS)
5603dde7c95SVishal Kulkarni #define F_T5_ISS    V_T5_ISS(1U)
5613dde7c95SVishal Kulkarni 
5623dde7c95SVishal Kulkarni #define S_PACE_VALID    19
5633dde7c95SVishal Kulkarni #define V_PACE_VALID(x) ((x) << S_PACE_VALID)
5643dde7c95SVishal Kulkarni #define F_PACE_VALID    V_PACE_VALID(1U)
5653dde7c95SVishal Kulkarni 
5663dde7c95SVishal Kulkarni #define S_RX_FC_DISABLE    20
5673dde7c95SVishal Kulkarni #define V_RX_FC_DISABLE(x) ((x) << S_RX_FC_DISABLE)
5683dde7c95SVishal Kulkarni #define F_RX_FC_DISABLE    V_RX_FC_DISABLE(1U)
5693dde7c95SVishal Kulkarni 
5703dde7c95SVishal Kulkarni #define S_RX_FC_DDP    21
5713dde7c95SVishal Kulkarni #define V_RX_FC_DDP(x) ((x) << S_RX_FC_DDP)
5723dde7c95SVishal Kulkarni #define F_RX_FC_DDP    V_RX_FC_DDP(1U)
5733dde7c95SVishal Kulkarni 
5743dde7c95SVishal Kulkarni #define S_RX_FC_VALID    22
5753dde7c95SVishal Kulkarni #define V_RX_FC_VALID(x) ((x) << S_RX_FC_VALID)
5763dde7c95SVishal Kulkarni #define F_RX_FC_VALID    V_RX_FC_VALID(1U)
5773dde7c95SVishal Kulkarni 
5783dde7c95SVishal Kulkarni #define S_TX_QUEUE    23
5793dde7c95SVishal Kulkarni #define M_TX_QUEUE    0x7
5803dde7c95SVishal Kulkarni #define V_TX_QUEUE(x) ((x) << S_TX_QUEUE)
5813dde7c95SVishal Kulkarni #define G_TX_QUEUE(x) (((x) >> S_TX_QUEUE) & M_TX_QUEUE)
5823dde7c95SVishal Kulkarni 
5833dde7c95SVishal Kulkarni #define S_RX_CHANNEL    26
5843dde7c95SVishal Kulkarni #define V_RX_CHANNEL(x) ((x) << S_RX_CHANNEL)
5853dde7c95SVishal Kulkarni #define F_RX_CHANNEL    V_RX_CHANNEL(1U)
5863dde7c95SVishal Kulkarni 
5873dde7c95SVishal Kulkarni #define S_CCTRL_ECN    27
5883dde7c95SVishal Kulkarni #define V_CCTRL_ECN(x) ((x) << S_CCTRL_ECN)
5893dde7c95SVishal Kulkarni #define F_CCTRL_ECN    V_CCTRL_ECN(1U)
5903dde7c95SVishal Kulkarni 
5913dde7c95SVishal Kulkarni #define S_WND_SCALE_EN    28
5923dde7c95SVishal Kulkarni #define V_WND_SCALE_EN(x) ((x) << S_WND_SCALE_EN)
5933dde7c95SVishal Kulkarni #define F_WND_SCALE_EN    V_WND_SCALE_EN(1U)
5943dde7c95SVishal Kulkarni 
5953dde7c95SVishal Kulkarni #define S_TSTAMPS_EN    29
5963dde7c95SVishal Kulkarni #define V_TSTAMPS_EN(x) ((x) << S_TSTAMPS_EN)
5973dde7c95SVishal Kulkarni #define F_TSTAMPS_EN    V_TSTAMPS_EN(1U)
5983dde7c95SVishal Kulkarni 
5993dde7c95SVishal Kulkarni #define S_SACK_EN    30
6003dde7c95SVishal Kulkarni #define V_SACK_EN(x) ((x) << S_SACK_EN)
6013dde7c95SVishal Kulkarni #define F_SACK_EN    V_SACK_EN(1U)
60256b2bdd1SGireesh Nagabhushana 
603de483253SVishal Kulkarni #define S_T5_OPT_2_VALID    31
604de483253SVishal Kulkarni #define V_T5_OPT_2_VALID(x) ((x) << S_T5_OPT_2_VALID)
605de483253SVishal Kulkarni #define F_T5_OPT_2_VALID    V_T5_OPT_2_VALID(1U)
606de483253SVishal Kulkarni 
60756b2bdd1SGireesh Nagabhushana struct cpl_pass_open_req {
60856b2bdd1SGireesh Nagabhushana 	WR_HDR;
60956b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
61056b2bdd1SGireesh Nagabhushana 	__be16 local_port;
61156b2bdd1SGireesh Nagabhushana 	__be16 peer_port;
61256b2bdd1SGireesh Nagabhushana 	__be32 local_ip;
61356b2bdd1SGireesh Nagabhushana 	__be32 peer_ip;
61456b2bdd1SGireesh Nagabhushana 	__be64 opt0;
61556b2bdd1SGireesh Nagabhushana 	__be64 opt1;
61656b2bdd1SGireesh Nagabhushana };
61756b2bdd1SGireesh Nagabhushana 
61856b2bdd1SGireesh Nagabhushana struct cpl_pass_open_req6 {
61956b2bdd1SGireesh Nagabhushana 	WR_HDR;
62056b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
62156b2bdd1SGireesh Nagabhushana 	__be16 local_port;
62256b2bdd1SGireesh Nagabhushana 	__be16 peer_port;
62356b2bdd1SGireesh Nagabhushana 	__be64 local_ip_hi;
62456b2bdd1SGireesh Nagabhushana 	__be64 local_ip_lo;
62556b2bdd1SGireesh Nagabhushana 	__be64 peer_ip_hi;
62656b2bdd1SGireesh Nagabhushana 	__be64 peer_ip_lo;
62756b2bdd1SGireesh Nagabhushana 	__be64 opt0;
62856b2bdd1SGireesh Nagabhushana 	__be64 opt1;
62956b2bdd1SGireesh Nagabhushana };
63056b2bdd1SGireesh Nagabhushana 
63156b2bdd1SGireesh Nagabhushana struct cpl_pass_open_rpl {
63256b2bdd1SGireesh Nagabhushana 	RSS_HDR
63356b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
63456b2bdd1SGireesh Nagabhushana 	__u8 rsvd[3];
63556b2bdd1SGireesh Nagabhushana 	__u8 status;
63656b2bdd1SGireesh Nagabhushana };
63756b2bdd1SGireesh Nagabhushana 
63856b2bdd1SGireesh Nagabhushana struct cpl_pass_establish {
63956b2bdd1SGireesh Nagabhushana 	RSS_HDR
64056b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
64156b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
64256b2bdd1SGireesh Nagabhushana 	__be32 tos_stid;
64356b2bdd1SGireesh Nagabhushana 	__be16 mac_idx;
64456b2bdd1SGireesh Nagabhushana 	__be16 tcp_opt;
64556b2bdd1SGireesh Nagabhushana 	__be32 snd_isn;
64656b2bdd1SGireesh Nagabhushana 	__be32 rcv_isn;
64756b2bdd1SGireesh Nagabhushana };
64856b2bdd1SGireesh Nagabhushana 
64956b2bdd1SGireesh Nagabhushana /* cpl_pass_establish.tos_stid fields */
6503dde7c95SVishal Kulkarni #define S_PASS_OPEN_TID    0
6513dde7c95SVishal Kulkarni #define M_PASS_OPEN_TID    0xFFFFFF
6523dde7c95SVishal Kulkarni #define V_PASS_OPEN_TID(x) ((x) << S_PASS_OPEN_TID)
6533dde7c95SVishal Kulkarni #define G_PASS_OPEN_TID(x) (((x) >> S_PASS_OPEN_TID) & M_PASS_OPEN_TID)
65456b2bdd1SGireesh Nagabhushana 
6553dde7c95SVishal Kulkarni #define S_PASS_OPEN_TOS    24
6563dde7c95SVishal Kulkarni #define M_PASS_OPEN_TOS    0xFF
6573dde7c95SVishal Kulkarni #define V_PASS_OPEN_TOS(x) ((x) << S_PASS_OPEN_TOS)
6583dde7c95SVishal Kulkarni #define G_PASS_OPEN_TOS(x) (((x) >> S_PASS_OPEN_TOS) & M_PASS_OPEN_TOS)
65956b2bdd1SGireesh Nagabhushana 
66056b2bdd1SGireesh Nagabhushana /* cpl_pass_establish.tcp_opt fields (also applies to act_open_establish) */
6613dde7c95SVishal Kulkarni #define S_TCPOPT_WSCALE_OK	5
6623dde7c95SVishal Kulkarni #define M_TCPOPT_WSCALE_OK  	0x1
6633dde7c95SVishal Kulkarni #define V_TCPOPT_WSCALE_OK(x)	((x) << S_TCPOPT_WSCALE_OK)
6643dde7c95SVishal Kulkarni #define G_TCPOPT_WSCALE_OK(x)	(((x) >> S_TCPOPT_WSCALE_OK) & M_TCPOPT_WSCALE_OK)
6653dde7c95SVishal Kulkarni 
6663dde7c95SVishal Kulkarni #define S_TCPOPT_SACK		6
6673dde7c95SVishal Kulkarni #define M_TCPOPT_SACK		0x1
6683dde7c95SVishal Kulkarni #define V_TCPOPT_SACK(x)	((x) << S_TCPOPT_SACK)
6693dde7c95SVishal Kulkarni #define G_TCPOPT_SACK(x)	(((x) >> S_TCPOPT_SACK) & M_TCPOPT_SACK)
6703dde7c95SVishal Kulkarni 
6713dde7c95SVishal Kulkarni #define S_TCPOPT_TSTAMP		7
6723dde7c95SVishal Kulkarni #define M_TCPOPT_TSTAMP		0x1
6733dde7c95SVishal Kulkarni #define V_TCPOPT_TSTAMP(x)	((x) << S_TCPOPT_TSTAMP)
6743dde7c95SVishal Kulkarni #define G_TCPOPT_TSTAMP(x)	(((x) >> S_TCPOPT_TSTAMP) & M_TCPOPT_TSTAMP)
6753dde7c95SVishal Kulkarni 
6763dde7c95SVishal Kulkarni #define S_TCPOPT_SND_WSCALE	8
6773dde7c95SVishal Kulkarni #define M_TCPOPT_SND_WSCALE	0xF
6783dde7c95SVishal Kulkarni #define V_TCPOPT_SND_WSCALE(x)	((x) << S_TCPOPT_SND_WSCALE)
6793dde7c95SVishal Kulkarni #define G_TCPOPT_SND_WSCALE(x)	(((x) >> S_TCPOPT_SND_WSCALE) & M_TCPOPT_SND_WSCALE)
6803dde7c95SVishal Kulkarni 
6813dde7c95SVishal Kulkarni #define S_TCPOPT_MSS	12
6823dde7c95SVishal Kulkarni #define M_TCPOPT_MSS	0xF
6833dde7c95SVishal Kulkarni #define V_TCPOPT_MSS(x)	((x) << S_TCPOPT_MSS)
6843dde7c95SVishal Kulkarni #define G_TCPOPT_MSS(x)	(((x) >> S_TCPOPT_MSS) & M_TCPOPT_MSS)
68556b2bdd1SGireesh Nagabhushana 
68656b2bdd1SGireesh Nagabhushana struct cpl_pass_accept_req {
68756b2bdd1SGireesh Nagabhushana 	RSS_HDR
68856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
68956b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
69056b2bdd1SGireesh Nagabhushana 	__be16 len;
69156b2bdd1SGireesh Nagabhushana 	__be32 hdr_len;
69256b2bdd1SGireesh Nagabhushana 	__be16 vlan;
69356b2bdd1SGireesh Nagabhushana 	__be16 l2info;
69456b2bdd1SGireesh Nagabhushana 	__be32 tos_stid;
69556b2bdd1SGireesh Nagabhushana 	struct tcp_options tcpopt;
69656b2bdd1SGireesh Nagabhushana };
69756b2bdd1SGireesh Nagabhushana 
69856b2bdd1SGireesh Nagabhushana /* cpl_pass_accept_req.hdr_len fields */
6993dde7c95SVishal Kulkarni #define S_SYN_RX_CHAN    0
7003dde7c95SVishal Kulkarni #define M_SYN_RX_CHAN    0xF
7013dde7c95SVishal Kulkarni #define V_SYN_RX_CHAN(x) ((x) << S_SYN_RX_CHAN)
7023dde7c95SVishal Kulkarni #define G_SYN_RX_CHAN(x) (((x) >> S_SYN_RX_CHAN) & M_SYN_RX_CHAN)
7033dde7c95SVishal Kulkarni 
7043dde7c95SVishal Kulkarni #define S_TCP_HDR_LEN    10
7053dde7c95SVishal Kulkarni #define M_TCP_HDR_LEN    0x3F
7063dde7c95SVishal Kulkarni #define V_TCP_HDR_LEN(x) ((x) << S_TCP_HDR_LEN)
7073dde7c95SVishal Kulkarni #define G_TCP_HDR_LEN(x) (((x) >> S_TCP_HDR_LEN) & M_TCP_HDR_LEN)
7083dde7c95SVishal Kulkarni 
7093dde7c95SVishal Kulkarni #define S_T6_TCP_HDR_LEN   8
7103dde7c95SVishal Kulkarni #define V_T6_TCP_HDR_LEN(x) ((x) << S_T6_TCP_HDR_LEN)
7113dde7c95SVishal Kulkarni #define G_T6_TCP_HDR_LEN(x) (((x) >> S_T6_TCP_HDR_LEN) & M_TCP_HDR_LEN)
7123dde7c95SVishal Kulkarni 
7133dde7c95SVishal Kulkarni #define S_IP_HDR_LEN    16
7143dde7c95SVishal Kulkarni #define M_IP_HDR_LEN    0x3FF
7153dde7c95SVishal Kulkarni #define V_IP_HDR_LEN(x) ((x) << S_IP_HDR_LEN)
7163dde7c95SVishal Kulkarni #define G_IP_HDR_LEN(x) (((x) >> S_IP_HDR_LEN) & M_IP_HDR_LEN)
7173dde7c95SVishal Kulkarni 
7183dde7c95SVishal Kulkarni #define S_T6_IP_HDR_LEN    14
7193dde7c95SVishal Kulkarni #define V_T6_IP_HDR_LEN(x) ((x) << S_T6_IP_HDR_LEN)
7203dde7c95SVishal Kulkarni #define G_T6_IP_HDR_LEN(x) (((x) >> S_T6_IP_HDR_LEN) & M_IP_HDR_LEN)
7213dde7c95SVishal Kulkarni 
7223dde7c95SVishal Kulkarni #define S_ETH_HDR_LEN    26
7233dde7c95SVishal Kulkarni #define M_ETH_HDR_LEN    0x3F
7243dde7c95SVishal Kulkarni #define V_ETH_HDR_LEN(x) ((x) << S_ETH_HDR_LEN)
7253dde7c95SVishal Kulkarni #define G_ETH_HDR_LEN(x) (((x) >> S_ETH_HDR_LEN) & M_ETH_HDR_LEN)
7263dde7c95SVishal Kulkarni 
7273dde7c95SVishal Kulkarni #define S_T6_ETH_HDR_LEN    24
7283dde7c95SVishal Kulkarni #define M_T6_ETH_HDR_LEN    0xFF
7293dde7c95SVishal Kulkarni #define V_T6_ETH_HDR_LEN(x) ((x) << S_T6_ETH_HDR_LEN)
7303dde7c95SVishal Kulkarni #define G_T6_ETH_HDR_LEN(x) (((x) >> S_T6_ETH_HDR_LEN) & M_T6_ETH_HDR_LEN)
73156b2bdd1SGireesh Nagabhushana 
73256b2bdd1SGireesh Nagabhushana /* cpl_pass_accept_req.l2info fields */
7333dde7c95SVishal Kulkarni #define S_SYN_MAC_IDX    0
7343dde7c95SVishal Kulkarni #define M_SYN_MAC_IDX    0x1FF
7353dde7c95SVishal Kulkarni #define V_SYN_MAC_IDX(x) ((x) << S_SYN_MAC_IDX)
7363dde7c95SVishal Kulkarni #define G_SYN_MAC_IDX(x) (((x) >> S_SYN_MAC_IDX) & M_SYN_MAC_IDX)
73756b2bdd1SGireesh Nagabhushana 
7383dde7c95SVishal Kulkarni #define S_SYN_XACT_MATCH    9
7393dde7c95SVishal Kulkarni #define V_SYN_XACT_MATCH(x) ((x) << S_SYN_XACT_MATCH)
7403dde7c95SVishal Kulkarni #define F_SYN_XACT_MATCH    V_SYN_XACT_MATCH(1U)
74156b2bdd1SGireesh Nagabhushana 
7423dde7c95SVishal Kulkarni #define S_SYN_INTF    12
7433dde7c95SVishal Kulkarni #define M_SYN_INTF    0xF
7443dde7c95SVishal Kulkarni #define V_SYN_INTF(x) ((x) << S_SYN_INTF)
7453dde7c95SVishal Kulkarni #define G_SYN_INTF(x) (((x) >> S_SYN_INTF) & M_SYN_INTF)
74656b2bdd1SGireesh Nagabhushana 
74756b2bdd1SGireesh Nagabhushana struct cpl_pass_accept_rpl {
74856b2bdd1SGireesh Nagabhushana 	WR_HDR;
74956b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
75056b2bdd1SGireesh Nagabhushana 	__be32 opt2;
75156b2bdd1SGireesh Nagabhushana 	__be64 opt0;
75256b2bdd1SGireesh Nagabhushana };
75356b2bdd1SGireesh Nagabhushana 
754de483253SVishal Kulkarni struct cpl_t5_pass_accept_rpl {
755de483253SVishal Kulkarni 	WR_HDR;
756de483253SVishal Kulkarni 	union opcode_tid ot;
757de483253SVishal Kulkarni 	__be32 opt2;
758de483253SVishal Kulkarni 	__be64 opt0;
759de483253SVishal Kulkarni 	__be32 iss;
7603dde7c95SVishal Kulkarni 	union {
7613dde7c95SVishal Kulkarni 		__be32 rsvd; /* T5 */
7623dde7c95SVishal Kulkarni 		__be32 opt3; /* T6 */
7633dde7c95SVishal Kulkarni 	};
764de483253SVishal Kulkarni };
765de483253SVishal Kulkarni 
76656b2bdd1SGireesh Nagabhushana struct cpl_act_open_req {
76756b2bdd1SGireesh Nagabhushana 	WR_HDR;
76856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
76956b2bdd1SGireesh Nagabhushana 	__be16 local_port;
77056b2bdd1SGireesh Nagabhushana 	__be16 peer_port;
77156b2bdd1SGireesh Nagabhushana 	__be32 local_ip;
77256b2bdd1SGireesh Nagabhushana 	__be32 peer_ip;
77356b2bdd1SGireesh Nagabhushana 	__be64 opt0;
77456b2bdd1SGireesh Nagabhushana 	__be32 params;
77556b2bdd1SGireesh Nagabhushana 	__be32 opt2;
77656b2bdd1SGireesh Nagabhushana };
77756b2bdd1SGireesh Nagabhushana 
778de483253SVishal Kulkarni #define S_FILTER_TUPLE	24
779de483253SVishal Kulkarni #define M_FILTER_TUPLE	0xFFFFFFFFFF
780de483253SVishal Kulkarni #define V_FILTER_TUPLE(x) ((x) << S_FILTER_TUPLE)
781de483253SVishal Kulkarni #define G_FILTER_TUPLE(x) (((x) >> S_FILTER_TUPLE) & M_FILTER_TUPLE)
7823dde7c95SVishal Kulkarni 
783de483253SVishal Kulkarni struct cpl_t5_act_open_req {
784de483253SVishal Kulkarni 	WR_HDR;
785de483253SVishal Kulkarni 	union opcode_tid ot;
786de483253SVishal Kulkarni 	__be16 local_port;
787de483253SVishal Kulkarni 	__be16 peer_port;
788de483253SVishal Kulkarni 	__be32 local_ip;
789de483253SVishal Kulkarni 	__be32 peer_ip;
790de483253SVishal Kulkarni 	__be64 opt0;
7913dde7c95SVishal Kulkarni 	__be32 rsvd;
792de483253SVishal Kulkarni 	__be32 opt2;
793de483253SVishal Kulkarni 	__be64 params;
794de483253SVishal Kulkarni };
795de483253SVishal Kulkarni 
7963dde7c95SVishal Kulkarni struct cpl_t6_act_open_req {
7973dde7c95SVishal Kulkarni 	WR_HDR;
7983dde7c95SVishal Kulkarni 	union opcode_tid ot;
7993dde7c95SVishal Kulkarni 	__be16 local_port;
8003dde7c95SVishal Kulkarni 	__be16 peer_port;
8013dde7c95SVishal Kulkarni 	__be32 local_ip;
8023dde7c95SVishal Kulkarni 	__be32 peer_ip;
8033dde7c95SVishal Kulkarni 	__be64 opt0;
8043dde7c95SVishal Kulkarni 	__be32 rsvd;
8053dde7c95SVishal Kulkarni 	__be32 opt2;
8063dde7c95SVishal Kulkarni 	__be64 params;
8073dde7c95SVishal Kulkarni 	__be32 rsvd2;
8083dde7c95SVishal Kulkarni 	__be32 opt3;
8093dde7c95SVishal Kulkarni };
8103dde7c95SVishal Kulkarni 
8113dde7c95SVishal Kulkarni /* cpl_{t5,t6}_act_open_req.params field */
8123dde7c95SVishal Kulkarni #define S_AOPEN_FCOEMASK	0
8133dde7c95SVishal Kulkarni #define V_AOPEN_FCOEMASK(x)	((x) << S_AOPEN_FCOEMASK)
8143dde7c95SVishal Kulkarni #define F_AOPEN_FCOEMASK	V_AOPEN_FCOEMASK(1U)
8153dde7c95SVishal Kulkarni 
81656b2bdd1SGireesh Nagabhushana struct cpl_act_open_req6 {
81756b2bdd1SGireesh Nagabhushana 	WR_HDR;
81856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
81956b2bdd1SGireesh Nagabhushana 	__be16 local_port;
82056b2bdd1SGireesh Nagabhushana 	__be16 peer_port;
82156b2bdd1SGireesh Nagabhushana 	__be64 local_ip_hi;
82256b2bdd1SGireesh Nagabhushana 	__be64 local_ip_lo;
82356b2bdd1SGireesh Nagabhushana 	__be64 peer_ip_hi;
82456b2bdd1SGireesh Nagabhushana 	__be64 peer_ip_lo;
82556b2bdd1SGireesh Nagabhushana 	__be64 opt0;
82656b2bdd1SGireesh Nagabhushana 	__be32 params;
82756b2bdd1SGireesh Nagabhushana 	__be32 opt2;
82856b2bdd1SGireesh Nagabhushana };
82956b2bdd1SGireesh Nagabhushana 
830de483253SVishal Kulkarni struct cpl_t5_act_open_req6 {
831de483253SVishal Kulkarni 	WR_HDR;
832de483253SVishal Kulkarni 	union opcode_tid ot;
833de483253SVishal Kulkarni 	__be16 local_port;
834de483253SVishal Kulkarni 	__be16 peer_port;
835de483253SVishal Kulkarni 	__be64 local_ip_hi;
836de483253SVishal Kulkarni 	__be64 local_ip_lo;
837de483253SVishal Kulkarni 	__be64 peer_ip_hi;
838de483253SVishal Kulkarni 	__be64 peer_ip_lo;
839de483253SVishal Kulkarni 	__be64 opt0;
8403dde7c95SVishal Kulkarni 	__be32 rsvd;
8413dde7c95SVishal Kulkarni 	__be32 opt2;
8423dde7c95SVishal Kulkarni 	__be64 params;
8433dde7c95SVishal Kulkarni };
8443dde7c95SVishal Kulkarni 
8453dde7c95SVishal Kulkarni struct cpl_t6_act_open_req6 {
8463dde7c95SVishal Kulkarni 	WR_HDR;
8473dde7c95SVishal Kulkarni 	union opcode_tid ot;
8483dde7c95SVishal Kulkarni 	__be16 local_port;
8493dde7c95SVishal Kulkarni 	__be16 peer_port;
8503dde7c95SVishal Kulkarni 	__be64 local_ip_hi;
8513dde7c95SVishal Kulkarni 	__be64 local_ip_lo;
8523dde7c95SVishal Kulkarni 	__be64 peer_ip_hi;
8533dde7c95SVishal Kulkarni 	__be64 peer_ip_lo;
8543dde7c95SVishal Kulkarni 	__be64 opt0;
8553dde7c95SVishal Kulkarni 	__be32 rsvd;
856de483253SVishal Kulkarni 	__be32 opt2;
857de483253SVishal Kulkarni 	__be64 params;
8583dde7c95SVishal Kulkarni 	__be32 rsvd2;
8593dde7c95SVishal Kulkarni 	__be32 opt3;
860de483253SVishal Kulkarni };
861de483253SVishal Kulkarni 
86256b2bdd1SGireesh Nagabhushana struct cpl_act_open_rpl {
86356b2bdd1SGireesh Nagabhushana 	RSS_HDR
86456b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
86556b2bdd1SGireesh Nagabhushana 	__be32 atid_status;
86656b2bdd1SGireesh Nagabhushana };
86756b2bdd1SGireesh Nagabhushana 
86856b2bdd1SGireesh Nagabhushana /* cpl_act_open_rpl.atid_status fields */
8693dde7c95SVishal Kulkarni #define S_AOPEN_STATUS    0
8703dde7c95SVishal Kulkarni #define M_AOPEN_STATUS    0xFF
8713dde7c95SVishal Kulkarni #define V_AOPEN_STATUS(x) ((x) << S_AOPEN_STATUS)
8723dde7c95SVishal Kulkarni #define G_AOPEN_STATUS(x) (((x) >> S_AOPEN_STATUS) & M_AOPEN_STATUS)
87356b2bdd1SGireesh Nagabhushana 
8743dde7c95SVishal Kulkarni #define S_AOPEN_ATID    8
8753dde7c95SVishal Kulkarni #define M_AOPEN_ATID    0xFFFFFF
8763dde7c95SVishal Kulkarni #define V_AOPEN_ATID(x) ((x) << S_AOPEN_ATID)
8773dde7c95SVishal Kulkarni #define G_AOPEN_ATID(x) (((x) >> S_AOPEN_ATID) & M_AOPEN_ATID)
87856b2bdd1SGireesh Nagabhushana 
87956b2bdd1SGireesh Nagabhushana struct cpl_act_establish {
88056b2bdd1SGireesh Nagabhushana 	RSS_HDR
88156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
88256b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
88356b2bdd1SGireesh Nagabhushana 	__be32 tos_atid;
88456b2bdd1SGireesh Nagabhushana 	__be16 mac_idx;
88556b2bdd1SGireesh Nagabhushana 	__be16 tcp_opt;
88656b2bdd1SGireesh Nagabhushana 	__be32 snd_isn;
88756b2bdd1SGireesh Nagabhushana 	__be32 rcv_isn;
88856b2bdd1SGireesh Nagabhushana };
88956b2bdd1SGireesh Nagabhushana 
89056b2bdd1SGireesh Nagabhushana struct cpl_get_tcb {
89156b2bdd1SGireesh Nagabhushana 	WR_HDR;
89256b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
89356b2bdd1SGireesh Nagabhushana 	__be16 reply_ctrl;
89456b2bdd1SGireesh Nagabhushana 	__be16 cookie;
89556b2bdd1SGireesh Nagabhushana };
89656b2bdd1SGireesh Nagabhushana 
89756b2bdd1SGireesh Nagabhushana /* cpl_get_tcb.reply_ctrl fields */
8983dde7c95SVishal Kulkarni #define S_QUEUENO    0
8993dde7c95SVishal Kulkarni #define M_QUEUENO    0x3FF
9003dde7c95SVishal Kulkarni #define V_QUEUENO(x) ((x) << S_QUEUENO)
9013dde7c95SVishal Kulkarni #define G_QUEUENO(x) (((x) >> S_QUEUENO) & M_QUEUENO)
90256b2bdd1SGireesh Nagabhushana 
9033dde7c95SVishal Kulkarni #define S_REPLY_CHAN    14
9043dde7c95SVishal Kulkarni #define V_REPLY_CHAN(x) ((x) << S_REPLY_CHAN)
9053dde7c95SVishal Kulkarni #define F_REPLY_CHAN    V_REPLY_CHAN(1U)
90656b2bdd1SGireesh Nagabhushana 
9073dde7c95SVishal Kulkarni #define S_NO_REPLY    15
9083dde7c95SVishal Kulkarni #define V_NO_REPLY(x) ((x) << S_NO_REPLY)
9093dde7c95SVishal Kulkarni #define F_NO_REPLY    V_NO_REPLY(1U)
91056b2bdd1SGireesh Nagabhushana 
91156b2bdd1SGireesh Nagabhushana struct cpl_get_tcb_rpl {
91256b2bdd1SGireesh Nagabhushana 	RSS_HDR
91356b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
91456b2bdd1SGireesh Nagabhushana 	__u8 cookie;
91556b2bdd1SGireesh Nagabhushana 	__u8 status;
91656b2bdd1SGireesh Nagabhushana 	__be16 len;
91756b2bdd1SGireesh Nagabhushana };
91856b2bdd1SGireesh Nagabhushana 
91956b2bdd1SGireesh Nagabhushana struct cpl_set_tcb {
92056b2bdd1SGireesh Nagabhushana 	WR_HDR;
92156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
92256b2bdd1SGireesh Nagabhushana 	__be16 reply_ctrl;
92356b2bdd1SGireesh Nagabhushana 	__be16 cookie;
92456b2bdd1SGireesh Nagabhushana };
92556b2bdd1SGireesh Nagabhushana 
92656b2bdd1SGireesh Nagabhushana struct cpl_set_tcb_field {
92756b2bdd1SGireesh Nagabhushana 	WR_HDR;
92856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
92956b2bdd1SGireesh Nagabhushana 	__be16 reply_ctrl;
93056b2bdd1SGireesh Nagabhushana 	__be16 word_cookie;
93156b2bdd1SGireesh Nagabhushana 	__be64 mask;
93256b2bdd1SGireesh Nagabhushana 	__be64 val;
93356b2bdd1SGireesh Nagabhushana };
93456b2bdd1SGireesh Nagabhushana 
93556b2bdd1SGireesh Nagabhushana /* cpl_set_tcb_field.word_cookie fields */
9363dde7c95SVishal Kulkarni #define S_WORD    0
9373dde7c95SVishal Kulkarni #define M_WORD    0x1F
9383dde7c95SVishal Kulkarni #define V_WORD(x) ((x) << S_WORD)
9393dde7c95SVishal Kulkarni #define G_WORD(x) (((x) >> S_WORD) & M_WORD)
94056b2bdd1SGireesh Nagabhushana 
9413dde7c95SVishal Kulkarni #define S_COOKIE    5
9423dde7c95SVishal Kulkarni #define M_COOKIE    0x7
9433dde7c95SVishal Kulkarni #define V_COOKIE(x) ((x) << S_COOKIE)
9443dde7c95SVishal Kulkarni #define G_COOKIE(x) (((x) >> S_COOKIE) & M_COOKIE)
94556b2bdd1SGireesh Nagabhushana 
94656b2bdd1SGireesh Nagabhushana struct cpl_set_tcb_rpl {
94756b2bdd1SGireesh Nagabhushana 	RSS_HDR
94856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
94956b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
95056b2bdd1SGireesh Nagabhushana 	__u8   cookie;
95156b2bdd1SGireesh Nagabhushana 	__u8   status;
95256b2bdd1SGireesh Nagabhushana 	__be64 oldval;
95356b2bdd1SGireesh Nagabhushana };
95456b2bdd1SGireesh Nagabhushana 
95556b2bdd1SGireesh Nagabhushana struct cpl_close_con_req {
95656b2bdd1SGireesh Nagabhushana 	WR_HDR;
95756b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
95856b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
95956b2bdd1SGireesh Nagabhushana };
96056b2bdd1SGireesh Nagabhushana 
96156b2bdd1SGireesh Nagabhushana struct cpl_close_con_rpl {
96256b2bdd1SGireesh Nagabhushana 	RSS_HDR
96356b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
96456b2bdd1SGireesh Nagabhushana 	__u8  rsvd[3];
96556b2bdd1SGireesh Nagabhushana 	__u8  status;
96656b2bdd1SGireesh Nagabhushana 	__be32 snd_nxt;
96756b2bdd1SGireesh Nagabhushana 	__be32 rcv_nxt;
96856b2bdd1SGireesh Nagabhushana };
96956b2bdd1SGireesh Nagabhushana 
97056b2bdd1SGireesh Nagabhushana struct cpl_close_listsvr_req {
97156b2bdd1SGireesh Nagabhushana 	WR_HDR;
97256b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
97356b2bdd1SGireesh Nagabhushana 	__be16 reply_ctrl;
97456b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
97556b2bdd1SGireesh Nagabhushana };
97656b2bdd1SGireesh Nagabhushana 
97756b2bdd1SGireesh Nagabhushana /* additional cpl_close_listsvr_req.reply_ctrl field */
9783dde7c95SVishal Kulkarni #define S_LISTSVR_IPV6    14
9793dde7c95SVishal Kulkarni #define V_LISTSVR_IPV6(x) ((x) << S_LISTSVR_IPV6)
9803dde7c95SVishal Kulkarni #define F_LISTSVR_IPV6    V_LISTSVR_IPV6(1U)
98156b2bdd1SGireesh Nagabhushana 
98256b2bdd1SGireesh Nagabhushana struct cpl_close_listsvr_rpl {
98356b2bdd1SGireesh Nagabhushana 	RSS_HDR
98456b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
98556b2bdd1SGireesh Nagabhushana 	__u8 rsvd[3];
98656b2bdd1SGireesh Nagabhushana 	__u8 status;
98756b2bdd1SGireesh Nagabhushana };
98856b2bdd1SGireesh Nagabhushana 
98956b2bdd1SGireesh Nagabhushana struct cpl_abort_req_rss {
99056b2bdd1SGireesh Nagabhushana 	RSS_HDR
99156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
99256b2bdd1SGireesh Nagabhushana 	__u8  rsvd[3];
99356b2bdd1SGireesh Nagabhushana 	__u8  status;
99456b2bdd1SGireesh Nagabhushana };
99556b2bdd1SGireesh Nagabhushana 
9963dde7c95SVishal Kulkarni struct cpl_abort_req_rss6 {
9973dde7c95SVishal Kulkarni 	RSS_HDR
9983dde7c95SVishal Kulkarni 	union opcode_tid ot;
9993dde7c95SVishal Kulkarni 	__u32 srqidx_status;
10003dde7c95SVishal Kulkarni };
10013dde7c95SVishal Kulkarni 
10023dde7c95SVishal Kulkarni #define S_ABORT_RSS_STATUS    0
10033dde7c95SVishal Kulkarni #define M_ABORT_RSS_STATUS    0xff
10043dde7c95SVishal Kulkarni #define V_ABORT_RSS_STATUS(x) ((x) << S_ABORT_RSS_STATUS)
10053dde7c95SVishal Kulkarni #define G_ABORT_RSS_STATUS(x) (((x) >> S_ABORT_RSS_STATUS) & M_ABORT_RSS_STATUS)
10063dde7c95SVishal Kulkarni 
10073dde7c95SVishal Kulkarni #define S_ABORT_RSS_SRQIDX    8
10083dde7c95SVishal Kulkarni #define M_ABORT_RSS_SRQIDX    0xffffff
10093dde7c95SVishal Kulkarni #define V_ABORT_RSS_SRQIDX(x) ((x) << S_ABORT_RSS_SRQIDX)
10103dde7c95SVishal Kulkarni #define G_ABORT_RSS_SRQIDX(x) (((x) >> S_ABORT_RSS_SRQIDX) & M_ABORT_RSS_SRQIDX)
10113dde7c95SVishal Kulkarni 
10123dde7c95SVishal Kulkarni 
10133dde7c95SVishal Kulkarni /* cpl_abort_req status command code in case of T6,
10143dde7c95SVishal Kulkarni  * bit[0] specifies whether to send RST (0) to remote peer or suppress it (1)
10153dde7c95SVishal Kulkarni  * bit[1] indicates ABORT_REQ was sent after a CLOSE_CON_REQ
10163dde7c95SVishal Kulkarni  * bit[2] specifies whether to disable the mmgr (1) or not (0)
10173dde7c95SVishal Kulkarni  */
101856b2bdd1SGireesh Nagabhushana struct cpl_abort_req {
101956b2bdd1SGireesh Nagabhushana 	WR_HDR;
102056b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
102156b2bdd1SGireesh Nagabhushana 	__be32 rsvd0;
102256b2bdd1SGireesh Nagabhushana 	__u8  rsvd1;
102356b2bdd1SGireesh Nagabhushana 	__u8  cmd;
102456b2bdd1SGireesh Nagabhushana 	__u8  rsvd2[6];
102556b2bdd1SGireesh Nagabhushana };
102656b2bdd1SGireesh Nagabhushana 
102756b2bdd1SGireesh Nagabhushana struct cpl_abort_rpl_rss {
102856b2bdd1SGireesh Nagabhushana 	RSS_HDR
102956b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
103056b2bdd1SGireesh Nagabhushana 	__u8  rsvd[3];
103156b2bdd1SGireesh Nagabhushana 	__u8  status;
103256b2bdd1SGireesh Nagabhushana };
103356b2bdd1SGireesh Nagabhushana 
10343dde7c95SVishal Kulkarni struct cpl_abort_rpl_rss6 {
10353dde7c95SVishal Kulkarni 	RSS_HDR
10363dde7c95SVishal Kulkarni 	union opcode_tid ot;
10373dde7c95SVishal Kulkarni 	__u32 srqidx_status;
10383dde7c95SVishal Kulkarni };
10393dde7c95SVishal Kulkarni 
104056b2bdd1SGireesh Nagabhushana struct cpl_abort_rpl {
104156b2bdd1SGireesh Nagabhushana 	WR_HDR;
104256b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
104356b2bdd1SGireesh Nagabhushana 	__be32 rsvd0;
104456b2bdd1SGireesh Nagabhushana 	__u8  rsvd1;
104556b2bdd1SGireesh Nagabhushana 	__u8  cmd;
104656b2bdd1SGireesh Nagabhushana 	__u8  rsvd2[6];
104756b2bdd1SGireesh Nagabhushana };
104856b2bdd1SGireesh Nagabhushana 
104956b2bdd1SGireesh Nagabhushana struct cpl_peer_close {
105056b2bdd1SGireesh Nagabhushana 	RSS_HDR
105156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
105256b2bdd1SGireesh Nagabhushana 	__be32 rcv_nxt;
105356b2bdd1SGireesh Nagabhushana };
105456b2bdd1SGireesh Nagabhushana 
105556b2bdd1SGireesh Nagabhushana struct cpl_tid_release {
105656b2bdd1SGireesh Nagabhushana 	WR_HDR;
105756b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
105856b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
105956b2bdd1SGireesh Nagabhushana };
106056b2bdd1SGireesh Nagabhushana 
106156b2bdd1SGireesh Nagabhushana struct tx_data_wr {
106256b2bdd1SGireesh Nagabhushana 	__be32 wr_hi;
106356b2bdd1SGireesh Nagabhushana 	__be32 wr_lo;
106456b2bdd1SGireesh Nagabhushana 	__be32 len;
106556b2bdd1SGireesh Nagabhushana 	__be32 flags;
106656b2bdd1SGireesh Nagabhushana 	__be32 sndseq;
106756b2bdd1SGireesh Nagabhushana 	__be32 param;
106856b2bdd1SGireesh Nagabhushana };
106956b2bdd1SGireesh Nagabhushana 
107056b2bdd1SGireesh Nagabhushana /* tx_data_wr.flags fields */
10713dde7c95SVishal Kulkarni #define S_TX_ACK_PAGES    21
10723dde7c95SVishal Kulkarni #define M_TX_ACK_PAGES    0x7
10733dde7c95SVishal Kulkarni #define V_TX_ACK_PAGES(x) ((x) << S_TX_ACK_PAGES)
10743dde7c95SVishal Kulkarni #define G_TX_ACK_PAGES(x) (((x) >> S_TX_ACK_PAGES) & M_TX_ACK_PAGES)
107556b2bdd1SGireesh Nagabhushana 
107656b2bdd1SGireesh Nagabhushana /* tx_data_wr.param fields */
10773dde7c95SVishal Kulkarni #define S_TX_PORT    0
10783dde7c95SVishal Kulkarni #define M_TX_PORT    0x7
10793dde7c95SVishal Kulkarni #define V_TX_PORT(x) ((x) << S_TX_PORT)
10803dde7c95SVishal Kulkarni #define G_TX_PORT(x) (((x) >> S_TX_PORT) & M_TX_PORT)
10813dde7c95SVishal Kulkarni 
10823dde7c95SVishal Kulkarni #define S_TX_MSS    4
10833dde7c95SVishal Kulkarni #define M_TX_MSS    0xF
10843dde7c95SVishal Kulkarni #define V_TX_MSS(x) ((x) << S_TX_MSS)
10853dde7c95SVishal Kulkarni #define G_TX_MSS(x) (((x) >> S_TX_MSS) & M_TX_MSS)
10863dde7c95SVishal Kulkarni 
10873dde7c95SVishal Kulkarni #define S_TX_QOS    8
10883dde7c95SVishal Kulkarni #define M_TX_QOS    0xFF
10893dde7c95SVishal Kulkarni #define V_TX_QOS(x) ((x) << S_TX_QOS)
10903dde7c95SVishal Kulkarni #define G_TX_QOS(x) (((x) >> S_TX_QOS) & M_TX_QOS)
10913dde7c95SVishal Kulkarni 
10923dde7c95SVishal Kulkarni #define S_TX_SNDBUF 16
10933dde7c95SVishal Kulkarni #define M_TX_SNDBUF 0xFFFF
10943dde7c95SVishal Kulkarni #define V_TX_SNDBUF(x) ((x) << S_TX_SNDBUF)
10953dde7c95SVishal Kulkarni #define G_TX_SNDBUF(x) (((x) >> S_TX_SNDBUF) & M_TX_SNDBUF)
109656b2bdd1SGireesh Nagabhushana 
109756b2bdd1SGireesh Nagabhushana struct cpl_tx_data {
109856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
109956b2bdd1SGireesh Nagabhushana 	__be32 len;
110056b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
110156b2bdd1SGireesh Nagabhushana 	__be32 flags;
110256b2bdd1SGireesh Nagabhushana };
110356b2bdd1SGireesh Nagabhushana 
110456b2bdd1SGireesh Nagabhushana /* cpl_tx_data.flags fields */
11053dde7c95SVishal Kulkarni #define S_TX_PROXY    5
11063dde7c95SVishal Kulkarni #define V_TX_PROXY(x) ((x) << S_TX_PROXY)
11073dde7c95SVishal Kulkarni #define F_TX_PROXY    V_TX_PROXY(1U)
11083dde7c95SVishal Kulkarni 
11093dde7c95SVishal Kulkarni #define S_TX_ULP_SUBMODE    6
11103dde7c95SVishal Kulkarni #define M_TX_ULP_SUBMODE    0xF
11113dde7c95SVishal Kulkarni #define V_TX_ULP_SUBMODE(x) ((x) << S_TX_ULP_SUBMODE)
11123dde7c95SVishal Kulkarni #define G_TX_ULP_SUBMODE(x) (((x) >> S_TX_ULP_SUBMODE) & M_TX_ULP_SUBMODE)
11133dde7c95SVishal Kulkarni 
11143dde7c95SVishal Kulkarni #define S_TX_ULP_MODE    10
11153dde7c95SVishal Kulkarni #define M_TX_ULP_MODE    0x7
11163dde7c95SVishal Kulkarni #define V_TX_ULP_MODE(x) ((x) << S_TX_ULP_MODE)
11173dde7c95SVishal Kulkarni #define G_TX_ULP_MODE(x) (((x) >> S_TX_ULP_MODE) & M_TX_ULP_MODE)
111856b2bdd1SGireesh Nagabhushana 
11193dde7c95SVishal Kulkarni #define S_TX_FORCE    13
11203dde7c95SVishal Kulkarni #define V_TX_FORCE(x) ((x) << S_TX_FORCE)
11213dde7c95SVishal Kulkarni #define F_TX_FORCE    V_TX_FORCE(1U)
112256b2bdd1SGireesh Nagabhushana 
11233dde7c95SVishal Kulkarni #define S_TX_SHOVE    14
11243dde7c95SVishal Kulkarni #define V_TX_SHOVE(x) ((x) << S_TX_SHOVE)
11253dde7c95SVishal Kulkarni #define F_TX_SHOVE    V_TX_SHOVE(1U)
112656b2bdd1SGireesh Nagabhushana 
11273dde7c95SVishal Kulkarni #define S_TX_MORE    15
11283dde7c95SVishal Kulkarni #define V_TX_MORE(x) ((x) << S_TX_MORE)
11293dde7c95SVishal Kulkarni #define F_TX_MORE    V_TX_MORE(1U)
113056b2bdd1SGireesh Nagabhushana 
11313dde7c95SVishal Kulkarni #define S_TX_URG    16
11323dde7c95SVishal Kulkarni #define V_TX_URG(x) ((x) << S_TX_URG)
11333dde7c95SVishal Kulkarni #define F_TX_URG    V_TX_URG(1U)
113456b2bdd1SGireesh Nagabhushana 
11353dde7c95SVishal Kulkarni #define S_TX_FLUSH    17
11363dde7c95SVishal Kulkarni #define V_TX_FLUSH(x) ((x) << S_TX_FLUSH)
11373dde7c95SVishal Kulkarni #define F_TX_FLUSH    V_TX_FLUSH(1U)
113856b2bdd1SGireesh Nagabhushana 
11393dde7c95SVishal Kulkarni #define S_TX_SAVE    18
11403dde7c95SVishal Kulkarni #define V_TX_SAVE(x) ((x) << S_TX_SAVE)
11413dde7c95SVishal Kulkarni #define F_TX_SAVE    V_TX_SAVE(1U)
114256b2bdd1SGireesh Nagabhushana 
11433dde7c95SVishal Kulkarni #define S_TX_TNL    19
11443dde7c95SVishal Kulkarni #define V_TX_TNL(x) ((x) << S_TX_TNL)
11453dde7c95SVishal Kulkarni #define F_TX_TNL    V_TX_TNL(1U)
114656b2bdd1SGireesh Nagabhushana 
11473dde7c95SVishal Kulkarni #define S_T6_TX_FORCE    20
11483dde7c95SVishal Kulkarni #define V_T6_TX_FORCE(x) ((x) << S_T6_TX_FORCE)
11493dde7c95SVishal Kulkarni #define F_T6_TX_FORCE    V_T6_TX_FORCE(1U)
115056b2bdd1SGireesh Nagabhushana 
115156b2bdd1SGireesh Nagabhushana /* additional tx_data_wr.flags fields */
11523dde7c95SVishal Kulkarni #define S_TX_CPU_IDX    0
11533dde7c95SVishal Kulkarni #define M_TX_CPU_IDX    0x3F
11543dde7c95SVishal Kulkarni #define V_TX_CPU_IDX(x) ((x) << S_TX_CPU_IDX)
11553dde7c95SVishal Kulkarni #define G_TX_CPU_IDX(x) (((x) >> S_TX_CPU_IDX) & M_TX_CPU_IDX)
115656b2bdd1SGireesh Nagabhushana 
11573dde7c95SVishal Kulkarni #define S_TX_CLOSE    17
11583dde7c95SVishal Kulkarni #define V_TX_CLOSE(x) ((x) << S_TX_CLOSE)
11593dde7c95SVishal Kulkarni #define F_TX_CLOSE    V_TX_CLOSE(1U)
116056b2bdd1SGireesh Nagabhushana 
11613dde7c95SVishal Kulkarni #define S_TX_INIT    18
11623dde7c95SVishal Kulkarni #define V_TX_INIT(x) ((x) << S_TX_INIT)
11633dde7c95SVishal Kulkarni #define F_TX_INIT    V_TX_INIT(1U)
116456b2bdd1SGireesh Nagabhushana 
11653dde7c95SVishal Kulkarni #define S_TX_IMM_ACK    19
11663dde7c95SVishal Kulkarni #define V_TX_IMM_ACK(x) ((x) << S_TX_IMM_ACK)
11673dde7c95SVishal Kulkarni #define F_TX_IMM_ACK    V_TX_IMM_ACK(1U)
116856b2bdd1SGireesh Nagabhushana 
11693dde7c95SVishal Kulkarni #define S_TX_IMM_DMA    20
11703dde7c95SVishal Kulkarni #define V_TX_IMM_DMA(x) ((x) << S_TX_IMM_DMA)
11713dde7c95SVishal Kulkarni #define F_TX_IMM_DMA    V_TX_IMM_DMA(1U)
117256b2bdd1SGireesh Nagabhushana 
117356b2bdd1SGireesh Nagabhushana struct cpl_tx_data_ack {
117456b2bdd1SGireesh Nagabhushana 	RSS_HDR
117556b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
117656b2bdd1SGireesh Nagabhushana 	__be32 snd_una;
117756b2bdd1SGireesh Nagabhushana };
117856b2bdd1SGireesh Nagabhushana 
11793dde7c95SVishal Kulkarni struct cpl_wr_ack {  /* XXX */
118056b2bdd1SGireesh Nagabhushana 	RSS_HDR
118156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
118256b2bdd1SGireesh Nagabhushana 	__be16 credits;
118356b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
118456b2bdd1SGireesh Nagabhushana 	__be32 snd_nxt;
118556b2bdd1SGireesh Nagabhushana 	__be32 snd_una;
118656b2bdd1SGireesh Nagabhushana };
118756b2bdd1SGireesh Nagabhushana 
118856b2bdd1SGireesh Nagabhushana struct cpl_tx_pkt_core {
118956b2bdd1SGireesh Nagabhushana 	__be32 ctrl0;
119056b2bdd1SGireesh Nagabhushana 	__be16 pack;
119156b2bdd1SGireesh Nagabhushana 	__be16 len;
119256b2bdd1SGireesh Nagabhushana 	__be64 ctrl1;
119356b2bdd1SGireesh Nagabhushana };
119456b2bdd1SGireesh Nagabhushana 
119556b2bdd1SGireesh Nagabhushana struct cpl_tx_pkt {
119656b2bdd1SGireesh Nagabhushana 	WR_HDR;
119756b2bdd1SGireesh Nagabhushana 	struct cpl_tx_pkt_core c;
119856b2bdd1SGireesh Nagabhushana };
119956b2bdd1SGireesh Nagabhushana 
12003dde7c95SVishal Kulkarni #define cpl_tx_pkt_xt cpl_tx_pkt
120156b2bdd1SGireesh Nagabhushana 
120256b2bdd1SGireesh Nagabhushana /* cpl_tx_pkt_core.ctrl0 fields */
12033dde7c95SVishal Kulkarni #define S_TXPKT_VF    0
12043dde7c95SVishal Kulkarni #define M_TXPKT_VF    0xFF
12053dde7c95SVishal Kulkarni #define V_TXPKT_VF(x) ((x) << S_TXPKT_VF)
12063dde7c95SVishal Kulkarni #define G_TXPKT_VF(x) (((x) >> S_TXPKT_VF) & M_TXPKT_VF)
120756b2bdd1SGireesh Nagabhushana 
12083dde7c95SVishal Kulkarni #define S_TXPKT_PF    8
12093dde7c95SVishal Kulkarni #define M_TXPKT_PF    0x7
12103dde7c95SVishal Kulkarni #define V_TXPKT_PF(x) ((x) << S_TXPKT_PF)
12113dde7c95SVishal Kulkarni #define G_TXPKT_PF(x) (((x) >> S_TXPKT_PF) & M_TXPKT_PF)
121256b2bdd1SGireesh Nagabhushana 
12133dde7c95SVishal Kulkarni #define S_TXPKT_VF_VLD    11
12143dde7c95SVishal Kulkarni #define V_TXPKT_VF_VLD(x) ((x) << S_TXPKT_VF_VLD)
12153dde7c95SVishal Kulkarni #define F_TXPKT_VF_VLD    V_TXPKT_VF_VLD(1U)
121656b2bdd1SGireesh Nagabhushana 
12173dde7c95SVishal Kulkarni #define S_TXPKT_OVLAN_IDX    12
12183dde7c95SVishal Kulkarni #define M_TXPKT_OVLAN_IDX    0xF
12193dde7c95SVishal Kulkarni #define V_TXPKT_OVLAN_IDX(x) ((x) << S_TXPKT_OVLAN_IDX)
12203dde7c95SVishal Kulkarni #define G_TXPKT_OVLAN_IDX(x) (((x) >> S_TXPKT_OVLAN_IDX) & M_TXPKT_OVLAN_IDX)
122156b2bdd1SGireesh Nagabhushana 
1222de483253SVishal Kulkarni #define S_TXPKT_T5_OVLAN_IDX    12
1223de483253SVishal Kulkarni #define M_TXPKT_T5_OVLAN_IDX    0x7
1224de483253SVishal Kulkarni #define V_TXPKT_T5_OVLAN_IDX(x) ((x) << S_TXPKT_T5_OVLAN_IDX)
1225de483253SVishal Kulkarni #define G_TXPKT_T5_OVLAN_IDX(x) (((x) >> S_TXPKT_T5_OVLAN_IDX) & \
1226de483253SVishal Kulkarni 				M_TXPKT_T5_OVLAN_IDX)
1227de483253SVishal Kulkarni 
12283dde7c95SVishal Kulkarni #define S_TXPKT_INTF    16
12293dde7c95SVishal Kulkarni #define M_TXPKT_INTF    0xF
12303dde7c95SVishal Kulkarni #define V_TXPKT_INTF(x) ((x) << S_TXPKT_INTF)
12313dde7c95SVishal Kulkarni #define G_TXPKT_INTF(x) (((x) >> S_TXPKT_INTF) & M_TXPKT_INTF)
123256b2bdd1SGireesh Nagabhushana 
12333dde7c95SVishal Kulkarni #define S_TXPKT_SPECIAL_STAT    20
12343dde7c95SVishal Kulkarni #define V_TXPKT_SPECIAL_STAT(x) ((x) << S_TXPKT_SPECIAL_STAT)
12353dde7c95SVishal Kulkarni #define F_TXPKT_SPECIAL_STAT    V_TXPKT_SPECIAL_STAT(1U)
123656b2bdd1SGireesh Nagabhushana 
1237de483253SVishal Kulkarni #define S_TXPKT_T5_FCS_DIS    21
1238de483253SVishal Kulkarni #define V_TXPKT_T5_FCS_DIS(x) ((x) << S_TXPKT_T5_FCS_DIS)
1239de483253SVishal Kulkarni #define F_TXPKT_T5_FCS_DIS    V_TXPKT_T5_FCS_DIS(1U)
1240de483253SVishal Kulkarni 
12413dde7c95SVishal Kulkarni #define S_TXPKT_INS_OVLAN    21
12423dde7c95SVishal Kulkarni #define V_TXPKT_INS_OVLAN(x) ((x) << S_TXPKT_INS_OVLAN)
12433dde7c95SVishal Kulkarni #define F_TXPKT_INS_OVLAN    V_TXPKT_INS_OVLAN(1U)
124456b2bdd1SGireesh Nagabhushana 
1245de483253SVishal Kulkarni #define S_TXPKT_T5_INS_OVLAN    15
1246de483253SVishal Kulkarni #define V_TXPKT_T5_INS_OVLAN(x) ((x) << S_TXPKT_T5_INS_OVLAN)
1247de483253SVishal Kulkarni #define F_TXPKT_T5_INS_OVLAN    V_TXPKT_T5_INS_OVLAN(1U)
1248de483253SVishal Kulkarni 
12493dde7c95SVishal Kulkarni #define S_TXPKT_STAT_DIS    22
12503dde7c95SVishal Kulkarni #define V_TXPKT_STAT_DIS(x) ((x) << S_TXPKT_STAT_DIS)
12513dde7c95SVishal Kulkarni #define F_TXPKT_STAT_DIS    V_TXPKT_STAT_DIS(1U)
125256b2bdd1SGireesh Nagabhushana 
12533dde7c95SVishal Kulkarni #define S_TXPKT_LOOPBACK    23
12543dde7c95SVishal Kulkarni #define V_TXPKT_LOOPBACK(x) ((x) << S_TXPKT_LOOPBACK)
12553dde7c95SVishal Kulkarni #define F_TXPKT_LOOPBACK    V_TXPKT_LOOPBACK(1U)
125656b2bdd1SGireesh Nagabhushana 
1257de483253SVishal Kulkarni #define S_TXPKT_TSTAMP    23
1258de483253SVishal Kulkarni #define V_TXPKT_TSTAMP(x) ((x) << S_TXPKT_TSTAMP)
1259de483253SVishal Kulkarni #define F_TXPKT_TSTAMP    V_TXPKT_TSTAMP(1U)
1260de483253SVishal Kulkarni 
12613dde7c95SVishal Kulkarni #define S_TXPKT_OPCODE    24
12623dde7c95SVishal Kulkarni #define M_TXPKT_OPCODE    0xFF
12633dde7c95SVishal Kulkarni #define V_TXPKT_OPCODE(x) ((x) << S_TXPKT_OPCODE)
12643dde7c95SVishal Kulkarni #define G_TXPKT_OPCODE(x) (((x) >> S_TXPKT_OPCODE) & M_TXPKT_OPCODE)
126556b2bdd1SGireesh Nagabhushana 
126656b2bdd1SGireesh Nagabhushana /* cpl_tx_pkt_core.ctrl1 fields */
12673dde7c95SVishal Kulkarni #define S_TXPKT_SA_IDX    0
12683dde7c95SVishal Kulkarni #define M_TXPKT_SA_IDX    0xFFF
12693dde7c95SVishal Kulkarni #define V_TXPKT_SA_IDX(x) ((x) << S_TXPKT_SA_IDX)
12703dde7c95SVishal Kulkarni #define G_TXPKT_SA_IDX(x) (((x) >> S_TXPKT_SA_IDX) & M_TXPKT_SA_IDX)
12713dde7c95SVishal Kulkarni 
12723dde7c95SVishal Kulkarni #define S_TXPKT_CSUM_END    12
12733dde7c95SVishal Kulkarni #define M_TXPKT_CSUM_END    0xFF
12743dde7c95SVishal Kulkarni #define V_TXPKT_CSUM_END(x) ((x) << S_TXPKT_CSUM_END)
12753dde7c95SVishal Kulkarni #define G_TXPKT_CSUM_END(x) (((x) >> S_TXPKT_CSUM_END) & M_TXPKT_CSUM_END)
12763dde7c95SVishal Kulkarni 
12773dde7c95SVishal Kulkarni #define S_TXPKT_CSUM_START    20
12783dde7c95SVishal Kulkarni #define M_TXPKT_CSUM_START    0x3FF
12793dde7c95SVishal Kulkarni #define V_TXPKT_CSUM_START(x) ((x) << S_TXPKT_CSUM_START)
12803dde7c95SVishal Kulkarni #define G_TXPKT_CSUM_START(x) (((x) >> S_TXPKT_CSUM_START) & M_TXPKT_CSUM_START)
12813dde7c95SVishal Kulkarni 
12823dde7c95SVishal Kulkarni #define S_TXPKT_IPHDR_LEN    20
12833dde7c95SVishal Kulkarni #define M_TXPKT_IPHDR_LEN    0x3FFF
12843dde7c95SVishal Kulkarni #define V_TXPKT_IPHDR_LEN(x) ((__u64)(x) << S_TXPKT_IPHDR_LEN)
12853dde7c95SVishal Kulkarni #define G_TXPKT_IPHDR_LEN(x) (((x) >> S_TXPKT_IPHDR_LEN) & M_TXPKT_IPHDR_LEN)
12863dde7c95SVishal Kulkarni 
12873dde7c95SVishal Kulkarni #define M_T6_TXPKT_IPHDR_LEN    0xFFF
12883dde7c95SVishal Kulkarni #define G_T6_TXPKT_IPHDR_LEN(x) \
12893dde7c95SVishal Kulkarni 	(((x) >> S_TXPKT_IPHDR_LEN) & M_T6_TXPKT_IPHDR_LEN)
12903dde7c95SVishal Kulkarni 
12913dde7c95SVishal Kulkarni #define S_TXPKT_CSUM_LOC    30
12923dde7c95SVishal Kulkarni #define M_TXPKT_CSUM_LOC    0x3FF
12933dde7c95SVishal Kulkarni #define V_TXPKT_CSUM_LOC(x) ((__u64)(x) << S_TXPKT_CSUM_LOC)
12943dde7c95SVishal Kulkarni #define G_TXPKT_CSUM_LOC(x) (((x) >> S_TXPKT_CSUM_LOC) & M_TXPKT_CSUM_LOC)
12953dde7c95SVishal Kulkarni 
12963dde7c95SVishal Kulkarni #define S_TXPKT_ETHHDR_LEN    34
12973dde7c95SVishal Kulkarni #define M_TXPKT_ETHHDR_LEN    0x3F
12983dde7c95SVishal Kulkarni #define V_TXPKT_ETHHDR_LEN(x) ((__u64)(x) << S_TXPKT_ETHHDR_LEN)
12993dde7c95SVishal Kulkarni #define G_TXPKT_ETHHDR_LEN(x) (((x) >> S_TXPKT_ETHHDR_LEN) & M_TXPKT_ETHHDR_LEN)
13003dde7c95SVishal Kulkarni 
13013dde7c95SVishal Kulkarni #define S_T6_TXPKT_ETHHDR_LEN    32
13023dde7c95SVishal Kulkarni #define M_T6_TXPKT_ETHHDR_LEN    0xFF
13033dde7c95SVishal Kulkarni #define V_T6_TXPKT_ETHHDR_LEN(x) ((__u64)(x) << S_T6_TXPKT_ETHHDR_LEN)
13043dde7c95SVishal Kulkarni #define G_T6_TXPKT_ETHHDR_LEN(x) \
13053dde7c95SVishal Kulkarni 	(((x) >> S_T6_TXPKT_ETHHDR_LEN) & M_T6_TXPKT_ETHHDR_LEN)
13063dde7c95SVishal Kulkarni 
13073dde7c95SVishal Kulkarni #define S_TXPKT_CSUM_TYPE    40
13083dde7c95SVishal Kulkarni #define M_TXPKT_CSUM_TYPE    0xF
13093dde7c95SVishal Kulkarni #define V_TXPKT_CSUM_TYPE(x) ((__u64)(x) << S_TXPKT_CSUM_TYPE)
13103dde7c95SVishal Kulkarni #define G_TXPKT_CSUM_TYPE(x) (((x) >> S_TXPKT_CSUM_TYPE) & M_TXPKT_CSUM_TYPE)
13113dde7c95SVishal Kulkarni 
13123dde7c95SVishal Kulkarni #define S_TXPKT_VLAN    44
13133dde7c95SVishal Kulkarni #define M_TXPKT_VLAN    0xFFFF
13143dde7c95SVishal Kulkarni #define V_TXPKT_VLAN(x) ((__u64)(x) << S_TXPKT_VLAN)
13153dde7c95SVishal Kulkarni #define G_TXPKT_VLAN(x) (((x) >> S_TXPKT_VLAN) & M_TXPKT_VLAN)
13163dde7c95SVishal Kulkarni 
13173dde7c95SVishal Kulkarni #define S_TXPKT_VLAN_VLD    60
13183dde7c95SVishal Kulkarni #define V_TXPKT_VLAN_VLD(x) ((__u64)(x) << S_TXPKT_VLAN_VLD)
13193dde7c95SVishal Kulkarni #define F_TXPKT_VLAN_VLD    V_TXPKT_VLAN_VLD(1ULL)
13203dde7c95SVishal Kulkarni 
13213dde7c95SVishal Kulkarni #define S_TXPKT_IPSEC    61
13223dde7c95SVishal Kulkarni #define V_TXPKT_IPSEC(x) ((__u64)(x) << S_TXPKT_IPSEC)
13233dde7c95SVishal Kulkarni #define F_TXPKT_IPSEC    V_TXPKT_IPSEC(1ULL)
13243dde7c95SVishal Kulkarni 
13253dde7c95SVishal Kulkarni #define S_TXPKT_IPCSUM_DIS    62
13263dde7c95SVishal Kulkarni #define V_TXPKT_IPCSUM_DIS(x) ((__u64)(x) << S_TXPKT_IPCSUM_DIS)
13273dde7c95SVishal Kulkarni #define F_TXPKT_IPCSUM_DIS    V_TXPKT_IPCSUM_DIS(1ULL)
13283dde7c95SVishal Kulkarni 
13293dde7c95SVishal Kulkarni #define S_TXPKT_L4CSUM_DIS    63
13303dde7c95SVishal Kulkarni #define V_TXPKT_L4CSUM_DIS(x) ((__u64)(x) << S_TXPKT_L4CSUM_DIS)
13313dde7c95SVishal Kulkarni #define F_TXPKT_L4CSUM_DIS    V_TXPKT_L4CSUM_DIS(1ULL)
13323dde7c95SVishal Kulkarni 
13333dde7c95SVishal Kulkarni struct cpl_tx_pkt_lso_core {
133456b2bdd1SGireesh Nagabhushana 	__be32 lso_ctrl;
133556b2bdd1SGireesh Nagabhushana 	__be16 ipid_ofst;
133656b2bdd1SGireesh Nagabhushana 	__be16 mss;
133756b2bdd1SGireesh Nagabhushana 	__be32 seqno_offset;
133856b2bdd1SGireesh Nagabhushana 	__be32 len;
133956b2bdd1SGireesh Nagabhushana 	/* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */
134056b2bdd1SGireesh Nagabhushana };
134156b2bdd1SGireesh Nagabhushana 
1342de483253SVishal Kulkarni struct cpl_tx_pkt_lso {
1343de483253SVishal Kulkarni 	WR_HDR;
1344de483253SVishal Kulkarni 	struct cpl_tx_pkt_lso_core c;
1345de483253SVishal Kulkarni 	/* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */
1346de483253SVishal Kulkarni };
1347de483253SVishal Kulkarni 
1348de483253SVishal Kulkarni struct cpl_tx_pkt_ufo_core {
1349de483253SVishal Kulkarni 	__be16 ethlen;
1350de483253SVishal Kulkarni 	__be16 iplen;
1351de483253SVishal Kulkarni 	__be16 udplen;
1352de483253SVishal Kulkarni 	__be16 mss;
1353de483253SVishal Kulkarni 	__be32 len;
1354de483253SVishal Kulkarni 	__be32 r1;
1355de483253SVishal Kulkarni 	/* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */
1356de483253SVishal Kulkarni };
1357de483253SVishal Kulkarni 
1358de483253SVishal Kulkarni struct cpl_tx_pkt_ufo {
1359de483253SVishal Kulkarni 	WR_HDR;
1360de483253SVishal Kulkarni 	struct cpl_tx_pkt_ufo_core c;
1361de483253SVishal Kulkarni 	/* encapsulated CPL (TX_PKT, TX_PKT_XT or TX_DATA) follows here */
1362de483253SVishal Kulkarni };
1363de483253SVishal Kulkarni 
1364de483253SVishal Kulkarni /* cpl_tx_pkt_lso_core.lso_ctrl fields */
13653dde7c95SVishal Kulkarni #define S_LSO_TCPHDR_LEN    0
13663dde7c95SVishal Kulkarni #define M_LSO_TCPHDR_LEN    0xF
13673dde7c95SVishal Kulkarni #define V_LSO_TCPHDR_LEN(x) ((x) << S_LSO_TCPHDR_LEN)
13683dde7c95SVishal Kulkarni #define G_LSO_TCPHDR_LEN(x) (((x) >> S_LSO_TCPHDR_LEN) & M_LSO_TCPHDR_LEN)
13693dde7c95SVishal Kulkarni 
13703dde7c95SVishal Kulkarni #define S_LSO_IPHDR_LEN    4
13713dde7c95SVishal Kulkarni #define M_LSO_IPHDR_LEN    0xFFF
13723dde7c95SVishal Kulkarni #define V_LSO_IPHDR_LEN(x) ((x) << S_LSO_IPHDR_LEN)
13733dde7c95SVishal Kulkarni #define G_LSO_IPHDR_LEN(x) (((x) >> S_LSO_IPHDR_LEN) & M_LSO_IPHDR_LEN)
13743dde7c95SVishal Kulkarni 
13753dde7c95SVishal Kulkarni #define S_LSO_ETHHDR_LEN    16
13763dde7c95SVishal Kulkarni #define M_LSO_ETHHDR_LEN    0xF
13773dde7c95SVishal Kulkarni #define V_LSO_ETHHDR_LEN(x) ((x) << S_LSO_ETHHDR_LEN)
13783dde7c95SVishal Kulkarni #define G_LSO_ETHHDR_LEN(x) (((x) >> S_LSO_ETHHDR_LEN) & M_LSO_ETHHDR_LEN)
13793dde7c95SVishal Kulkarni 
13803dde7c95SVishal Kulkarni #define S_LSO_IPV6    20
13813dde7c95SVishal Kulkarni #define V_LSO_IPV6(x) ((x) << S_LSO_IPV6)
13823dde7c95SVishal Kulkarni #define F_LSO_IPV6    V_LSO_IPV6(1U)
13833dde7c95SVishal Kulkarni 
13843dde7c95SVishal Kulkarni #define S_LSO_OFLD_ENCAP    21
13853dde7c95SVishal Kulkarni #define V_LSO_OFLD_ENCAP(x) ((x) << S_LSO_OFLD_ENCAP)
13863dde7c95SVishal Kulkarni #define F_LSO_OFLD_ENCAP    V_LSO_OFLD_ENCAP(1U)
13873dde7c95SVishal Kulkarni 
13883dde7c95SVishal Kulkarni #define S_LSO_LAST_SLICE    22
13893dde7c95SVishal Kulkarni #define V_LSO_LAST_SLICE(x) ((x) << S_LSO_LAST_SLICE)
13903dde7c95SVishal Kulkarni #define F_LSO_LAST_SLICE    V_LSO_LAST_SLICE(1U)
13913dde7c95SVishal Kulkarni 
13923dde7c95SVishal Kulkarni #define S_LSO_FIRST_SLICE    23
13933dde7c95SVishal Kulkarni #define V_LSO_FIRST_SLICE(x) ((x) << S_LSO_FIRST_SLICE)
13943dde7c95SVishal Kulkarni #define F_LSO_FIRST_SLICE    V_LSO_FIRST_SLICE(1U)
13953dde7c95SVishal Kulkarni 
13963dde7c95SVishal Kulkarni #define S_LSO_OPCODE    24
13973dde7c95SVishal Kulkarni #define M_LSO_OPCODE    0xFF
13983dde7c95SVishal Kulkarni #define V_LSO_OPCODE(x) ((x) << S_LSO_OPCODE)
13993dde7c95SVishal Kulkarni #define G_LSO_OPCODE(x) (((x) >> S_LSO_OPCODE) & M_LSO_OPCODE)
14003dde7c95SVishal Kulkarni 
14013dde7c95SVishal Kulkarni #define S_LSO_T5_XFER_SIZE	   0
1402de483253SVishal Kulkarni #define M_LSO_T5_XFER_SIZE    0xFFFFFFF
1403de483253SVishal Kulkarni #define V_LSO_T5_XFER_SIZE(x) ((x) << S_LSO_T5_XFER_SIZE)
1404de483253SVishal Kulkarni #define G_LSO_T5_XFER_SIZE(x) (((x) >> S_LSO_T5_XFER_SIZE) & M_LSO_T5_XFER_SIZE)
1405de483253SVishal Kulkarni 
1406de483253SVishal Kulkarni /* cpl_tx_pkt_lso_core.mss fields */
14073dde7c95SVishal Kulkarni #define S_LSO_MSS    0
14083dde7c95SVishal Kulkarni #define M_LSO_MSS    0x3FFF
14093dde7c95SVishal Kulkarni #define V_LSO_MSS(x) ((x) << S_LSO_MSS)
14103dde7c95SVishal Kulkarni #define G_LSO_MSS(x) (((x) >> S_LSO_MSS) & M_LSO_MSS)
141156b2bdd1SGireesh Nagabhushana 
14123dde7c95SVishal Kulkarni #define S_LSO_IPID_SPLIT    15
14133dde7c95SVishal Kulkarni #define V_LSO_IPID_SPLIT(x) ((x) << S_LSO_IPID_SPLIT)
14143dde7c95SVishal Kulkarni #define F_LSO_IPID_SPLIT    V_LSO_IPID_SPLIT(1U)
141556b2bdd1SGireesh Nagabhushana 
1416de483253SVishal Kulkarni struct cpl_tx_pkt_fso {
141756b2bdd1SGireesh Nagabhushana 	WR_HDR;
1418de483253SVishal Kulkarni 	__be32 fso_ctrl;
1419de483253SVishal Kulkarni 	__be16 seqcnt_ofst;
1420de483253SVishal Kulkarni 	__be16 mtu;
1421de483253SVishal Kulkarni 	__be32 param_offset;
1422de483253SVishal Kulkarni 	__be32 len;
1423de483253SVishal Kulkarni 	/* encapsulated CPL (TX_PKT or TX_PKT_XT) follows here */
1424de483253SVishal Kulkarni };
1425de483253SVishal Kulkarni 
1426de483253SVishal Kulkarni /* cpl_tx_pkt_fso.fso_ctrl fields different from cpl_tx_pkt_lso.lso_ctrl */
1427de483253SVishal Kulkarni #define S_FSO_XCHG_CLASS    21
1428de483253SVishal Kulkarni #define V_FSO_XCHG_CLASS(x) ((x) << S_FSO_XCHG_CLASS)
1429de483253SVishal Kulkarni #define F_FSO_XCHG_CLASS    V_FSO_XCHG_CLASS(1U)
14303dde7c95SVishal Kulkarni 
1431de483253SVishal Kulkarni #define S_FSO_INITIATOR    20
1432de483253SVishal Kulkarni #define V_FSO_INITIATOR(x) ((x) << S_FSO_INITIATOR)
1433de483253SVishal Kulkarni #define F_FSO_INITIATOR    V_FSO_INITIATOR(1U)
1434de483253SVishal Kulkarni 
1435de483253SVishal Kulkarni #define S_FSO_FCHDR_LEN    12
1436de483253SVishal Kulkarni #define M_FSO_FCHDR_LEN    0xF
1437de483253SVishal Kulkarni #define V_FSO_FCHDR_LEN(x) ((x) << S_FSO_FCHDR_LEN)
1438de483253SVishal Kulkarni #define G_FSO_FCHDR_LEN(x) (((x) >> S_FSO_FCHDR_LEN) & M_FSO_FCHDR_LEN)
14393dde7c95SVishal Kulkarni 
144056b2bdd1SGireesh Nagabhushana struct cpl_iscsi_hdr_no_rss {
144156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
144256b2bdd1SGireesh Nagabhushana 	__be16 pdu_len_ddp;
144356b2bdd1SGireesh Nagabhushana 	__be16 len;
144456b2bdd1SGireesh Nagabhushana 	__be32 seq;
144556b2bdd1SGireesh Nagabhushana 	__be16 urg;
144656b2bdd1SGireesh Nagabhushana 	__u8 rsvd;
144756b2bdd1SGireesh Nagabhushana 	__u8 status;
144856b2bdd1SGireesh Nagabhushana };
144956b2bdd1SGireesh Nagabhushana 
1450de483253SVishal Kulkarni struct cpl_tx_data_iso {
14513dde7c95SVishal Kulkarni 	__be32 op_to_scsi;
14523dde7c95SVishal Kulkarni 	__u8   reserved1;
1453de483253SVishal Kulkarni 	__u8   ahs_len;
14543dde7c95SVishal Kulkarni 	__be16 mpdu;
1455de483253SVishal Kulkarni 	__be32 burst_size;
1456de483253SVishal Kulkarni 	__be32 len;
14573dde7c95SVishal Kulkarni 	__be32 reserved2_seglen_offset;
14583dde7c95SVishal Kulkarni 	__be32 datasn_offset;
14593dde7c95SVishal Kulkarni 	__be32 buffer_offset;
14603dde7c95SVishal Kulkarni 	__be32 reserved3;
14613dde7c95SVishal Kulkarni 
1462de483253SVishal Kulkarni 	/* encapsulated CPL_TX_DATA follows here */
1463de483253SVishal Kulkarni };
1464de483253SVishal Kulkarni 
14653dde7c95SVishal Kulkarni /* cpl_tx_data_iso.op_to_scsi fields */
14663dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_OP	24
14673dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_OP	0xff
14683dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_OP(x)	((x) << S_CPL_TX_DATA_ISO_OP)
14693dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_OP(x)	\
14703dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_OP) & M_CPL_TX_DATA_ISO_OP)
14713dde7c95SVishal Kulkarni 
14723dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_FIRST		23
14733dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_FIRST		0x1
14743dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_FIRST(x)	((x) << S_CPL_TX_DATA_ISO_FIRST)
14753dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_FIRST(x)	\
14763dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_FIRST) & M_CPL_TX_DATA_ISO_FIRST)
14773dde7c95SVishal Kulkarni #define F_CPL_TX_DATA_ISO_FIRST	V_CPL_TX_DATA_ISO_FIRST(1U)
14783dde7c95SVishal Kulkarni 
14793dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_LAST		22
14803dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_LAST		0x1
14813dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_LAST(x)	((x) << S_CPL_TX_DATA_ISO_LAST)
14823dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_LAST(x)	\
14833dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_LAST) & M_CPL_TX_DATA_ISO_LAST)
14843dde7c95SVishal Kulkarni #define F_CPL_TX_DATA_ISO_LAST	V_CPL_TX_DATA_ISO_LAST(1U)
14853dde7c95SVishal Kulkarni 
14863dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_CPLHDRLEN	21
14873dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_CPLHDRLEN	0x1
14883dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_CPLHDRLEN(x)	((x) << S_CPL_TX_DATA_ISO_CPLHDRLEN)
14893dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_CPLHDRLEN(x)	\
14903dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_CPLHDRLEN) & M_CPL_TX_DATA_ISO_CPLHDRLEN)
14913dde7c95SVishal Kulkarni #define F_CPL_TX_DATA_ISO_CPLHDRLEN	V_CPL_TX_DATA_ISO_CPLHDRLEN(1U)
14923dde7c95SVishal Kulkarni 
14933dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_HDRCRC	20
14943dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_HDRCRC	0x1
14953dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_HDRCRC(x)	((x) << S_CPL_TX_DATA_ISO_HDRCRC)
14963dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_HDRCRC(x)	\
14973dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_HDRCRC) & M_CPL_TX_DATA_ISO_HDRCRC)
14983dde7c95SVishal Kulkarni #define F_CPL_TX_DATA_ISO_HDRCRC	V_CPL_TX_DATA_ISO_HDRCRC(1U)
14993dde7c95SVishal Kulkarni 
15003dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_PLDCRC	19
15013dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_PLDCRC	0x1
15023dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_PLDCRC(x)	((x) << S_CPL_TX_DATA_ISO_PLDCRC)
15033dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_PLDCRC(x)	\
15043dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_PLDCRC) & M_CPL_TX_DATA_ISO_PLDCRC)
15053dde7c95SVishal Kulkarni #define F_CPL_TX_DATA_ISO_PLDCRC	V_CPL_TX_DATA_ISO_PLDCRC(1U)
15063dde7c95SVishal Kulkarni 
15073dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_IMMEDIATE	18
15083dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_IMMEDIATE	0x1
15093dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_IMMEDIATE(x)	((x) << S_CPL_TX_DATA_ISO_IMMEDIATE)
15103dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_IMMEDIATE(x)	\
15113dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_IMMEDIATE) & M_CPL_TX_DATA_ISO_IMMEDIATE)
15123dde7c95SVishal Kulkarni #define F_CPL_TX_DATA_ISO_IMMEDIATE	V_CPL_TX_DATA_ISO_IMMEDIATE(1U)
15133dde7c95SVishal Kulkarni 
15143dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_SCSI		16
15153dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_SCSI		0x3
15163dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_SCSI(x)	((x) << S_CPL_TX_DATA_ISO_SCSI)
15173dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_SCSI(x)	\
15183dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_SCSI) & M_CPL_TX_DATA_ISO_SCSI)
15193dde7c95SVishal Kulkarni 
15203dde7c95SVishal Kulkarni /* cpl_tx_data_iso.reserved2_seglen_offset fields */
15213dde7c95SVishal Kulkarni #define S_CPL_TX_DATA_ISO_SEGLEN_OFFSET		0
15223dde7c95SVishal Kulkarni #define M_CPL_TX_DATA_ISO_SEGLEN_OFFSET		0xffffff
15233dde7c95SVishal Kulkarni #define V_CPL_TX_DATA_ISO_SEGLEN_OFFSET(x)	\
15243dde7c95SVishal Kulkarni     ((x) << S_CPL_TX_DATA_ISO_SEGLEN_OFFSET)
15253dde7c95SVishal Kulkarni #define G_CPL_TX_DATA_ISO_SEGLEN_OFFSET(x)	\
15263dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_DATA_ISO_SEGLEN_OFFSET) & \
15273dde7c95SVishal Kulkarni      M_CPL_TX_DATA_ISO_SEGLEN_OFFSET)
1528de483253SVishal Kulkarni 
152956b2bdd1SGireesh Nagabhushana struct cpl_iscsi_hdr {
153056b2bdd1SGireesh Nagabhushana 	RSS_HDR
153156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
153256b2bdd1SGireesh Nagabhushana 	__be16 pdu_len_ddp;
153356b2bdd1SGireesh Nagabhushana 	__be16 len;
153456b2bdd1SGireesh Nagabhushana 	__be32 seq;
153556b2bdd1SGireesh Nagabhushana 	__be16 urg;
153656b2bdd1SGireesh Nagabhushana 	__u8 rsvd;
153756b2bdd1SGireesh Nagabhushana 	__u8 status;
153856b2bdd1SGireesh Nagabhushana };
153956b2bdd1SGireesh Nagabhushana 
154056b2bdd1SGireesh Nagabhushana /* cpl_iscsi_hdr.pdu_len_ddp fields */
15413dde7c95SVishal Kulkarni #define S_ISCSI_PDU_LEN    0
15423dde7c95SVishal Kulkarni #define M_ISCSI_PDU_LEN    0x7FFF
15433dde7c95SVishal Kulkarni #define V_ISCSI_PDU_LEN(x) ((x) << S_ISCSI_PDU_LEN)
15443dde7c95SVishal Kulkarni #define G_ISCSI_PDU_LEN(x) (((x) >> S_ISCSI_PDU_LEN) & M_ISCSI_PDU_LEN)
154556b2bdd1SGireesh Nagabhushana 
15463dde7c95SVishal Kulkarni #define S_ISCSI_DDP    15
15473dde7c95SVishal Kulkarni #define V_ISCSI_DDP(x) ((x) << S_ISCSI_DDP)
15483dde7c95SVishal Kulkarni #define F_ISCSI_DDP    V_ISCSI_DDP(1U)
154956b2bdd1SGireesh Nagabhushana 
1550de483253SVishal Kulkarni struct cpl_iscsi_data {
1551de483253SVishal Kulkarni 	RSS_HDR
1552de483253SVishal Kulkarni 	union opcode_tid ot;
1553de483253SVishal Kulkarni 	__u8 rsvd0[2];
1554de483253SVishal Kulkarni 	__be16 len;
1555de483253SVishal Kulkarni 	__be32 seq;
1556de483253SVishal Kulkarni 	__be16 urg;
1557de483253SVishal Kulkarni 	__u8 rsvd1;
1558de483253SVishal Kulkarni 	__u8 status;
1559de483253SVishal Kulkarni };
1560de483253SVishal Kulkarni 
156156b2bdd1SGireesh Nagabhushana struct cpl_rx_data {
156256b2bdd1SGireesh Nagabhushana 	RSS_HDR
156356b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
156456b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
156556b2bdd1SGireesh Nagabhushana 	__be16 len;
156656b2bdd1SGireesh Nagabhushana 	__be32 seq;
156756b2bdd1SGireesh Nagabhushana 	__be16 urg;
156856b2bdd1SGireesh Nagabhushana #if defined(__LITTLE_ENDIAN_BITFIELD)
156956b2bdd1SGireesh Nagabhushana 	__u8 dack_mode:2;
157056b2bdd1SGireesh Nagabhushana 	__u8 psh:1;
157156b2bdd1SGireesh Nagabhushana 	__u8 heartbeat:1;
157256b2bdd1SGireesh Nagabhushana 	__u8 ddp_off:1;
157356b2bdd1SGireesh Nagabhushana 	__u8 :3;
157456b2bdd1SGireesh Nagabhushana #else
157556b2bdd1SGireesh Nagabhushana 	__u8 :3;
157656b2bdd1SGireesh Nagabhushana 	__u8 ddp_off:1;
157756b2bdd1SGireesh Nagabhushana 	__u8 heartbeat:1;
157856b2bdd1SGireesh Nagabhushana 	__u8 psh:1;
157956b2bdd1SGireesh Nagabhushana 	__u8 dack_mode:2;
158056b2bdd1SGireesh Nagabhushana #endif
158156b2bdd1SGireesh Nagabhushana 	__u8 status;
158256b2bdd1SGireesh Nagabhushana };
158356b2bdd1SGireesh Nagabhushana 
158456b2bdd1SGireesh Nagabhushana struct cpl_fcoe_hdr {
158556b2bdd1SGireesh Nagabhushana 	RSS_HDR
158656b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
158756b2bdd1SGireesh Nagabhushana 	__be16 oxid;
158856b2bdd1SGireesh Nagabhushana 	__be16 len;
158956b2bdd1SGireesh Nagabhushana 	__be32 rctl_fctl;
159056b2bdd1SGireesh Nagabhushana 	__u8 cs_ctl;
159156b2bdd1SGireesh Nagabhushana 	__u8 df_ctl;
159256b2bdd1SGireesh Nagabhushana 	__u8 sof;
159356b2bdd1SGireesh Nagabhushana 	__u8 eof;
159456b2bdd1SGireesh Nagabhushana 	__be16 seq_cnt;
159556b2bdd1SGireesh Nagabhushana 	__u8 seq_id;
159656b2bdd1SGireesh Nagabhushana 	__u8 type;
159756b2bdd1SGireesh Nagabhushana 	__be32 param;
159856b2bdd1SGireesh Nagabhushana };
159956b2bdd1SGireesh Nagabhushana 
16003dde7c95SVishal Kulkarni /* cpl_fcoe_hdr.rctl_fctl fields */
16013dde7c95SVishal Kulkarni #define S_FCOE_FCHDR_RCTL	24
16023dde7c95SVishal Kulkarni #define M_FCOE_FCHDR_RCTL	0xff
16033dde7c95SVishal Kulkarni #define V_FCOE_FCHDR_RCTL(x)	((x) << S_FCOE_FCHDR_RCTL)
16043dde7c95SVishal Kulkarni #define G_FCOE_FCHDR_RCTL(x)	\
16053dde7c95SVishal Kulkarni 	(((x) >> S_FCOE_FCHDR_RCTL) & M_FCOE_FCHDR_RCTL)
16063dde7c95SVishal Kulkarni 
16073dde7c95SVishal Kulkarni #define S_FCOE_FCHDR_FCTL	0
16083dde7c95SVishal Kulkarni #define M_FCOE_FCHDR_FCTL	0xffffff
16093dde7c95SVishal Kulkarni #define V_FCOE_FCHDR_FCTL(x)	((x) << S_FCOE_FCHDR_FCTL)
16103dde7c95SVishal Kulkarni #define G_FCOE_FCHDR_FCTL(x)	\
16113dde7c95SVishal Kulkarni 	(((x) >> S_FCOE_FCHDR_FCTL) & M_FCOE_FCHDR_FCTL)
16123dde7c95SVishal Kulkarni 
1613de483253SVishal Kulkarni struct cpl_fcoe_data {
1614de483253SVishal Kulkarni 	RSS_HDR
1615de483253SVishal Kulkarni 	union opcode_tid ot;
1616de483253SVishal Kulkarni 	__u8 rsvd0[2];
1617de483253SVishal Kulkarni 	__be16 len;
1618de483253SVishal Kulkarni 	__be32 seq;
1619de483253SVishal Kulkarni 	__u8 rsvd1[3];
1620de483253SVishal Kulkarni 	__u8 status;
1621de483253SVishal Kulkarni };
1622de483253SVishal Kulkarni 
162356b2bdd1SGireesh Nagabhushana struct cpl_rx_urg_notify {
162456b2bdd1SGireesh Nagabhushana 	RSS_HDR
162556b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
162656b2bdd1SGireesh Nagabhushana 	__be32 seq;
162756b2bdd1SGireesh Nagabhushana };
162856b2bdd1SGireesh Nagabhushana 
162956b2bdd1SGireesh Nagabhushana struct cpl_rx_urg_pkt {
163056b2bdd1SGireesh Nagabhushana 	RSS_HDR
163156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
163256b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
163356b2bdd1SGireesh Nagabhushana 	__be16 len;
163456b2bdd1SGireesh Nagabhushana };
163556b2bdd1SGireesh Nagabhushana 
163656b2bdd1SGireesh Nagabhushana struct cpl_rx_data_ack {
163756b2bdd1SGireesh Nagabhushana 	WR_HDR;
163856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
163956b2bdd1SGireesh Nagabhushana 	__be32 credit_dack;
164056b2bdd1SGireesh Nagabhushana };
164156b2bdd1SGireesh Nagabhushana 
164256b2bdd1SGireesh Nagabhushana /* cpl_rx_data_ack.ack_seq fields */
16433dde7c95SVishal Kulkarni #define S_RX_CREDITS    0
16443dde7c95SVishal Kulkarni #define M_RX_CREDITS    0x3FFFFFF
16453dde7c95SVishal Kulkarni #define V_RX_CREDITS(x) ((x) << S_RX_CREDITS)
16463dde7c95SVishal Kulkarni #define G_RX_CREDITS(x) (((x) >> S_RX_CREDITS) & M_RX_CREDITS)
164756b2bdd1SGireesh Nagabhushana 
16483dde7c95SVishal Kulkarni #define S_RX_MODULATE_TX    26
16493dde7c95SVishal Kulkarni #define V_RX_MODULATE_TX(x) ((x) << S_RX_MODULATE_TX)
16503dde7c95SVishal Kulkarni #define F_RX_MODULATE_TX    V_RX_MODULATE_TX(1U)
165156b2bdd1SGireesh Nagabhushana 
16523dde7c95SVishal Kulkarni #define S_RX_MODULATE_RX    27
16533dde7c95SVishal Kulkarni #define V_RX_MODULATE_RX(x) ((x) << S_RX_MODULATE_RX)
16543dde7c95SVishal Kulkarni #define F_RX_MODULATE_RX    V_RX_MODULATE_RX(1U)
165556b2bdd1SGireesh Nagabhushana 
16563dde7c95SVishal Kulkarni #define S_RX_FORCE_ACK    28
16573dde7c95SVishal Kulkarni #define V_RX_FORCE_ACK(x) ((x) << S_RX_FORCE_ACK)
16583dde7c95SVishal Kulkarni #define F_RX_FORCE_ACK    V_RX_FORCE_ACK(1U)
165956b2bdd1SGireesh Nagabhushana 
16603dde7c95SVishal Kulkarni #define S_RX_DACK_MODE    29
16613dde7c95SVishal Kulkarni #define M_RX_DACK_MODE    0x3
16623dde7c95SVishal Kulkarni #define V_RX_DACK_MODE(x) ((x) << S_RX_DACK_MODE)
16633dde7c95SVishal Kulkarni #define G_RX_DACK_MODE(x) (((x) >> S_RX_DACK_MODE) & M_RX_DACK_MODE)
166456b2bdd1SGireesh Nagabhushana 
16653dde7c95SVishal Kulkarni #define S_RX_DACK_CHANGE    31
16663dde7c95SVishal Kulkarni #define V_RX_DACK_CHANGE(x) ((x) << S_RX_DACK_CHANGE)
16673dde7c95SVishal Kulkarni #define F_RX_DACK_CHANGE    V_RX_DACK_CHANGE(1U)
166856b2bdd1SGireesh Nagabhushana 
166956b2bdd1SGireesh Nagabhushana struct cpl_rx_ddp_complete {
167056b2bdd1SGireesh Nagabhushana 	RSS_HDR
167156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
167256b2bdd1SGireesh Nagabhushana 	__be32 ddp_report;
167356b2bdd1SGireesh Nagabhushana 	__be32 rcv_nxt;
167456b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
167556b2bdd1SGireesh Nagabhushana };
167656b2bdd1SGireesh Nagabhushana 
167756b2bdd1SGireesh Nagabhushana struct cpl_rx_data_ddp {
167856b2bdd1SGireesh Nagabhushana 	RSS_HDR
167956b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
168056b2bdd1SGireesh Nagabhushana 	__be16 urg;
168156b2bdd1SGireesh Nagabhushana 	__be16 len;
168256b2bdd1SGireesh Nagabhushana 	__be32 seq;
168356b2bdd1SGireesh Nagabhushana 	union {
168456b2bdd1SGireesh Nagabhushana 		__be32 nxt_seq;
168556b2bdd1SGireesh Nagabhushana 		__be32 ddp_report;
16863dde7c95SVishal Kulkarni 	};
168756b2bdd1SGireesh Nagabhushana 	__be32 ulp_crc;
168856b2bdd1SGireesh Nagabhushana 	__be32 ddpvld;
168956b2bdd1SGireesh Nagabhushana };
169056b2bdd1SGireesh Nagabhushana 
1691de483253SVishal Kulkarni #define cpl_rx_iscsi_ddp cpl_rx_data_ddp
1692de483253SVishal Kulkarni 
169356b2bdd1SGireesh Nagabhushana struct cpl_rx_fcoe_ddp {
169456b2bdd1SGireesh Nagabhushana 	RSS_HDR
169556b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
169656b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
169756b2bdd1SGireesh Nagabhushana 	__be16 len;
169856b2bdd1SGireesh Nagabhushana 	__be32 seq;
169956b2bdd1SGireesh Nagabhushana 	__be32 ddp_report;
170056b2bdd1SGireesh Nagabhushana 	__be32 ulp_crc;
170156b2bdd1SGireesh Nagabhushana 	__be32 ddpvld;
170256b2bdd1SGireesh Nagabhushana };
170356b2bdd1SGireesh Nagabhushana 
1704de483253SVishal Kulkarni struct cpl_rx_data_dif {
1705de483253SVishal Kulkarni 	RSS_HDR
1706de483253SVishal Kulkarni 	union opcode_tid ot;
1707de483253SVishal Kulkarni 	__be16 ddp_len;
1708de483253SVishal Kulkarni 	__be16 msg_len;
1709de483253SVishal Kulkarni 	__be32 seq;
1710de483253SVishal Kulkarni 	union {
1711de483253SVishal Kulkarni 		__be32 nxt_seq;
1712de483253SVishal Kulkarni 		__be32 ddp_report;
17133dde7c95SVishal Kulkarni 	};
1714de483253SVishal Kulkarni 	__be32 err_vec;
1715de483253SVishal Kulkarni 	__be32 ddpvld;
1716de483253SVishal Kulkarni };
1717de483253SVishal Kulkarni 
1718de483253SVishal Kulkarni struct cpl_rx_iscsi_dif {
1719de483253SVishal Kulkarni 	RSS_HDR
1720de483253SVishal Kulkarni 	union opcode_tid ot;
1721de483253SVishal Kulkarni 	__be16 ddp_len;
1722de483253SVishal Kulkarni 	__be16 msg_len;
1723de483253SVishal Kulkarni 	__be32 seq;
1724de483253SVishal Kulkarni 	union {
1725de483253SVishal Kulkarni 		__be32 nxt_seq;
1726de483253SVishal Kulkarni 		__be32 ddp_report;
17273dde7c95SVishal Kulkarni 	};
1728de483253SVishal Kulkarni 	__be32 ulp_crc;
1729de483253SVishal Kulkarni 	__be32 ddpvld;
1730de483253SVishal Kulkarni 	__u8 rsvd0[8];
1731de483253SVishal Kulkarni 	__be32 err_vec;
1732de483253SVishal Kulkarni 	__u8 rsvd1[4];
1733de483253SVishal Kulkarni };
1734de483253SVishal Kulkarni 
17353dde7c95SVishal Kulkarni struct cpl_rx_iscsi_cmp {
17363dde7c95SVishal Kulkarni 	RSS_HDR
17373dde7c95SVishal Kulkarni 	union opcode_tid ot;
17383dde7c95SVishal Kulkarni 	__be16 pdu_len_ddp;
17393dde7c95SVishal Kulkarni 	__be16 len;
17403dde7c95SVishal Kulkarni 	__be32 seq;
17413dde7c95SVishal Kulkarni 	__be16 urg;
17423dde7c95SVishal Kulkarni 	__u8 rsvd;
17433dde7c95SVishal Kulkarni 	__u8 status;
17443dde7c95SVishal Kulkarni 	__be32 ulp_crc;
17453dde7c95SVishal Kulkarni 	__be32 ddpvld;
17463dde7c95SVishal Kulkarni };
17473dde7c95SVishal Kulkarni 
1748de483253SVishal Kulkarni struct cpl_rx_fcoe_dif {
1749de483253SVishal Kulkarni 	RSS_HDR
1750de483253SVishal Kulkarni 	union opcode_tid ot;
1751de483253SVishal Kulkarni 	__be16 ddp_len;
1752de483253SVishal Kulkarni 	__be16 msg_len;
1753de483253SVishal Kulkarni 	__be32 seq;
1754de483253SVishal Kulkarni 	__be32 ddp_report;
1755de483253SVishal Kulkarni 	__be32 err_vec;
1756de483253SVishal Kulkarni 	__be32 ddpvld;
1757de483253SVishal Kulkarni };
1758de483253SVishal Kulkarni 
1759de483253SVishal Kulkarni /* cpl_rx_{data,iscsi,fcoe}_{ddp,dif}.ddpvld fields */
17603dde7c95SVishal Kulkarni #define S_DDP_VALID    15
17613dde7c95SVishal Kulkarni #define M_DDP_VALID    0x1FFFF
17623dde7c95SVishal Kulkarni #define V_DDP_VALID(x) ((x) << S_DDP_VALID)
17633dde7c95SVishal Kulkarni #define G_DDP_VALID(x) (((x) >> S_DDP_VALID) & M_DDP_VALID)
176456b2bdd1SGireesh Nagabhushana 
17653dde7c95SVishal Kulkarni #define S_DDP_PPOD_MISMATCH    15
17663dde7c95SVishal Kulkarni #define V_DDP_PPOD_MISMATCH(x) ((x) << S_DDP_PPOD_MISMATCH)
17673dde7c95SVishal Kulkarni #define F_DDP_PPOD_MISMATCH    V_DDP_PPOD_MISMATCH(1U)
176856b2bdd1SGireesh Nagabhushana 
17693dde7c95SVishal Kulkarni #define S_DDP_PDU    16
17703dde7c95SVishal Kulkarni #define V_DDP_PDU(x) ((x) << S_DDP_PDU)
17713dde7c95SVishal Kulkarni #define F_DDP_PDU    V_DDP_PDU(1U)
177256b2bdd1SGireesh Nagabhushana 
17733dde7c95SVishal Kulkarni #define S_DDP_LLIMIT_ERR    17
17743dde7c95SVishal Kulkarni #define V_DDP_LLIMIT_ERR(x) ((x) << S_DDP_LLIMIT_ERR)
17753dde7c95SVishal Kulkarni #define F_DDP_LLIMIT_ERR    V_DDP_LLIMIT_ERR(1U)
177656b2bdd1SGireesh Nagabhushana 
17773dde7c95SVishal Kulkarni #define S_DDP_PPOD_PARITY_ERR    18
17783dde7c95SVishal Kulkarni #define V_DDP_PPOD_PARITY_ERR(x) ((x) << S_DDP_PPOD_PARITY_ERR)
17793dde7c95SVishal Kulkarni #define F_DDP_PPOD_PARITY_ERR    V_DDP_PPOD_PARITY_ERR(1U)
178056b2bdd1SGireesh Nagabhushana 
17813dde7c95SVishal Kulkarni #define S_DDP_PADDING_ERR    19
17823dde7c95SVishal Kulkarni #define V_DDP_PADDING_ERR(x) ((x) << S_DDP_PADDING_ERR)
17833dde7c95SVishal Kulkarni #define F_DDP_PADDING_ERR    V_DDP_PADDING_ERR(1U)
178456b2bdd1SGireesh Nagabhushana 
17853dde7c95SVishal Kulkarni #define S_DDP_HDRCRC_ERR    20
17863dde7c95SVishal Kulkarni #define V_DDP_HDRCRC_ERR(x) ((x) << S_DDP_HDRCRC_ERR)
17873dde7c95SVishal Kulkarni #define F_DDP_HDRCRC_ERR    V_DDP_HDRCRC_ERR(1U)
178856b2bdd1SGireesh Nagabhushana 
17893dde7c95SVishal Kulkarni #define S_DDP_DATACRC_ERR    21
17903dde7c95SVishal Kulkarni #define V_DDP_DATACRC_ERR(x) ((x) << S_DDP_DATACRC_ERR)
17913dde7c95SVishal Kulkarni #define F_DDP_DATACRC_ERR    V_DDP_DATACRC_ERR(1U)
179256b2bdd1SGireesh Nagabhushana 
17933dde7c95SVishal Kulkarni #define S_DDP_INVALID_TAG    22
17943dde7c95SVishal Kulkarni #define V_DDP_INVALID_TAG(x) ((x) << S_DDP_INVALID_TAG)
17953dde7c95SVishal Kulkarni #define F_DDP_INVALID_TAG    V_DDP_INVALID_TAG(1U)
179656b2bdd1SGireesh Nagabhushana 
17973dde7c95SVishal Kulkarni #define S_DDP_ULIMIT_ERR    23
17983dde7c95SVishal Kulkarni #define V_DDP_ULIMIT_ERR(x) ((x) << S_DDP_ULIMIT_ERR)
17993dde7c95SVishal Kulkarni #define F_DDP_ULIMIT_ERR    V_DDP_ULIMIT_ERR(1U)
180056b2bdd1SGireesh Nagabhushana 
18013dde7c95SVishal Kulkarni #define S_DDP_OFFSET_ERR    24
18023dde7c95SVishal Kulkarni #define V_DDP_OFFSET_ERR(x) ((x) << S_DDP_OFFSET_ERR)
18033dde7c95SVishal Kulkarni #define F_DDP_OFFSET_ERR    V_DDP_OFFSET_ERR(1U)
180456b2bdd1SGireesh Nagabhushana 
18053dde7c95SVishal Kulkarni #define S_DDP_COLOR_ERR    25
18063dde7c95SVishal Kulkarni #define V_DDP_COLOR_ERR(x) ((x) << S_DDP_COLOR_ERR)
18073dde7c95SVishal Kulkarni #define F_DDP_COLOR_ERR    V_DDP_COLOR_ERR(1U)
180856b2bdd1SGireesh Nagabhushana 
18093dde7c95SVishal Kulkarni #define S_DDP_TID_MISMATCH    26
18103dde7c95SVishal Kulkarni #define V_DDP_TID_MISMATCH(x) ((x) << S_DDP_TID_MISMATCH)
18113dde7c95SVishal Kulkarni #define F_DDP_TID_MISMATCH    V_DDP_TID_MISMATCH(1U)
181256b2bdd1SGireesh Nagabhushana 
18133dde7c95SVishal Kulkarni #define S_DDP_INVALID_PPOD    27
18143dde7c95SVishal Kulkarni #define V_DDP_INVALID_PPOD(x) ((x) << S_DDP_INVALID_PPOD)
18153dde7c95SVishal Kulkarni #define F_DDP_INVALID_PPOD    V_DDP_INVALID_PPOD(1U)
181656b2bdd1SGireesh Nagabhushana 
18173dde7c95SVishal Kulkarni #define S_DDP_ULP_MODE    28
18183dde7c95SVishal Kulkarni #define M_DDP_ULP_MODE    0xF
18193dde7c95SVishal Kulkarni #define V_DDP_ULP_MODE(x) ((x) << S_DDP_ULP_MODE)
18203dde7c95SVishal Kulkarni #define G_DDP_ULP_MODE(x) (((x) >> S_DDP_ULP_MODE) & M_DDP_ULP_MODE)
182156b2bdd1SGireesh Nagabhushana 
1822de483253SVishal Kulkarni /* cpl_rx_{data,iscsi,fcoe}_{ddp,dif}.ddp_report fields */
18233dde7c95SVishal Kulkarni #define S_DDP_OFFSET    0
18243dde7c95SVishal Kulkarni #define M_DDP_OFFSET    0xFFFFFF
18253dde7c95SVishal Kulkarni #define V_DDP_OFFSET(x) ((x) << S_DDP_OFFSET)
18263dde7c95SVishal Kulkarni #define G_DDP_OFFSET(x) (((x) >> S_DDP_OFFSET) & M_DDP_OFFSET)
182756b2bdd1SGireesh Nagabhushana 
18283dde7c95SVishal Kulkarni #define S_DDP_DACK_MODE    24
18293dde7c95SVishal Kulkarni #define M_DDP_DACK_MODE    0x3
18303dde7c95SVishal Kulkarni #define V_DDP_DACK_MODE(x) ((x) << S_DDP_DACK_MODE)
18313dde7c95SVishal Kulkarni #define G_DDP_DACK_MODE(x) (((x) >> S_DDP_DACK_MODE) & M_DDP_DACK_MODE)
183256b2bdd1SGireesh Nagabhushana 
18333dde7c95SVishal Kulkarni #define S_DDP_BUF_IDX    26
18343dde7c95SVishal Kulkarni #define V_DDP_BUF_IDX(x) ((x) << S_DDP_BUF_IDX)
18353dde7c95SVishal Kulkarni #define F_DDP_BUF_IDX    V_DDP_BUF_IDX(1U)
183656b2bdd1SGireesh Nagabhushana 
18373dde7c95SVishal Kulkarni #define S_DDP_URG    27
18383dde7c95SVishal Kulkarni #define V_DDP_URG(x) ((x) << S_DDP_URG)
18393dde7c95SVishal Kulkarni #define F_DDP_URG    V_DDP_URG(1U)
184056b2bdd1SGireesh Nagabhushana 
18413dde7c95SVishal Kulkarni #define S_DDP_PSH    28
18423dde7c95SVishal Kulkarni #define V_DDP_PSH(x) ((x) << S_DDP_PSH)
18433dde7c95SVishal Kulkarni #define F_DDP_PSH    V_DDP_PSH(1U)
184456b2bdd1SGireesh Nagabhushana 
18453dde7c95SVishal Kulkarni #define S_DDP_BUF_COMPLETE    29
18463dde7c95SVishal Kulkarni #define V_DDP_BUF_COMPLETE(x) ((x) << S_DDP_BUF_COMPLETE)
18473dde7c95SVishal Kulkarni #define F_DDP_BUF_COMPLETE    V_DDP_BUF_COMPLETE(1U)
184856b2bdd1SGireesh Nagabhushana 
18493dde7c95SVishal Kulkarni #define S_DDP_BUF_TIMED_OUT    30
18503dde7c95SVishal Kulkarni #define V_DDP_BUF_TIMED_OUT(x) ((x) << S_DDP_BUF_TIMED_OUT)
18513dde7c95SVishal Kulkarni #define F_DDP_BUF_TIMED_OUT    V_DDP_BUF_TIMED_OUT(1U)
185256b2bdd1SGireesh Nagabhushana 
18533dde7c95SVishal Kulkarni #define S_DDP_INV    31
18543dde7c95SVishal Kulkarni #define V_DDP_INV(x) ((x) << S_DDP_INV)
18553dde7c95SVishal Kulkarni #define F_DDP_INV    V_DDP_INV(1U)
185656b2bdd1SGireesh Nagabhushana 
185756b2bdd1SGireesh Nagabhushana struct cpl_rx_pkt {
185856b2bdd1SGireesh Nagabhushana 	RSS_HDR
185956b2bdd1SGireesh Nagabhushana 	__u8 opcode;
186056b2bdd1SGireesh Nagabhushana #if defined(__LITTLE_ENDIAN_BITFIELD)
186156b2bdd1SGireesh Nagabhushana 	__u8 iff:4;
186256b2bdd1SGireesh Nagabhushana 	__u8 csum_calc:1;
186356b2bdd1SGireesh Nagabhushana 	__u8 ipmi_pkt:1;
186456b2bdd1SGireesh Nagabhushana 	__u8 vlan_ex:1;
186556b2bdd1SGireesh Nagabhushana 	__u8 ip_frag:1;
186656b2bdd1SGireesh Nagabhushana #else
186756b2bdd1SGireesh Nagabhushana 	__u8 ip_frag:1;
186856b2bdd1SGireesh Nagabhushana 	__u8 vlan_ex:1;
186956b2bdd1SGireesh Nagabhushana 	__u8 ipmi_pkt:1;
187056b2bdd1SGireesh Nagabhushana 	__u8 csum_calc:1;
187156b2bdd1SGireesh Nagabhushana 	__u8 iff:4;
187256b2bdd1SGireesh Nagabhushana #endif
187356b2bdd1SGireesh Nagabhushana 	__be16 csum;
187456b2bdd1SGireesh Nagabhushana 	__be16 vlan;
187556b2bdd1SGireesh Nagabhushana 	__be16 len;
187656b2bdd1SGireesh Nagabhushana 	__be32 l2info;
187756b2bdd1SGireesh Nagabhushana 	__be16 hdr_len;
187856b2bdd1SGireesh Nagabhushana 	__be16 err_vec;
187956b2bdd1SGireesh Nagabhushana };
188056b2bdd1SGireesh Nagabhushana 
188156b2bdd1SGireesh Nagabhushana /* rx_pkt.l2info fields */
18823dde7c95SVishal Kulkarni #define S_RX_ETHHDR_LEN    0
18833dde7c95SVishal Kulkarni #define M_RX_ETHHDR_LEN    0x1F
18843dde7c95SVishal Kulkarni #define V_RX_ETHHDR_LEN(x) ((x) << S_RX_ETHHDR_LEN)
18853dde7c95SVishal Kulkarni #define G_RX_ETHHDR_LEN(x) (((x) >> S_RX_ETHHDR_LEN) & M_RX_ETHHDR_LEN)
188656b2bdd1SGireesh Nagabhushana 
1887de483253SVishal Kulkarni #define S_RX_T5_ETHHDR_LEN    0
1888de483253SVishal Kulkarni #define M_RX_T5_ETHHDR_LEN    0x3F
1889de483253SVishal Kulkarni #define V_RX_T5_ETHHDR_LEN(x) ((x) << S_RX_T5_ETHHDR_LEN)
1890de483253SVishal Kulkarni #define G_RX_T5_ETHHDR_LEN(x) (((x) >> S_RX_T5_ETHHDR_LEN) & M_RX_T5_ETHHDR_LEN)
1891de483253SVishal Kulkarni 
18923dde7c95SVishal Kulkarni #define M_RX_T6_ETHHDR_LEN    0xFF
18933dde7c95SVishal Kulkarni #define G_RX_T6_ETHHDR_LEN(x) (((x) >> S_RX_ETHHDR_LEN) & M_RX_T6_ETHHDR_LEN)
18943dde7c95SVishal Kulkarni 
18953dde7c95SVishal Kulkarni #define S_RX_PKTYPE    5
18963dde7c95SVishal Kulkarni #define M_RX_PKTYPE    0x7
18973dde7c95SVishal Kulkarni #define V_RX_PKTYPE(x) ((x) << S_RX_PKTYPE)
18983dde7c95SVishal Kulkarni #define G_RX_PKTYPE(x) (((x) >> S_RX_PKTYPE) & M_RX_PKTYPE)
189956b2bdd1SGireesh Nagabhushana 
1900de483253SVishal Kulkarni #define S_RX_T5_DATYPE    6
1901de483253SVishal Kulkarni #define M_RX_T5_DATYPE    0x3
1902de483253SVishal Kulkarni #define V_RX_T5_DATYPE(x) ((x) << S_RX_T5_DATYPE)
1903de483253SVishal Kulkarni #define G_RX_T5_DATYPE(x) (((x) >> S_RX_T5_DATYPE) & M_RX_T5_DATYPE)
1904de483253SVishal Kulkarni 
19053dde7c95SVishal Kulkarni #define S_RX_MACIDX    8
19063dde7c95SVishal Kulkarni #define M_RX_MACIDX    0x1FF
19073dde7c95SVishal Kulkarni #define V_RX_MACIDX(x) ((x) << S_RX_MACIDX)
19083dde7c95SVishal Kulkarni #define G_RX_MACIDX(x) (((x) >> S_RX_MACIDX) & M_RX_MACIDX)
190956b2bdd1SGireesh Nagabhushana 
1910de483253SVishal Kulkarni #define S_RX_T5_PKTYPE    17
1911de483253SVishal Kulkarni #define M_RX_T5_PKTYPE    0x7
1912de483253SVishal Kulkarni #define V_RX_T5_PKTYPE(x) ((x) << S_RX_T5_PKTYPE)
1913de483253SVishal Kulkarni #define G_RX_T5_PKTYPE(x) (((x) >> S_RX_T5_PKTYPE) & M_RX_T5_PKTYPE)
1914de483253SVishal Kulkarni 
19153dde7c95SVishal Kulkarni #define S_RX_DATYPE    18
19163dde7c95SVishal Kulkarni #define M_RX_DATYPE    0x3
19173dde7c95SVishal Kulkarni #define V_RX_DATYPE(x) ((x) << S_RX_DATYPE)
19183dde7c95SVishal Kulkarni #define G_RX_DATYPE(x) (((x) >> S_RX_DATYPE) & M_RX_DATYPE)
191956b2bdd1SGireesh Nagabhushana 
19203dde7c95SVishal Kulkarni #define S_RXF_PSH    20
19213dde7c95SVishal Kulkarni #define V_RXF_PSH(x) ((x) << S_RXF_PSH)
19223dde7c95SVishal Kulkarni #define F_RXF_PSH    V_RXF_PSH(1U)
192356b2bdd1SGireesh Nagabhushana 
19243dde7c95SVishal Kulkarni #define S_RXF_SYN    21
19253dde7c95SVishal Kulkarni #define V_RXF_SYN(x) ((x) << S_RXF_SYN)
19263dde7c95SVishal Kulkarni #define F_RXF_SYN    V_RXF_SYN(1U)
192756b2bdd1SGireesh Nagabhushana 
19283dde7c95SVishal Kulkarni #define S_RXF_UDP    22
19293dde7c95SVishal Kulkarni #define V_RXF_UDP(x) ((x) << S_RXF_UDP)
19303dde7c95SVishal Kulkarni #define F_RXF_UDP    V_RXF_UDP(1U)
193156b2bdd1SGireesh Nagabhushana 
19323dde7c95SVishal Kulkarni #define S_RXF_TCP    23
19333dde7c95SVishal Kulkarni #define V_RXF_TCP(x) ((x) << S_RXF_TCP)
19343dde7c95SVishal Kulkarni #define F_RXF_TCP    V_RXF_TCP(1U)
193556b2bdd1SGireesh Nagabhushana 
19363dde7c95SVishal Kulkarni #define S_RXF_IP    24
19373dde7c95SVishal Kulkarni #define V_RXF_IP(x) ((x) << S_RXF_IP)
19383dde7c95SVishal Kulkarni #define F_RXF_IP    V_RXF_IP(1U)
193956b2bdd1SGireesh Nagabhushana 
19403dde7c95SVishal Kulkarni #define S_RXF_IP6    25
19413dde7c95SVishal Kulkarni #define V_RXF_IP6(x) ((x) << S_RXF_IP6)
19423dde7c95SVishal Kulkarni #define F_RXF_IP6    V_RXF_IP6(1U)
194356b2bdd1SGireesh Nagabhushana 
19443dde7c95SVishal Kulkarni #define S_RXF_SYN_COOKIE    26
19453dde7c95SVishal Kulkarni #define V_RXF_SYN_COOKIE(x) ((x) << S_RXF_SYN_COOKIE)
19463dde7c95SVishal Kulkarni #define F_RXF_SYN_COOKIE    V_RXF_SYN_COOKIE(1U)
194756b2bdd1SGireesh Nagabhushana 
19483dde7c95SVishal Kulkarni #define S_RXF_FCOE    26
19493dde7c95SVishal Kulkarni #define V_RXF_FCOE(x) ((x) << S_RXF_FCOE)
19503dde7c95SVishal Kulkarni #define F_RXF_FCOE    V_RXF_FCOE(1U)
195156b2bdd1SGireesh Nagabhushana 
19523dde7c95SVishal Kulkarni #define S_RXF_LRO    27
19533dde7c95SVishal Kulkarni #define V_RXF_LRO(x) ((x) << S_RXF_LRO)
19543dde7c95SVishal Kulkarni #define F_RXF_LRO    V_RXF_LRO(1U)
195556b2bdd1SGireesh Nagabhushana 
19563dde7c95SVishal Kulkarni #define S_RX_CHAN    28
19573dde7c95SVishal Kulkarni #define M_RX_CHAN    0xF
19583dde7c95SVishal Kulkarni #define V_RX_CHAN(x) ((x) << S_RX_CHAN)
19593dde7c95SVishal Kulkarni #define G_RX_CHAN(x) (((x) >> S_RX_CHAN) & M_RX_CHAN)
196056b2bdd1SGireesh Nagabhushana 
196156b2bdd1SGireesh Nagabhushana /* rx_pkt.hdr_len fields */
19623dde7c95SVishal Kulkarni #define S_RX_TCPHDR_LEN    0
19633dde7c95SVishal Kulkarni #define M_RX_TCPHDR_LEN    0x3F
19643dde7c95SVishal Kulkarni #define V_RX_TCPHDR_LEN(x) ((x) << S_RX_TCPHDR_LEN)
19653dde7c95SVishal Kulkarni #define G_RX_TCPHDR_LEN(x) (((x) >> S_RX_TCPHDR_LEN) & M_RX_TCPHDR_LEN)
196656b2bdd1SGireesh Nagabhushana 
19673dde7c95SVishal Kulkarni #define S_RX_IPHDR_LEN    6
19683dde7c95SVishal Kulkarni #define M_RX_IPHDR_LEN    0x3FF
19693dde7c95SVishal Kulkarni #define V_RX_IPHDR_LEN(x) ((x) << S_RX_IPHDR_LEN)
19703dde7c95SVishal Kulkarni #define G_RX_IPHDR_LEN(x) (((x) >> S_RX_IPHDR_LEN) & M_RX_IPHDR_LEN)
197156b2bdd1SGireesh Nagabhushana 
197256b2bdd1SGireesh Nagabhushana /* rx_pkt.err_vec fields */
19733dde7c95SVishal Kulkarni #define S_RXERR_OR    0
19743dde7c95SVishal Kulkarni #define V_RXERR_OR(x) ((x) << S_RXERR_OR)
19753dde7c95SVishal Kulkarni #define F_RXERR_OR    V_RXERR_OR(1U)
19763dde7c95SVishal Kulkarni 
19773dde7c95SVishal Kulkarni #define S_RXERR_MAC    1
19783dde7c95SVishal Kulkarni #define V_RXERR_MAC(x) ((x) << S_RXERR_MAC)
19793dde7c95SVishal Kulkarni #define F_RXERR_MAC    V_RXERR_MAC(1U)
19803dde7c95SVishal Kulkarni 
19813dde7c95SVishal Kulkarni #define S_RXERR_IPVERS    2
19823dde7c95SVishal Kulkarni #define V_RXERR_IPVERS(x) ((x) << S_RXERR_IPVERS)
19833dde7c95SVishal Kulkarni #define F_RXERR_IPVERS    V_RXERR_IPVERS(1U)
19843dde7c95SVishal Kulkarni 
19853dde7c95SVishal Kulkarni #define S_RXERR_FRAG    3
19863dde7c95SVishal Kulkarni #define V_RXERR_FRAG(x) ((x) << S_RXERR_FRAG)
19873dde7c95SVishal Kulkarni #define F_RXERR_FRAG    V_RXERR_FRAG(1U)
19883dde7c95SVishal Kulkarni 
19893dde7c95SVishal Kulkarni #define S_RXERR_ATTACK    4
19903dde7c95SVishal Kulkarni #define V_RXERR_ATTACK(x) ((x) << S_RXERR_ATTACK)
19913dde7c95SVishal Kulkarni #define F_RXERR_ATTACK    V_RXERR_ATTACK(1U)
19923dde7c95SVishal Kulkarni 
19933dde7c95SVishal Kulkarni #define S_RXERR_ETHHDR_LEN    5
19943dde7c95SVishal Kulkarni #define V_RXERR_ETHHDR_LEN(x) ((x) << S_RXERR_ETHHDR_LEN)
19953dde7c95SVishal Kulkarni #define F_RXERR_ETHHDR_LEN    V_RXERR_ETHHDR_LEN(1U)
19963dde7c95SVishal Kulkarni 
19973dde7c95SVishal Kulkarni #define S_RXERR_IPHDR_LEN    6
19983dde7c95SVishal Kulkarni #define V_RXERR_IPHDR_LEN(x) ((x) << S_RXERR_IPHDR_LEN)
19993dde7c95SVishal Kulkarni #define F_RXERR_IPHDR_LEN    V_RXERR_IPHDR_LEN(1U)
20003dde7c95SVishal Kulkarni 
20013dde7c95SVishal Kulkarni #define S_RXERR_TCPHDR_LEN    7
20023dde7c95SVishal Kulkarni #define V_RXERR_TCPHDR_LEN(x) ((x) << S_RXERR_TCPHDR_LEN)
20033dde7c95SVishal Kulkarni #define F_RXERR_TCPHDR_LEN    V_RXERR_TCPHDR_LEN(1U)
20043dde7c95SVishal Kulkarni 
20053dde7c95SVishal Kulkarni #define S_RXERR_PKT_LEN    8
20063dde7c95SVishal Kulkarni #define V_RXERR_PKT_LEN(x) ((x) << S_RXERR_PKT_LEN)
20073dde7c95SVishal Kulkarni #define F_RXERR_PKT_LEN    V_RXERR_PKT_LEN(1U)
20083dde7c95SVishal Kulkarni 
20093dde7c95SVishal Kulkarni #define S_RXERR_TCP_OPT    9
20103dde7c95SVishal Kulkarni #define V_RXERR_TCP_OPT(x) ((x) << S_RXERR_TCP_OPT)
20113dde7c95SVishal Kulkarni #define F_RXERR_TCP_OPT    V_RXERR_TCP_OPT(1U)
20123dde7c95SVishal Kulkarni 
20133dde7c95SVishal Kulkarni #define S_RXERR_IPCSUM    12
20143dde7c95SVishal Kulkarni #define V_RXERR_IPCSUM(x) ((x) << S_RXERR_IPCSUM)
20153dde7c95SVishal Kulkarni #define F_RXERR_IPCSUM    V_RXERR_IPCSUM(1U)
20163dde7c95SVishal Kulkarni 
20173dde7c95SVishal Kulkarni #define S_RXERR_CSUM    13
20183dde7c95SVishal Kulkarni #define V_RXERR_CSUM(x) ((x) << S_RXERR_CSUM)
20193dde7c95SVishal Kulkarni #define F_RXERR_CSUM    V_RXERR_CSUM(1U)
20203dde7c95SVishal Kulkarni 
20213dde7c95SVishal Kulkarni #define S_RXERR_PING    14
20223dde7c95SVishal Kulkarni #define V_RXERR_PING(x) ((x) << S_RXERR_PING)
20233dde7c95SVishal Kulkarni #define F_RXERR_PING    V_RXERR_PING(1U)
20243dde7c95SVishal Kulkarni 
20253dde7c95SVishal Kulkarni /* In T6, rx_pkt.err_vec indicates
20263dde7c95SVishal Kulkarni  * RxError Error vector (16b) or
20273dde7c95SVishal Kulkarni  * Encapsulating header length (8b),
20283dde7c95SVishal Kulkarni  * Outer encapsulation type (2b) and
20293dde7c95SVishal Kulkarni  * compressed error vector (6b) if CRxPktEnc is
20303dde7c95SVishal Kulkarni  * enabled in TP_OUT_CONFIG
20313dde7c95SVishal Kulkarni  */
203256b2bdd1SGireesh Nagabhushana 
20333dde7c95SVishal Kulkarni #define S_T6_COMPR_RXERR_VEC    0
20343dde7c95SVishal Kulkarni #define M_T6_COMPR_RXERR_VEC    0x3F
20353dde7c95SVishal Kulkarni #define V_T6_COMPR_RXERR_VEC(x) ((x) << S_T6_COMPR_RXERR_VEC)
20363dde7c95SVishal Kulkarni #define G_T6_COMPR_RXERR_VEC(x) \
20373dde7c95SVishal Kulkarni 		(((x) >> S_T6_COMPR_RXERR_VEC) & M_T6_COMPR_RXERR_VEC)
203856b2bdd1SGireesh Nagabhushana 
20393dde7c95SVishal Kulkarni #define S_T6_COMPR_RXERR_MAC    0
20403dde7c95SVishal Kulkarni #define V_T6_COMPR_RXERR_MAC(x) ((x) << S_T6_COMPR_RXERR_MAC)
20413dde7c95SVishal Kulkarni #define F_T6_COMPR_RXERR_MAC    V_T6_COMPR_RXERR_MAC(1U)
204256b2bdd1SGireesh Nagabhushana 
20433dde7c95SVishal Kulkarni /* Logical OR of RX_ERROR_PKT_LEN, RX_ERROR_TCP_HDR_LEN
20443dde7c95SVishal Kulkarni  * RX_ERROR_IP_HDR_LEN, RX_ERROR_ETH_HDR_LEN
20453dde7c95SVishal Kulkarni  */
20463dde7c95SVishal Kulkarni #define S_T6_COMPR_RXERR_LEN    1
20473dde7c95SVishal Kulkarni #define V_T6_COMPR_RXERR_LEN(x) ((x) << S_T6_COMPR_RXERR_LEN)
20483dde7c95SVishal Kulkarni #define F_T6_COMPR_RXERR_LEN    V_COMPR_T6_RXERR_LEN(1U)
204956b2bdd1SGireesh Nagabhushana 
20503dde7c95SVishal Kulkarni #define S_T6_COMPR_RXERR_TCP_OPT    2
20513dde7c95SVishal Kulkarni #define V_T6_COMPR_RXERR_TCP_OPT(x) ((x) << S_T6_COMPR_RXERR_TCP_OPT)
20523dde7c95SVishal Kulkarni #define F_T6_COMPR_RXERR_TCP_OPT    V_T6_COMPR_RXERR_TCP_OPT(1U)
205356b2bdd1SGireesh Nagabhushana 
20543dde7c95SVishal Kulkarni #define S_T6_COMPR_RXERR_IPV6_EXT    3
20553dde7c95SVishal Kulkarni #define V_T6_COMPR_RXERR_IPV6_EXT(x) ((x) << S_T6_COMPR_RXERR_IPV6_EXT)
20563dde7c95SVishal Kulkarni #define F_T6_COMPR_RXERR_IPV6_EXT    V_T6_COMPR_RXERR_IPV6_EXT(1U)
205756b2bdd1SGireesh Nagabhushana 
20583dde7c95SVishal Kulkarni /* Logical OR of RX_ERROR_CSUM, RX_ERROR_CSIP */
20593dde7c95SVishal Kulkarni #define S_T6_COMPR_RXERR_SUM   4
20603dde7c95SVishal Kulkarni #define V_T6_COMPR_RXERR_SUM(x) ((x) << S_T6_COMPR_RXERR_SUM)
20613dde7c95SVishal Kulkarni #define F_T6_COMPR_RXERR_SUM    V_T6_COMPR_RXERR_SUM(1U)
206256b2bdd1SGireesh Nagabhushana 
20633dde7c95SVishal Kulkarni /* Logical OR of RX_ERROR_FPMA, RX_ERROR_PING_DROP,
20643dde7c95SVishal Kulkarni  * RX_ERROR_ATTACK, RX_ERROR_FRAG,RX_ERROR_IPVERSION
20653dde7c95SVishal Kulkarni  */
20663dde7c95SVishal Kulkarni #define S_T6_COMPR_RXERR_MISC   5
20673dde7c95SVishal Kulkarni #define V_T6_COMPR_RXERR_MISC(x) ((x) << S_T6_COMPR_RXERR_MISC)
20683dde7c95SVishal Kulkarni #define F_T6_COMPR_RXERR_MISC    V_T6_COMPR_RXERR_MISC(1U)
206956b2bdd1SGireesh Nagabhushana 
20703dde7c95SVishal Kulkarni #define S_T6_RX_TNL_TYPE    6
20713dde7c95SVishal Kulkarni #define M_T6_RX_TNL_TYPE    0x3
20723dde7c95SVishal Kulkarni #define V_T6_RX_TNL_TYPE(x) ((x) << S_T6_RX_TNL_TYPE)
20733dde7c95SVishal Kulkarni #define G_T6_RX_TNL_TYPE(x) (((x) >> S_T6_RX_TNL_TYPE) & M_T6_RX_TNL_TYPE)
207456b2bdd1SGireesh Nagabhushana 
20753dde7c95SVishal Kulkarni #define RX_PKT_TNL_TYPE_NVGRE	1
20763dde7c95SVishal Kulkarni #define RX_PKT_TNL_TYPE_VXLAN	2
20773dde7c95SVishal Kulkarni #define RX_PKT_TNL_TYPE_GENEVE	3
207856b2bdd1SGireesh Nagabhushana 
20793dde7c95SVishal Kulkarni #define S_T6_RX_TNLHDR_LEN    8
20803dde7c95SVishal Kulkarni #define M_T6_RX_TNLHDR_LEN    0xFF
20813dde7c95SVishal Kulkarni #define V_T6_RX_TNLHDR_LEN(x) ((x) << S_T6_RX_TNLHDR_LEN)
20823dde7c95SVishal Kulkarni #define G_T6_RX_TNLHDR_LEN(x) (((x) >> S_T6_RX_TNLHDR_LEN) & M_T6_RX_TNLHDR_LEN)
208356b2bdd1SGireesh Nagabhushana 
208456b2bdd1SGireesh Nagabhushana struct cpl_trace_pkt {
208556b2bdd1SGireesh Nagabhushana 	RSS_HDR
208656b2bdd1SGireesh Nagabhushana 	__u8 opcode;
208756b2bdd1SGireesh Nagabhushana 	__u8 intf;
208856b2bdd1SGireesh Nagabhushana #if defined(__LITTLE_ENDIAN_BITFIELD)
208956b2bdd1SGireesh Nagabhushana 	__u8 runt:4;
209056b2bdd1SGireesh Nagabhushana 	__u8 filter_hit:4;
209156b2bdd1SGireesh Nagabhushana 	__u8 :6;
209256b2bdd1SGireesh Nagabhushana 	__u8 err:1;
209356b2bdd1SGireesh Nagabhushana 	__u8 trunc:1;
209456b2bdd1SGireesh Nagabhushana #else
209556b2bdd1SGireesh Nagabhushana 	__u8 filter_hit:4;
209656b2bdd1SGireesh Nagabhushana 	__u8 runt:4;
209756b2bdd1SGireesh Nagabhushana 	__u8 trunc:1;
209856b2bdd1SGireesh Nagabhushana 	__u8 err:1;
209956b2bdd1SGireesh Nagabhushana 	__u8 :6;
210056b2bdd1SGireesh Nagabhushana #endif
210156b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
210256b2bdd1SGireesh Nagabhushana 	__be16 len;
210356b2bdd1SGireesh Nagabhushana 	__be64 tstamp;
210456b2bdd1SGireesh Nagabhushana };
210556b2bdd1SGireesh Nagabhushana 
2106de483253SVishal Kulkarni struct cpl_t5_trace_pkt {
2107de483253SVishal Kulkarni 	RSS_HDR
2108de483253SVishal Kulkarni 	__u8 opcode;
2109de483253SVishal Kulkarni 	__u8 intf;
2110de483253SVishal Kulkarni #if defined(__LITTLE_ENDIAN_BITFIELD)
2111de483253SVishal Kulkarni 	__u8 runt:4;
2112de483253SVishal Kulkarni 	__u8 filter_hit:4;
2113de483253SVishal Kulkarni 	__u8 :6;
2114de483253SVishal Kulkarni 	__u8 err:1;
2115de483253SVishal Kulkarni 	__u8 trunc:1;
2116de483253SVishal Kulkarni #else
2117de483253SVishal Kulkarni 	__u8 filter_hit:4;
2118de483253SVishal Kulkarni 	__u8 runt:4;
2119de483253SVishal Kulkarni 	__u8 trunc:1;
2120de483253SVishal Kulkarni 	__u8 err:1;
2121de483253SVishal Kulkarni 	__u8 :6;
2122de483253SVishal Kulkarni #endif
2123de483253SVishal Kulkarni 	__be16 rsvd;
2124de483253SVishal Kulkarni 	__be16 len;
2125de483253SVishal Kulkarni 	__be64 tstamp;
2126de483253SVishal Kulkarni 	__be64 rsvd1;
2127de483253SVishal Kulkarni };
2128de483253SVishal Kulkarni 
212956b2bdd1SGireesh Nagabhushana struct cpl_rte_delete_req {
213056b2bdd1SGireesh Nagabhushana 	WR_HDR;
213156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
213256b2bdd1SGireesh Nagabhushana 	__be32 params;
213356b2bdd1SGireesh Nagabhushana };
213456b2bdd1SGireesh Nagabhushana 
213556b2bdd1SGireesh Nagabhushana /* {cpl_rte_delete_req, cpl_rte_read_req}.params fields */
21363dde7c95SVishal Kulkarni #define S_RTE_REQ_LUT_IX    8
21373dde7c95SVishal Kulkarni #define M_RTE_REQ_LUT_IX    0x7FF
21383dde7c95SVishal Kulkarni #define V_RTE_REQ_LUT_IX(x) ((x) << S_RTE_REQ_LUT_IX)
21393dde7c95SVishal Kulkarni #define G_RTE_REQ_LUT_IX(x) (((x) >> S_RTE_REQ_LUT_IX) & M_RTE_REQ_LUT_IX)
214056b2bdd1SGireesh Nagabhushana 
21413dde7c95SVishal Kulkarni #define S_RTE_REQ_LUT_BASE    19
21423dde7c95SVishal Kulkarni #define M_RTE_REQ_LUT_BASE    0x7FF
21433dde7c95SVishal Kulkarni #define V_RTE_REQ_LUT_BASE(x) ((x) << S_RTE_REQ_LUT_BASE)
21443dde7c95SVishal Kulkarni #define G_RTE_REQ_LUT_BASE(x) (((x) >> S_RTE_REQ_LUT_BASE) & M_RTE_REQ_LUT_BASE)
214556b2bdd1SGireesh Nagabhushana 
21463dde7c95SVishal Kulkarni #define S_RTE_READ_REQ_SELECT    31
21473dde7c95SVishal Kulkarni #define V_RTE_READ_REQ_SELECT(x) ((x) << S_RTE_READ_REQ_SELECT)
21483dde7c95SVishal Kulkarni #define F_RTE_READ_REQ_SELECT    V_RTE_READ_REQ_SELECT(1U)
214956b2bdd1SGireesh Nagabhushana 
215056b2bdd1SGireesh Nagabhushana struct cpl_rte_delete_rpl {
215156b2bdd1SGireesh Nagabhushana 	RSS_HDR
215256b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
215356b2bdd1SGireesh Nagabhushana 	__u8 status;
215456b2bdd1SGireesh Nagabhushana 	__u8 rsvd[3];
215556b2bdd1SGireesh Nagabhushana };
215656b2bdd1SGireesh Nagabhushana 
215756b2bdd1SGireesh Nagabhushana struct cpl_rte_write_req {
215856b2bdd1SGireesh Nagabhushana 	WR_HDR;
215956b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
216056b2bdd1SGireesh Nagabhushana 	__u32 write_sel;
216156b2bdd1SGireesh Nagabhushana 	__be32 lut_params;
216256b2bdd1SGireesh Nagabhushana 	__be32 l2t_idx;
216356b2bdd1SGireesh Nagabhushana 	__be32 netmask;
216456b2bdd1SGireesh Nagabhushana 	__be32 faddr;
216556b2bdd1SGireesh Nagabhushana };
216656b2bdd1SGireesh Nagabhushana 
216756b2bdd1SGireesh Nagabhushana /* cpl_rte_write_req.write_sel fields */
21683dde7c95SVishal Kulkarni #define S_RTE_WR_L2TIDX    31
21693dde7c95SVishal Kulkarni #define V_RTE_WR_L2TIDX(x) ((x) << S_RTE_WR_L2TIDX)
21703dde7c95SVishal Kulkarni #define F_RTE_WR_L2TIDX    V_RTE_WR_L2TIDX(1U)
217156b2bdd1SGireesh Nagabhushana 
21723dde7c95SVishal Kulkarni #define S_RTE_WR_FADDR    30
21733dde7c95SVishal Kulkarni #define V_RTE_WR_FADDR(x) ((x) << S_RTE_WR_FADDR)
21743dde7c95SVishal Kulkarni #define F_RTE_WR_FADDR    V_RTE_WR_FADDR(1U)
217556b2bdd1SGireesh Nagabhushana 
217656b2bdd1SGireesh Nagabhushana /* cpl_rte_write_req.lut_params fields */
21773dde7c95SVishal Kulkarni #define S_RTE_WR_LUT_IX    10
21783dde7c95SVishal Kulkarni #define M_RTE_WR_LUT_IX    0x7FF
21793dde7c95SVishal Kulkarni #define V_RTE_WR_LUT_IX(x) ((x) << S_RTE_WR_LUT_IX)
21803dde7c95SVishal Kulkarni #define G_RTE_WR_LUT_IX(x) (((x) >> S_RTE_WR_LUT_IX) & M_RTE_WR_LUT_IX)
218156b2bdd1SGireesh Nagabhushana 
21823dde7c95SVishal Kulkarni #define S_RTE_WR_LUT_BASE    21
21833dde7c95SVishal Kulkarni #define M_RTE_WR_LUT_BASE    0x7FF
21843dde7c95SVishal Kulkarni #define V_RTE_WR_LUT_BASE(x) ((x) << S_RTE_WR_LUT_BASE)
21853dde7c95SVishal Kulkarni #define G_RTE_WR_LUT_BASE(x) (((x) >> S_RTE_WR_LUT_BASE) & M_RTE_WR_LUT_BASE)
218656b2bdd1SGireesh Nagabhushana 
218756b2bdd1SGireesh Nagabhushana struct cpl_rte_write_rpl {
218856b2bdd1SGireesh Nagabhushana 	RSS_HDR
218956b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
219056b2bdd1SGireesh Nagabhushana 	__u8 status;
219156b2bdd1SGireesh Nagabhushana 	__u8 rsvd[3];
219256b2bdd1SGireesh Nagabhushana };
219356b2bdd1SGireesh Nagabhushana 
219456b2bdd1SGireesh Nagabhushana struct cpl_rte_read_req {
219556b2bdd1SGireesh Nagabhushana 	WR_HDR;
219656b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
219756b2bdd1SGireesh Nagabhushana 	__be32 params;
219856b2bdd1SGireesh Nagabhushana };
219956b2bdd1SGireesh Nagabhushana 
220056b2bdd1SGireesh Nagabhushana struct cpl_rte_read_rpl {
220156b2bdd1SGireesh Nagabhushana 	RSS_HDR
220256b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
220356b2bdd1SGireesh Nagabhushana 	__u8 status;
220456b2bdd1SGireesh Nagabhushana 	__u8 rsvd;
220556b2bdd1SGireesh Nagabhushana 	__be16 l2t_idx;
220656b2bdd1SGireesh Nagabhushana #if defined(__LITTLE_ENDIAN_BITFIELD)
220756b2bdd1SGireesh Nagabhushana 	__u32 :30;
220856b2bdd1SGireesh Nagabhushana 	__u32 select:1;
220956b2bdd1SGireesh Nagabhushana #else
221056b2bdd1SGireesh Nagabhushana 	__u32 select:1;
221156b2bdd1SGireesh Nagabhushana 	__u32 :30;
221256b2bdd1SGireesh Nagabhushana #endif
221356b2bdd1SGireesh Nagabhushana 	__be32 addr;
221456b2bdd1SGireesh Nagabhushana };
221556b2bdd1SGireesh Nagabhushana 
221656b2bdd1SGireesh Nagabhushana struct cpl_l2t_write_req {
221756b2bdd1SGireesh Nagabhushana 	WR_HDR;
221856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
221956b2bdd1SGireesh Nagabhushana 	__be16 params;
222056b2bdd1SGireesh Nagabhushana 	__be16 l2t_idx;
222156b2bdd1SGireesh Nagabhushana 	__be16 vlan;
222256b2bdd1SGireesh Nagabhushana 	__u8   dst_mac[6];
222356b2bdd1SGireesh Nagabhushana };
222456b2bdd1SGireesh Nagabhushana 
222556b2bdd1SGireesh Nagabhushana /* cpl_l2t_write_req.params fields */
22263dde7c95SVishal Kulkarni #define S_L2T_W_INFO    2
22273dde7c95SVishal Kulkarni #define M_L2T_W_INFO    0x3F
22283dde7c95SVishal Kulkarni #define V_L2T_W_INFO(x) ((x) << S_L2T_W_INFO)
22293dde7c95SVishal Kulkarni #define G_L2T_W_INFO(x) (((x) >> S_L2T_W_INFO) & M_L2T_W_INFO)
223056b2bdd1SGireesh Nagabhushana 
22313dde7c95SVishal Kulkarni #define S_L2T_W_PORT    8
2232de483253SVishal Kulkarni #define M_L2T_W_PORT    0x3
22333dde7c95SVishal Kulkarni #define V_L2T_W_PORT(x) ((x) << S_L2T_W_PORT)
22343dde7c95SVishal Kulkarni #define G_L2T_W_PORT(x) (((x) >> S_L2T_W_PORT) & M_L2T_W_PORT)
223556b2bdd1SGireesh Nagabhushana 
2236de483253SVishal Kulkarni #define S_L2T_W_LPBK    10
2237de483253SVishal Kulkarni #define V_L2T_W_LPBK(x) ((x) << S_L2T_W_LPBK)
2238de483253SVishal Kulkarni #define F_L2T_W_PKBK    V_L2T_W_LPBK(1U)
2239de483253SVishal Kulkarni 
22403dde7c95SVishal Kulkarni #define S_L2T_W_ARPMISS         11
22413dde7c95SVishal Kulkarni #define V_L2T_W_ARPMISS(x)      ((x) << S_L2T_W_ARPMISS)
22423dde7c95SVishal Kulkarni #define F_L2T_W_ARPMISS         V_L2T_W_ARPMISS(1U)
22433dde7c95SVishal Kulkarni 
22443dde7c95SVishal Kulkarni #define S_L2T_W_NOREPLY    15
22453dde7c95SVishal Kulkarni #define V_L2T_W_NOREPLY(x) ((x) << S_L2T_W_NOREPLY)
22463dde7c95SVishal Kulkarni #define F_L2T_W_NOREPLY    V_L2T_W_NOREPLY(1U)
22473dde7c95SVishal Kulkarni 
2248de483253SVishal Kulkarni 
22493dde7c95SVishal Kulkarni /* cpl_l2t_write_req.vlan fields */
22503dde7c95SVishal Kulkarni #define S_L2T_VLANTAG    0
22513dde7c95SVishal Kulkarni #define M_L2T_VLANTAG    0xFFF
22523dde7c95SVishal Kulkarni #define V_L2T_VLANTAG(x) ((x) << S_L2T_VLANTAG)
22533dde7c95SVishal Kulkarni #define G_L2T_VLANTAG(x) (((x) >> S_L2T_VLANTAG) & M_L2T_VLANTAG)
225456b2bdd1SGireesh Nagabhushana 
22553dde7c95SVishal Kulkarni #define S_L2T_VLANPRIO    13
22563dde7c95SVishal Kulkarni #define M_L2T_VLANPRIO    0x7
22573dde7c95SVishal Kulkarni #define V_L2T_VLANPRIO(x) ((x) << S_L2T_VLANPRIO)
22583dde7c95SVishal Kulkarni #define G_L2T_VLANPRIO(x) (((x) >> S_L2T_VLANPRIO) & M_L2T_VLANPRIO)
22593dde7c95SVishal Kulkarni 
22603dde7c95SVishal Kulkarni #define CPL_L2T_VLAN_NONE 0xfff
2261de483253SVishal Kulkarni 
226256b2bdd1SGireesh Nagabhushana struct cpl_l2t_write_rpl {
226356b2bdd1SGireesh Nagabhushana 	RSS_HDR
226456b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
226556b2bdd1SGireesh Nagabhushana 	__u8 status;
226656b2bdd1SGireesh Nagabhushana 	__u8 rsvd[3];
226756b2bdd1SGireesh Nagabhushana };
226856b2bdd1SGireesh Nagabhushana 
226956b2bdd1SGireesh Nagabhushana struct cpl_l2t_read_req {
227056b2bdd1SGireesh Nagabhushana 	WR_HDR;
227156b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
227256b2bdd1SGireesh Nagabhushana 	__be32 l2t_idx;
227356b2bdd1SGireesh Nagabhushana };
227456b2bdd1SGireesh Nagabhushana 
227556b2bdd1SGireesh Nagabhushana struct cpl_l2t_read_rpl {
227656b2bdd1SGireesh Nagabhushana 	RSS_HDR
227756b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
227856b2bdd1SGireesh Nagabhushana 	__u8 status;
227956b2bdd1SGireesh Nagabhushana #if defined(__LITTLE_ENDIAN_BITFIELD)
228056b2bdd1SGireesh Nagabhushana 	__u8 :4;
228156b2bdd1SGireesh Nagabhushana 	__u8 iff:4;
228256b2bdd1SGireesh Nagabhushana #else
228356b2bdd1SGireesh Nagabhushana 	__u8 iff:4;
228456b2bdd1SGireesh Nagabhushana 	__u8 :4;
228556b2bdd1SGireesh Nagabhushana #endif
228656b2bdd1SGireesh Nagabhushana 	__be16 vlan;
228756b2bdd1SGireesh Nagabhushana 	__be16 info;
228856b2bdd1SGireesh Nagabhushana 	__u8 dst_mac[6];
228956b2bdd1SGireesh Nagabhushana };
229056b2bdd1SGireesh Nagabhushana 
22913dde7c95SVishal Kulkarni struct cpl_srq_table_req {
22923dde7c95SVishal Kulkarni 	WR_HDR;
22933dde7c95SVishal Kulkarni 	union opcode_tid ot;
22943dde7c95SVishal Kulkarni 	__u8 status;
22953dde7c95SVishal Kulkarni 	__u8 rsvd[2];
22963dde7c95SVishal Kulkarni 	__u8 idx;
22973dde7c95SVishal Kulkarni 	__be64 rsvd_pdid;
22983dde7c95SVishal Kulkarni 	__be32 qlen_qbase;
22993dde7c95SVishal Kulkarni 	__be16 cur_msn;
23003dde7c95SVishal Kulkarni 	__be16 max_msn;
23013dde7c95SVishal Kulkarni };
23023dde7c95SVishal Kulkarni 
23033dde7c95SVishal Kulkarni struct cpl_srq_table_rpl {
23043dde7c95SVishal Kulkarni 	RSS_HDR
23053dde7c95SVishal Kulkarni 	union opcode_tid ot;
23063dde7c95SVishal Kulkarni 	__u8 status;
23073dde7c95SVishal Kulkarni 	__u8 rsvd[2];
23083dde7c95SVishal Kulkarni 	__u8 idx;
23093dde7c95SVishal Kulkarni 	__be64 rsvd_pdid;
23103dde7c95SVishal Kulkarni 	__be32 qlen_qbase;
23113dde7c95SVishal Kulkarni 	__be16 cur_msn;
23123dde7c95SVishal Kulkarni 	__be16 max_msn;
23133dde7c95SVishal Kulkarni };
23143dde7c95SVishal Kulkarni 
23153dde7c95SVishal Kulkarni /* cpl_srq_table_{req,rpl}.params fields */
23163dde7c95SVishal Kulkarni #define S_SRQT_QLEN   28
23173dde7c95SVishal Kulkarni #define M_SRQT_QLEN   0xF
23183dde7c95SVishal Kulkarni #define V_SRQT_QLEN(x) ((x) << S_SRQT_QLEN)
23193dde7c95SVishal Kulkarni #define G_SRQT_QLEN(x) (((x) >> S_SRQT_QLEN) & M_SRQT_QLEN)
23203dde7c95SVishal Kulkarni 
23213dde7c95SVishal Kulkarni #define S_SRQT_QBASE    0
23223dde7c95SVishal Kulkarni #define M_SRQT_QBASE   0x3FFFFFF
23233dde7c95SVishal Kulkarni #define V_SRQT_QBASE(x) ((x) << S_SRQT_QBASE)
23243dde7c95SVishal Kulkarni #define G_SRQT_QBASE(x) (((x) >> S_SRQT_QBASE) & M_SRQT_QBASE)
23253dde7c95SVishal Kulkarni 
23263dde7c95SVishal Kulkarni #define S_SRQT_PDID    0
23273dde7c95SVishal Kulkarni #define M_SRQT_PDID   0xFF
23283dde7c95SVishal Kulkarni #define V_SRQT_PDID(x) ((x) << S_SRQT_PDID)
23293dde7c95SVishal Kulkarni #define G_SRQT_PDID(x) (((x) >> S_SRQT_PDID) & M_SRQT_PDID)
23303dde7c95SVishal Kulkarni 
23313dde7c95SVishal Kulkarni #define S_SRQT_IDX    0
23323dde7c95SVishal Kulkarni #define M_SRQT_IDX    0xF
23333dde7c95SVishal Kulkarni #define V_SRQT_IDX(x) ((x) << S_SRQT_IDX)
23343dde7c95SVishal Kulkarni #define G_SRQT_IDX(x) (((x) >> S_SRQT_IDX) & M_SRQT_IDX)
23353dde7c95SVishal Kulkarni 
233656b2bdd1SGireesh Nagabhushana struct cpl_smt_write_req {
233756b2bdd1SGireesh Nagabhushana 	WR_HDR;
233856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
233956b2bdd1SGireesh Nagabhushana 	__be32 params;
234056b2bdd1SGireesh Nagabhushana 	__be16 pfvf1;
234156b2bdd1SGireesh Nagabhushana 	__u8   src_mac1[6];
234256b2bdd1SGireesh Nagabhushana 	__be16 pfvf0;
234356b2bdd1SGireesh Nagabhushana 	__u8   src_mac0[6];
234456b2bdd1SGireesh Nagabhushana };
234556b2bdd1SGireesh Nagabhushana 
23463dde7c95SVishal Kulkarni struct cpl_t6_smt_write_req {
23473dde7c95SVishal Kulkarni 	WR_HDR;
23483dde7c95SVishal Kulkarni 	union opcode_tid ot;
23493dde7c95SVishal Kulkarni 	__be32 params;
23503dde7c95SVishal Kulkarni 	__be64 tag;
23513dde7c95SVishal Kulkarni 	__be16 pfvf0;
23523dde7c95SVishal Kulkarni 	__u8   src_mac0[6];
23533dde7c95SVishal Kulkarni 	__be32 local_ip;
23543dde7c95SVishal Kulkarni 	__be32 rsvd;
23553dde7c95SVishal Kulkarni };
23563dde7c95SVishal Kulkarni 
2357de483253SVishal Kulkarni struct cpl_smt_write_rpl {
2358de483253SVishal Kulkarni 	RSS_HDR
2359de483253SVishal Kulkarni 	union opcode_tid ot;
2360de483253SVishal Kulkarni 	__u8 status;
2361de483253SVishal Kulkarni 	__u8 rsvd[3];
2362de483253SVishal Kulkarni };
2363de483253SVishal Kulkarni 
2364de483253SVishal Kulkarni struct cpl_smt_read_req {
2365de483253SVishal Kulkarni 	WR_HDR;
2366de483253SVishal Kulkarni 	union opcode_tid ot;
2367de483253SVishal Kulkarni 	__be32 params;
2368de483253SVishal Kulkarni };
2369de483253SVishal Kulkarni 
2370de483253SVishal Kulkarni struct cpl_smt_read_rpl {
2371de483253SVishal Kulkarni 	RSS_HDR
2372de483253SVishal Kulkarni 	union opcode_tid ot;
2373de483253SVishal Kulkarni 	__u8   status;
2374de483253SVishal Kulkarni 	__u8   ovlan_idx;
2375de483253SVishal Kulkarni 	__be16 rsvd;
2376de483253SVishal Kulkarni 	__be16 pfvf1;
2377de483253SVishal Kulkarni 	__u8   src_mac1[6];
2378de483253SVishal Kulkarni 	__be16 pfvf0;
2379de483253SVishal Kulkarni 	__u8   src_mac0[6];
2380de483253SVishal Kulkarni };
2381de483253SVishal Kulkarni 
238256b2bdd1SGireesh Nagabhushana /* cpl_smt_{read,write}_req.params fields */
23833dde7c95SVishal Kulkarni #define S_SMTW_OVLAN_IDX    16
23843dde7c95SVishal Kulkarni #define M_SMTW_OVLAN_IDX    0xF
23853dde7c95SVishal Kulkarni #define V_SMTW_OVLAN_IDX(x) ((x) << S_SMTW_OVLAN_IDX)
23863dde7c95SVishal Kulkarni #define G_SMTW_OVLAN_IDX(x) (((x) >> S_SMTW_OVLAN_IDX) & M_SMTW_OVLAN_IDX)
238756b2bdd1SGireesh Nagabhushana 
23883dde7c95SVishal Kulkarni #define S_SMTW_IDX    20
23893dde7c95SVishal Kulkarni #define M_SMTW_IDX    0x7F
23903dde7c95SVishal Kulkarni #define V_SMTW_IDX(x) ((x) << S_SMTW_IDX)
23913dde7c95SVishal Kulkarni #define G_SMTW_IDX(x) (((x) >> S_SMTW_IDX) & M_SMTW_IDX)
239256b2bdd1SGireesh Nagabhushana 
23933dde7c95SVishal Kulkarni #define M_T6_SMTW_IDX    0xFF
23943dde7c95SVishal Kulkarni #define G_T6_SMTW_IDX(x) (((x) >> S_SMTW_IDX) & M_T6_SMTW_IDX)
23953dde7c95SVishal Kulkarni 
23963dde7c95SVishal Kulkarni #define S_SMTW_NORPL    31
23973dde7c95SVishal Kulkarni #define V_SMTW_NORPL(x) ((x) << S_SMTW_NORPL)
23983dde7c95SVishal Kulkarni #define F_SMTW_NORPL    V_SMTW_NORPL(1U)
239956b2bdd1SGireesh Nagabhushana 
240056b2bdd1SGireesh Nagabhushana /* cpl_smt_{read,write}_req.pfvf? fields */
24013dde7c95SVishal Kulkarni #define S_SMTW_VF    0
24023dde7c95SVishal Kulkarni #define M_SMTW_VF    0xFF
24033dde7c95SVishal Kulkarni #define V_SMTW_VF(x) ((x) << S_SMTW_VF)
24043dde7c95SVishal Kulkarni #define G_SMTW_VF(x) (((x) >> S_SMTW_VF) & M_SMTW_VF)
240556b2bdd1SGireesh Nagabhushana 
24063dde7c95SVishal Kulkarni #define S_SMTW_PF    8
24073dde7c95SVishal Kulkarni #define M_SMTW_PF    0x7
24083dde7c95SVishal Kulkarni #define V_SMTW_PF(x) ((x) << S_SMTW_PF)
24093dde7c95SVishal Kulkarni #define G_SMTW_PF(x) (((x) >> S_SMTW_PF) & M_SMTW_PF)
241056b2bdd1SGireesh Nagabhushana 
24113dde7c95SVishal Kulkarni #define S_SMTW_VF_VLD    11
24123dde7c95SVishal Kulkarni #define V_SMTW_VF_VLD(x) ((x) << S_SMTW_VF_VLD)
24133dde7c95SVishal Kulkarni #define F_SMTW_VF_VLD    V_SMTW_VF_VLD(1U)
241456b2bdd1SGireesh Nagabhushana 
2415de483253SVishal Kulkarni struct cpl_tag_write_req {
2416de483253SVishal Kulkarni 	WR_HDR;
2417de483253SVishal Kulkarni 	union opcode_tid ot;
2418de483253SVishal Kulkarni 	__be32 params;
2419de483253SVishal Kulkarni 	__be64 tag_val;
2420de483253SVishal Kulkarni };
2421de483253SVishal Kulkarni 
2422de483253SVishal Kulkarni struct cpl_tag_write_rpl {
242356b2bdd1SGireesh Nagabhushana 	RSS_HDR
242456b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
242556b2bdd1SGireesh Nagabhushana 	__u8 status;
2426de483253SVishal Kulkarni 	__u8 rsvd[2];
2427de483253SVishal Kulkarni 	__u8 idx;
242856b2bdd1SGireesh Nagabhushana };
242956b2bdd1SGireesh Nagabhushana 
2430de483253SVishal Kulkarni struct cpl_tag_read_req {
243156b2bdd1SGireesh Nagabhushana 	WR_HDR;
243256b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
243356b2bdd1SGireesh Nagabhushana 	__be32 params;
243456b2bdd1SGireesh Nagabhushana };
243556b2bdd1SGireesh Nagabhushana 
2436de483253SVishal Kulkarni struct cpl_tag_read_rpl {
243756b2bdd1SGireesh Nagabhushana 	RSS_HDR
243856b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
243956b2bdd1SGireesh Nagabhushana 	__u8   status;
2440de483253SVishal Kulkarni #if defined(__LITTLE_ENDIAN_BITFIELD)
2441de483253SVishal Kulkarni 	__u8 :4;
2442de483253SVishal Kulkarni 	__u8 tag_len:1;
2443de483253SVishal Kulkarni 	__u8 :2;
2444de483253SVishal Kulkarni 	__u8 ins_enable:1;
2445de483253SVishal Kulkarni #else
2446de483253SVishal Kulkarni 	__u8 ins_enable:1;
2447de483253SVishal Kulkarni 	__u8 :2;
2448de483253SVishal Kulkarni 	__u8 tag_len:1;
2449de483253SVishal Kulkarni 	__u8 :4;
2450de483253SVishal Kulkarni #endif
2451de483253SVishal Kulkarni 	__u8   rsvd;
2452de483253SVishal Kulkarni 	__u8   tag_idx;
2453de483253SVishal Kulkarni 	__be64 tag_val;
245456b2bdd1SGireesh Nagabhushana };
245556b2bdd1SGireesh Nagabhushana 
2456de483253SVishal Kulkarni /* cpl_tag{read,write}_req.params fields */
2457de483253SVishal Kulkarni #define S_TAGW_IDX    0
2458de483253SVishal Kulkarni #define M_TAGW_IDX    0x7F
2459de483253SVishal Kulkarni #define V_TAGW_IDX(x) ((x) << S_TAGW_IDX)
2460de483253SVishal Kulkarni #define G_TAGW_IDX(x) (((x) >> S_TAGW_IDX) & M_TAGW_IDX)
2461de483253SVishal Kulkarni 
2462de483253SVishal Kulkarni #define S_TAGW_LEN    20
2463de483253SVishal Kulkarni #define V_TAGW_LEN(x) ((x) << S_TAGW_LEN)
2464de483253SVishal Kulkarni #define F_TAGW_LEN    V_TAGW_LEN(1U)
2465de483253SVishal Kulkarni 
2466de483253SVishal Kulkarni #define S_TAGW_INS_ENABLE    23
2467de483253SVishal Kulkarni #define V_TAGW_INS_ENABLE(x) ((x) << S_TAGW_INS_ENABLE)
2468de483253SVishal Kulkarni #define F_TAGW_INS_ENABLE    V_TAGW_INS_ENABLE(1U)
2469de483253SVishal Kulkarni 
2470de483253SVishal Kulkarni #define S_TAGW_NORPL    31
2471de483253SVishal Kulkarni #define V_TAGW_NORPL(x) ((x) << S_TAGW_NORPL)
2472de483253SVishal Kulkarni #define F_TAGW_NORPL    V_TAGW_NORPL(1U)
2473de483253SVishal Kulkarni 
247456b2bdd1SGireesh Nagabhushana struct cpl_barrier {
247556b2bdd1SGireesh Nagabhushana 	WR_HDR;
247656b2bdd1SGireesh Nagabhushana 	__u8 opcode;
247756b2bdd1SGireesh Nagabhushana 	__u8 chan_map;
247856b2bdd1SGireesh Nagabhushana 	__be16 rsvd0;
247956b2bdd1SGireesh Nagabhushana 	__be32 rsvd1;
248056b2bdd1SGireesh Nagabhushana };
248156b2bdd1SGireesh Nagabhushana 
248256b2bdd1SGireesh Nagabhushana /* cpl_barrier.chan_map fields */
24833dde7c95SVishal Kulkarni #define S_CHAN_MAP    4
24843dde7c95SVishal Kulkarni #define M_CHAN_MAP    0xF
24853dde7c95SVishal Kulkarni #define V_CHAN_MAP(x) ((x) << S_CHAN_MAP)
24863dde7c95SVishal Kulkarni #define G_CHAN_MAP(x) (((x) >> S_CHAN_MAP) & M_CHAN_MAP)
248756b2bdd1SGireesh Nagabhushana 
248856b2bdd1SGireesh Nagabhushana struct cpl_error {
248956b2bdd1SGireesh Nagabhushana 	RSS_HDR
249056b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
249156b2bdd1SGireesh Nagabhushana 	__be32 error;
249256b2bdd1SGireesh Nagabhushana };
249356b2bdd1SGireesh Nagabhushana 
249456b2bdd1SGireesh Nagabhushana struct cpl_hit_notify {
249556b2bdd1SGireesh Nagabhushana 	RSS_HDR
249656b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
249756b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
249856b2bdd1SGireesh Nagabhushana 	__be32 info;
249956b2bdd1SGireesh Nagabhushana 	__be32 reason;
250056b2bdd1SGireesh Nagabhushana };
250156b2bdd1SGireesh Nagabhushana 
250256b2bdd1SGireesh Nagabhushana struct cpl_pkt_notify {
250356b2bdd1SGireesh Nagabhushana 	RSS_HDR
250456b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
250556b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
250656b2bdd1SGireesh Nagabhushana 	__be16 len;
250756b2bdd1SGireesh Nagabhushana 	__be32 info;
250856b2bdd1SGireesh Nagabhushana 	__be32 reason;
250956b2bdd1SGireesh Nagabhushana };
251056b2bdd1SGireesh Nagabhushana 
251156b2bdd1SGireesh Nagabhushana /* cpl_{hit,pkt}_notify.info fields */
25123dde7c95SVishal Kulkarni #define S_NTFY_MAC_IDX    0
25133dde7c95SVishal Kulkarni #define M_NTFY_MAC_IDX    0x1FF
25143dde7c95SVishal Kulkarni #define V_NTFY_MAC_IDX(x) ((x) << S_NTFY_MAC_IDX)
25153dde7c95SVishal Kulkarni #define G_NTFY_MAC_IDX(x) (((x) >> S_NTFY_MAC_IDX) & M_NTFY_MAC_IDX)
25163dde7c95SVishal Kulkarni 
25173dde7c95SVishal Kulkarni #define S_NTFY_INTF    10
25183dde7c95SVishal Kulkarni #define M_NTFY_INTF    0xF
25193dde7c95SVishal Kulkarni #define V_NTFY_INTF(x) ((x) << S_NTFY_INTF)
25203dde7c95SVishal Kulkarni #define G_NTFY_INTF(x) (((x) >> S_NTFY_INTF) & M_NTFY_INTF)
25213dde7c95SVishal Kulkarni 
25223dde7c95SVishal Kulkarni #define S_NTFY_TCPHDR_LEN    14
25233dde7c95SVishal Kulkarni #define M_NTFY_TCPHDR_LEN    0xF
25243dde7c95SVishal Kulkarni #define V_NTFY_TCPHDR_LEN(x) ((x) << S_NTFY_TCPHDR_LEN)
25253dde7c95SVishal Kulkarni #define G_NTFY_TCPHDR_LEN(x) (((x) >> S_NTFY_TCPHDR_LEN) & M_NTFY_TCPHDR_LEN)
25263dde7c95SVishal Kulkarni 
25273dde7c95SVishal Kulkarni #define S_NTFY_IPHDR_LEN    18
25283dde7c95SVishal Kulkarni #define M_NTFY_IPHDR_LEN    0x1FF
25293dde7c95SVishal Kulkarni #define V_NTFY_IPHDR_LEN(x) ((x) << S_NTFY_IPHDR_LEN)
25303dde7c95SVishal Kulkarni #define G_NTFY_IPHDR_LEN(x) (((x) >> S_NTFY_IPHDR_LEN) & M_NTFY_IPHDR_LEN)
25313dde7c95SVishal Kulkarni 
25323dde7c95SVishal Kulkarni #define S_NTFY_ETHHDR_LEN    27
25333dde7c95SVishal Kulkarni #define M_NTFY_ETHHDR_LEN    0x1F
25343dde7c95SVishal Kulkarni #define V_NTFY_ETHHDR_LEN(x) ((x) << S_NTFY_ETHHDR_LEN)
25353dde7c95SVishal Kulkarni #define G_NTFY_ETHHDR_LEN(x) (((x) >> S_NTFY_ETHHDR_LEN) & M_NTFY_ETHHDR_LEN)
253656b2bdd1SGireesh Nagabhushana 
2537de483253SVishal Kulkarni #define S_NTFY_T5_IPHDR_LEN    18
2538de483253SVishal Kulkarni #define M_NTFY_T5_IPHDR_LEN    0xFF
2539de483253SVishal Kulkarni #define V_NTFY_T5_IPHDR_LEN(x) ((x) << S_NTFY_T5_IPHDR_LEN)
2540de483253SVishal Kulkarni #define G_NTFY_T5_IPHDR_LEN(x) (((x) >> S_NTFY_T5_IPHDR_LEN) & M_NTFY_T5_IPHDR_LEN)
2541de483253SVishal Kulkarni 
2542de483253SVishal Kulkarni #define S_NTFY_T5_ETHHDR_LEN    26
2543de483253SVishal Kulkarni #define M_NTFY_T5_ETHHDR_LEN    0x3F
2544de483253SVishal Kulkarni #define V_NTFY_T5_ETHHDR_LEN(x) ((x) << S_NTFY_T5_ETHHDR_LEN)
2545de483253SVishal Kulkarni #define G_NTFY_T5_ETHHDR_LEN(x) (((x) >> S_NTFY_T5_ETHHDR_LEN) & M_NTFY_T5_ETHHDR_LEN)
2546de483253SVishal Kulkarni 
254756b2bdd1SGireesh Nagabhushana struct cpl_rdma_terminate {
254856b2bdd1SGireesh Nagabhushana 	RSS_HDR
254956b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
255056b2bdd1SGireesh Nagabhushana 	__be16 rsvd;
255156b2bdd1SGireesh Nagabhushana 	__be16 len;
255256b2bdd1SGireesh Nagabhushana };
255356b2bdd1SGireesh Nagabhushana 
255456b2bdd1SGireesh Nagabhushana struct cpl_set_le_req {
255556b2bdd1SGireesh Nagabhushana 	WR_HDR;
255656b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
255756b2bdd1SGireesh Nagabhushana 	__be16 reply_ctrl;
255856b2bdd1SGireesh Nagabhushana 	__be16 params;
255956b2bdd1SGireesh Nagabhushana 	__be64 mask_hi;
256056b2bdd1SGireesh Nagabhushana 	__be64 mask_lo;
256156b2bdd1SGireesh Nagabhushana 	__be64 val_hi;
256256b2bdd1SGireesh Nagabhushana 	__be64 val_lo;
256356b2bdd1SGireesh Nagabhushana };
256456b2bdd1SGireesh Nagabhushana 
256556b2bdd1SGireesh Nagabhushana /* cpl_set_le_req.reply_ctrl additional fields */
25663dde7c95SVishal Kulkarni #define S_LE_REQ_IP6    13
25673dde7c95SVishal Kulkarni #define V_LE_REQ_IP6(x) ((x) << S_LE_REQ_IP6)
25683dde7c95SVishal Kulkarni #define F_LE_REQ_IP6    V_LE_REQ_IP6(1U)
256956b2bdd1SGireesh Nagabhushana 
257056b2bdd1SGireesh Nagabhushana /* cpl_set_le_req.params fields */
25713dde7c95SVishal Kulkarni #define S_LE_CHAN    0
25723dde7c95SVishal Kulkarni #define M_LE_CHAN    0x3
25733dde7c95SVishal Kulkarni #define V_LE_CHAN(x) ((x) << S_LE_CHAN)
25743dde7c95SVishal Kulkarni #define G_LE_CHAN(x) (((x) >> S_LE_CHAN) & M_LE_CHAN)
25753dde7c95SVishal Kulkarni 
25763dde7c95SVishal Kulkarni #define S_LE_OFFSET    5
25773dde7c95SVishal Kulkarni #define M_LE_OFFSET    0x7
25783dde7c95SVishal Kulkarni #define V_LE_OFFSET(x) ((x) << S_LE_OFFSET)
25793dde7c95SVishal Kulkarni #define G_LE_OFFSET(x) (((x) >> S_LE_OFFSET) & M_LE_OFFSET)
25803dde7c95SVishal Kulkarni 
25813dde7c95SVishal Kulkarni #define S_LE_MORE    8
25823dde7c95SVishal Kulkarni #define V_LE_MORE(x) ((x) << S_LE_MORE)
25833dde7c95SVishal Kulkarni #define F_LE_MORE    V_LE_MORE(1U)
25843dde7c95SVishal Kulkarni 
25853dde7c95SVishal Kulkarni #define S_LE_REQSIZE    9
25863dde7c95SVishal Kulkarni #define M_LE_REQSIZE    0x7
25873dde7c95SVishal Kulkarni #define V_LE_REQSIZE(x) ((x) << S_LE_REQSIZE)
25883dde7c95SVishal Kulkarni #define G_LE_REQSIZE(x) (((x) >> S_LE_REQSIZE) & M_LE_REQSIZE)
25893dde7c95SVishal Kulkarni 
25903dde7c95SVishal Kulkarni #define S_LE_REQCMD    12
25913dde7c95SVishal Kulkarni #define M_LE_REQCMD    0xF
25923dde7c95SVishal Kulkarni #define V_LE_REQCMD(x) ((x) << S_LE_REQCMD)
25933dde7c95SVishal Kulkarni #define G_LE_REQCMD(x) (((x) >> S_LE_REQCMD) & M_LE_REQCMD)
259456b2bdd1SGireesh Nagabhushana 
259556b2bdd1SGireesh Nagabhushana struct cpl_set_le_rpl {
259656b2bdd1SGireesh Nagabhushana 	RSS_HDR
259756b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
259856b2bdd1SGireesh Nagabhushana 	__u8 chan;
259956b2bdd1SGireesh Nagabhushana 	__u8 info;
260056b2bdd1SGireesh Nagabhushana 	__be16 len;
260156b2bdd1SGireesh Nagabhushana };
260256b2bdd1SGireesh Nagabhushana 
260356b2bdd1SGireesh Nagabhushana /* cpl_set_le_rpl.info fields */
26043dde7c95SVishal Kulkarni #define S_LE_RSPCMD    0
26053dde7c95SVishal Kulkarni #define M_LE_RSPCMD    0xF
26063dde7c95SVishal Kulkarni #define V_LE_RSPCMD(x) ((x) << S_LE_RSPCMD)
26073dde7c95SVishal Kulkarni #define G_LE_RSPCMD(x) (((x) >> S_LE_RSPCMD) & M_LE_RSPCMD)
260856b2bdd1SGireesh Nagabhushana 
26093dde7c95SVishal Kulkarni #define S_LE_RSPSIZE    4
26103dde7c95SVishal Kulkarni #define M_LE_RSPSIZE    0x7
26113dde7c95SVishal Kulkarni #define V_LE_RSPSIZE(x) ((x) << S_LE_RSPSIZE)
26123dde7c95SVishal Kulkarni #define G_LE_RSPSIZE(x) (((x) >> S_LE_RSPSIZE) & M_LE_RSPSIZE)
261356b2bdd1SGireesh Nagabhushana 
26143dde7c95SVishal Kulkarni #define S_LE_RSPTYPE    7
26153dde7c95SVishal Kulkarni #define V_LE_RSPTYPE(x) ((x) << S_LE_RSPTYPE)
26163dde7c95SVishal Kulkarni #define F_LE_RSPTYPE    V_LE_RSPTYPE(1U)
261756b2bdd1SGireesh Nagabhushana 
261856b2bdd1SGireesh Nagabhushana struct cpl_sge_egr_update {
261956b2bdd1SGireesh Nagabhushana 	RSS_HDR
262056b2bdd1SGireesh Nagabhushana 	__be32 opcode_qid;
262156b2bdd1SGireesh Nagabhushana 	__be16 cidx;
262256b2bdd1SGireesh Nagabhushana 	__be16 pidx;
262356b2bdd1SGireesh Nagabhushana };
262456b2bdd1SGireesh Nagabhushana 
262556b2bdd1SGireesh Nagabhushana /* cpl_sge_egr_update.ot fields */
26263dde7c95SVishal Kulkarni #define S_AUTOEQU	22
26273dde7c95SVishal Kulkarni #define M_AUTOEQU	0x1
26283dde7c95SVishal Kulkarni #define V_AUTOEQU(x)	((x) << S_AUTOEQU)
26293dde7c95SVishal Kulkarni #define G_AUTOEQU(x)	(((x) >> S_AUTOEQU) & M_AUTOEQU)
26303dde7c95SVishal Kulkarni 
26313dde7c95SVishal Kulkarni #define S_EGR_QID    0
26323dde7c95SVishal Kulkarni #define M_EGR_QID    0x1FFFF
26333dde7c95SVishal Kulkarni #define V_EGR_QID(x) ((x) << S_EGR_QID)
26343dde7c95SVishal Kulkarni #define G_EGR_QID(x) (((x) >> S_EGR_QID) & M_EGR_QID)
263556b2bdd1SGireesh Nagabhushana 
2636de483253SVishal Kulkarni /* cpl_fw*.type values */
2637de483253SVishal Kulkarni enum {
2638de483253SVishal Kulkarni 	FW_TYPE_CMD_RPL = 0,
2639de483253SVishal Kulkarni 	FW_TYPE_WR_RPL = 1,
2640de483253SVishal Kulkarni 	FW_TYPE_CQE = 2,
2641de483253SVishal Kulkarni 	FW_TYPE_OFLD_CONNECTION_WR_RPL = 3,
2642de483253SVishal Kulkarni 	FW_TYPE_RSSCPL = 4,
26433dde7c95SVishal Kulkarni 	FW_TYPE_WRERR_RPL = 5,
26443dde7c95SVishal Kulkarni 	FW_TYPE_PI_ERR = 6,
26453dde7c95SVishal Kulkarni 	FW_TYPE_TLS_KEY = 7,
2646de483253SVishal Kulkarni };
2647de483253SVishal Kulkarni 
264856b2bdd1SGireesh Nagabhushana struct cpl_fw2_pld {
264956b2bdd1SGireesh Nagabhushana 	RSS_HDR
265056b2bdd1SGireesh Nagabhushana 	u8 opcode;
265156b2bdd1SGireesh Nagabhushana 	u8 rsvd[5];
265256b2bdd1SGireesh Nagabhushana 	__be16 len;
265356b2bdd1SGireesh Nagabhushana };
265456b2bdd1SGireesh Nagabhushana 
265556b2bdd1SGireesh Nagabhushana struct cpl_fw4_pld {
265656b2bdd1SGireesh Nagabhushana 	RSS_HDR
265756b2bdd1SGireesh Nagabhushana 	u8 opcode;
265856b2bdd1SGireesh Nagabhushana 	u8 rsvd0[3];
265956b2bdd1SGireesh Nagabhushana 	u8 type;
266056b2bdd1SGireesh Nagabhushana 	u8 rsvd1;
266156b2bdd1SGireesh Nagabhushana 	__be16 len;
266256b2bdd1SGireesh Nagabhushana 	__be64 data;
266356b2bdd1SGireesh Nagabhushana 	__be64 rsvd2;
266456b2bdd1SGireesh Nagabhushana };
266556b2bdd1SGireesh Nagabhushana 
266656b2bdd1SGireesh Nagabhushana struct cpl_fw6_pld {
266756b2bdd1SGireesh Nagabhushana 	RSS_HDR
266856b2bdd1SGireesh Nagabhushana 	u8 opcode;
266956b2bdd1SGireesh Nagabhushana 	u8 rsvd[5];
267056b2bdd1SGireesh Nagabhushana 	__be16 len;
267156b2bdd1SGireesh Nagabhushana 	__be64 data[4];
267256b2bdd1SGireesh Nagabhushana };
267356b2bdd1SGireesh Nagabhushana 
267456b2bdd1SGireesh Nagabhushana struct cpl_fw2_msg {
267556b2bdd1SGireesh Nagabhushana 	RSS_HDR
267656b2bdd1SGireesh Nagabhushana 	union opcode_info oi;
267756b2bdd1SGireesh Nagabhushana };
267856b2bdd1SGireesh Nagabhushana 
267956b2bdd1SGireesh Nagabhushana struct cpl_fw4_msg {
268056b2bdd1SGireesh Nagabhushana 	RSS_HDR
268156b2bdd1SGireesh Nagabhushana 	u8 opcode;
268256b2bdd1SGireesh Nagabhushana 	u8 type;
268356b2bdd1SGireesh Nagabhushana 	__be16 rsvd0;
268456b2bdd1SGireesh Nagabhushana 	__be32 rsvd1;
268556b2bdd1SGireesh Nagabhushana 	__be64 data[2];
268656b2bdd1SGireesh Nagabhushana };
268756b2bdd1SGireesh Nagabhushana 
268856b2bdd1SGireesh Nagabhushana struct cpl_fw4_ack {
268956b2bdd1SGireesh Nagabhushana 	RSS_HDR
269056b2bdd1SGireesh Nagabhushana 	union opcode_tid ot;
269156b2bdd1SGireesh Nagabhushana 	u8 credits;
269256b2bdd1SGireesh Nagabhushana 	u8 rsvd0[2];
269356b2bdd1SGireesh Nagabhushana 	u8 flags;
269456b2bdd1SGireesh Nagabhushana 	__be32 snd_nxt;
269556b2bdd1SGireesh Nagabhushana 	__be32 snd_una;
269656b2bdd1SGireesh Nagabhushana 	__be64 rsvd1;
269756b2bdd1SGireesh Nagabhushana };
269856b2bdd1SGireesh Nagabhushana 
269956b2bdd1SGireesh Nagabhushana enum {
27003dde7c95SVishal Kulkarni 	CPL_FW4_ACK_FLAGS_SEQVAL	= 0x1,	/* seqn valid */
27013dde7c95SVishal Kulkarni 	CPL_FW4_ACK_FLAGS_CH		= 0x2,	/* channel change complete */
27023dde7c95SVishal Kulkarni 	CPL_FW4_ACK_FLAGS_FLOWC		= 0x4,	/* fw_flowc_wr complete */
270356b2bdd1SGireesh Nagabhushana };
270456b2bdd1SGireesh Nagabhushana 
270556b2bdd1SGireesh Nagabhushana struct cpl_fw6_msg {
270656b2bdd1SGireesh Nagabhushana 	RSS_HDR
270756b2bdd1SGireesh Nagabhushana 	u8 opcode;
270856b2bdd1SGireesh Nagabhushana 	u8 type;
270956b2bdd1SGireesh Nagabhushana 	__be16 rsvd0;
271056b2bdd1SGireesh Nagabhushana 	__be32 rsvd1;
271156b2bdd1SGireesh Nagabhushana 	__be64 data[4];
271256b2bdd1SGireesh Nagabhushana };
271356b2bdd1SGireesh Nagabhushana 
271456b2bdd1SGireesh Nagabhushana /* cpl_fw6_msg.type values */
271556b2bdd1SGireesh Nagabhushana enum {
2716de483253SVishal Kulkarni 	FW6_TYPE_CMD_RPL	= FW_TYPE_CMD_RPL,
2717de483253SVishal Kulkarni 	FW6_TYPE_WR_RPL		= FW_TYPE_WR_RPL,
2718de483253SVishal Kulkarni 	FW6_TYPE_CQE		= FW_TYPE_CQE,
2719de483253SVishal Kulkarni 	FW6_TYPE_OFLD_CONNECTION_WR_RPL = FW_TYPE_OFLD_CONNECTION_WR_RPL,
2720de483253SVishal Kulkarni 	FW6_TYPE_RSSCPL		= FW_TYPE_RSSCPL,
27213dde7c95SVishal Kulkarni 	FW6_TYPE_WRERR_RPL	= FW_TYPE_WRERR_RPL,
27223dde7c95SVishal Kulkarni 	FW6_TYPE_PI_ERR		= FW_TYPE_PI_ERR,
2723de483253SVishal Kulkarni };
2724de483253SVishal Kulkarni 
2725de483253SVishal Kulkarni struct cpl_fw6_msg_ofld_connection_wr_rpl {
27263dde7c95SVishal Kulkarni 	__u64	cookie;
27273dde7c95SVishal Kulkarni 	__be32	tid;	/* or atid in case of active failure */
27283dde7c95SVishal Kulkarni 	__u8	t_state;
27293dde7c95SVishal Kulkarni 	__u8	retval;
27303dde7c95SVishal Kulkarni 	__u8	rsvd[2];
273156b2bdd1SGireesh Nagabhushana };
273256b2bdd1SGireesh Nagabhushana 
273356b2bdd1SGireesh Nagabhushana /* ULP_TX opcodes */
273456b2bdd1SGireesh Nagabhushana enum {
273556b2bdd1SGireesh Nagabhushana 	ULP_TX_MEM_READ = 2,
273656b2bdd1SGireesh Nagabhushana 	ULP_TX_MEM_WRITE = 3,
273756b2bdd1SGireesh Nagabhushana 	ULP_TX_PKT = 4
273856b2bdd1SGireesh Nagabhushana };
273956b2bdd1SGireesh Nagabhushana 
274056b2bdd1SGireesh Nagabhushana enum {
274156b2bdd1SGireesh Nagabhushana 	ULP_TX_SC_NOOP = 0x80,
274256b2bdd1SGireesh Nagabhushana 	ULP_TX_SC_IMM  = 0x81,
274356b2bdd1SGireesh Nagabhushana 	ULP_TX_SC_DSGL = 0x82,
27443dde7c95SVishal Kulkarni 	ULP_TX_SC_ISGL = 0x83,
27453dde7c95SVishal Kulkarni 	ULP_TX_SC_PICTRL = 0x84,
27463dde7c95SVishal Kulkarni 	ULP_TX_SC_MEMRD = 0x86
274756b2bdd1SGireesh Nagabhushana };
274856b2bdd1SGireesh Nagabhushana 
27493dde7c95SVishal Kulkarni #define S_ULPTX_CMD    24
27503dde7c95SVishal Kulkarni #define M_ULPTX_CMD    0xFF
27513dde7c95SVishal Kulkarni #define V_ULPTX_CMD(x) ((x) << S_ULPTX_CMD)
275256b2bdd1SGireesh Nagabhushana 
27533dde7c95SVishal Kulkarni #define S_ULPTX_LEN16    0
27543dde7c95SVishal Kulkarni #define M_ULPTX_LEN16    0xFF
27553dde7c95SVishal Kulkarni #define V_ULPTX_LEN16(x) ((x) << S_ULPTX_LEN16)
275656b2bdd1SGireesh Nagabhushana 
27573dde7c95SVishal Kulkarni #define S_ULP_TX_SC_MORE 23
27583dde7c95SVishal Kulkarni #define V_ULP_TX_SC_MORE(x) ((x) << S_ULP_TX_SC_MORE)
27593dde7c95SVishal Kulkarni #define F_ULP_TX_SC_MORE  V_ULP_TX_SC_MORE(1U)
276056b2bdd1SGireesh Nagabhushana 
276156b2bdd1SGireesh Nagabhushana struct ulptx_sge_pair {
276256b2bdd1SGireesh Nagabhushana 	__be32 len[2];
276356b2bdd1SGireesh Nagabhushana 	__be64 addr[2];
276456b2bdd1SGireesh Nagabhushana };
276556b2bdd1SGireesh Nagabhushana 
276656b2bdd1SGireesh Nagabhushana struct ulptx_sgl {
276756b2bdd1SGireesh Nagabhushana 	__be32 cmd_nsge;
276856b2bdd1SGireesh Nagabhushana 	__be32 len0;
276956b2bdd1SGireesh Nagabhushana 	__be64 addr0;
27703dde7c95SVishal Kulkarni 
277156b2bdd1SGireesh Nagabhushana #if !(defined C99_NOT_SUPPORTED)
2772*ab2fdd80SToomas Soome 	struct ulptx_sge_pair sge[];
277356b2bdd1SGireesh Nagabhushana #endif
27743dde7c95SVishal Kulkarni 
277556b2bdd1SGireesh Nagabhushana };
277656b2bdd1SGireesh Nagabhushana 
277756b2bdd1SGireesh Nagabhushana struct ulptx_isge {
277856b2bdd1SGireesh Nagabhushana 	__be32 stag;
277956b2bdd1SGireesh Nagabhushana 	__be32 len;
278056b2bdd1SGireesh Nagabhushana 	__be64 target_ofst;
278156b2bdd1SGireesh Nagabhushana };
278256b2bdd1SGireesh Nagabhushana 
278356b2bdd1SGireesh Nagabhushana struct ulptx_isgl {
278456b2bdd1SGireesh Nagabhushana 	__be32 cmd_nisge;
278556b2bdd1SGireesh Nagabhushana 	__be32 rsvd;
27863dde7c95SVishal Kulkarni 
278756b2bdd1SGireesh Nagabhushana #if !(defined C99_NOT_SUPPORTED)
2788*ab2fdd80SToomas Soome 	struct ulptx_isge sge[];
278956b2bdd1SGireesh Nagabhushana #endif
27903dde7c95SVishal Kulkarni 
279156b2bdd1SGireesh Nagabhushana };
279256b2bdd1SGireesh Nagabhushana 
279356b2bdd1SGireesh Nagabhushana struct ulptx_idata {
279456b2bdd1SGireesh Nagabhushana 	__be32 cmd_more;
279556b2bdd1SGireesh Nagabhushana 	__be32 len;
279656b2bdd1SGireesh Nagabhushana };
279756b2bdd1SGireesh Nagabhushana 
27983dde7c95SVishal Kulkarni #define S_ULPTX_NSGE    0
27993dde7c95SVishal Kulkarni #define M_ULPTX_NSGE    0xFFFF
28003dde7c95SVishal Kulkarni #define V_ULPTX_NSGE(x) ((x) << S_ULPTX_NSGE)
28013dde7c95SVishal Kulkarni #define G_ULPTX_NSGE(x) (((x) >> S_ULPTX_NSGE) & M_ULPTX_NSGE)
28023dde7c95SVishal Kulkarni 
28033dde7c95SVishal Kulkarni struct ulptx_sc_memrd {
28043dde7c95SVishal Kulkarni 	__be32 cmd_to_len;
28053dde7c95SVishal Kulkarni 	__be32 addr;
28063dde7c95SVishal Kulkarni };
280756b2bdd1SGireesh Nagabhushana 
280856b2bdd1SGireesh Nagabhushana struct ulp_mem_io {
280956b2bdd1SGireesh Nagabhushana 	WR_HDR;
281056b2bdd1SGireesh Nagabhushana 	__be32 cmd;
28113dde7c95SVishal Kulkarni 	__be32 len16;             /* command length */
28123dde7c95SVishal Kulkarni 	__be32 dlen;              /* data length in 32-byte units */
281356b2bdd1SGireesh Nagabhushana 	__be32 lock_addr;
281456b2bdd1SGireesh Nagabhushana };
281556b2bdd1SGireesh Nagabhushana 
281656b2bdd1SGireesh Nagabhushana /* additional ulp_mem_io.cmd fields */
28173dde7c95SVishal Kulkarni #define S_ULP_MEMIO_ORDER    23
28183dde7c95SVishal Kulkarni #define V_ULP_MEMIO_ORDER(x) ((x) << S_ULP_MEMIO_ORDER)
28193dde7c95SVishal Kulkarni #define F_ULP_MEMIO_ORDER    V_ULP_MEMIO_ORDER(1U)
282056b2bdd1SGireesh Nagabhushana 
2821de483253SVishal Kulkarni #define S_T5_ULP_MEMIO_IMM    23
2822de483253SVishal Kulkarni #define V_T5_ULP_MEMIO_IMM(x) ((x) << S_T5_ULP_MEMIO_IMM)
2823de483253SVishal Kulkarni #define F_T5_ULP_MEMIO_IMM    V_T5_ULP_MEMIO_IMM(1U)
2824de483253SVishal Kulkarni 
2825de483253SVishal Kulkarni #define S_T5_ULP_MEMIO_ORDER    22
2826de483253SVishal Kulkarni #define V_T5_ULP_MEMIO_ORDER(x) ((x) << S_T5_ULP_MEMIO_ORDER)
2827de483253SVishal Kulkarni #define F_T5_ULP_MEMIO_ORDER    V_T5_ULP_MEMIO_ORDER(1U)
2828de483253SVishal Kulkarni 
28293dde7c95SVishal Kulkarni #define S_T5_ULP_MEMIO_FID	4
28303dde7c95SVishal Kulkarni #define M_T5_ULP_MEMIO_FID	0x7ff
28313dde7c95SVishal Kulkarni #define V_T5_ULP_MEMIO_FID(x)	((x) << S_T5_ULP_MEMIO_FID)
28323dde7c95SVishal Kulkarni 
283356b2bdd1SGireesh Nagabhushana /* ulp_mem_io.lock_addr fields */
28343dde7c95SVishal Kulkarni #define S_ULP_MEMIO_ADDR    0
28353dde7c95SVishal Kulkarni #define M_ULP_MEMIO_ADDR    0x7FFFFFF
28363dde7c95SVishal Kulkarni #define V_ULP_MEMIO_ADDR(x) ((x) << S_ULP_MEMIO_ADDR)
283756b2bdd1SGireesh Nagabhushana 
28383dde7c95SVishal Kulkarni #define S_ULP_MEMIO_LOCK    31
28393dde7c95SVishal Kulkarni #define V_ULP_MEMIO_LOCK(x) ((x) << S_ULP_MEMIO_LOCK)
28403dde7c95SVishal Kulkarni #define F_ULP_MEMIO_LOCK    V_ULP_MEMIO_LOCK(1U)
284156b2bdd1SGireesh Nagabhushana 
284256b2bdd1SGireesh Nagabhushana /* ulp_mem_io.dlen fields */
28433dde7c95SVishal Kulkarni #define S_ULP_MEMIO_DATA_LEN    0
28443dde7c95SVishal Kulkarni #define M_ULP_MEMIO_DATA_LEN    0x1F
28453dde7c95SVishal Kulkarni #define V_ULP_MEMIO_DATA_LEN(x) ((x) << S_ULP_MEMIO_DATA_LEN)
284656b2bdd1SGireesh Nagabhushana 
2847de483253SVishal Kulkarni /* ULP_TXPKT field values */
2848de483253SVishal Kulkarni enum {
2849de483253SVishal Kulkarni 	ULP_TXPKT_DEST_TP = 0,
2850de483253SVishal Kulkarni 	ULP_TXPKT_DEST_SGE,
2851de483253SVishal Kulkarni 	ULP_TXPKT_DEST_UP,
2852de483253SVishal Kulkarni 	ULP_TXPKT_DEST_DEVNULL,
2853de483253SVishal Kulkarni };
2854de483253SVishal Kulkarni 
285556b2bdd1SGireesh Nagabhushana struct ulp_txpkt {
285656b2bdd1SGireesh Nagabhushana 	__be32 cmd_dest;
285756b2bdd1SGireesh Nagabhushana 	__be32 len;
285856b2bdd1SGireesh Nagabhushana };
285956b2bdd1SGireesh Nagabhushana 
286056b2bdd1SGireesh Nagabhushana /* ulp_txpkt.cmd_dest fields */
28613dde7c95SVishal Kulkarni #define S_ULP_TXPKT_DATAMODIFY       23
28623dde7c95SVishal Kulkarni #define M_ULP_TXPKT_DATAMODIFY       0x1
28633dde7c95SVishal Kulkarni #define V_ULP_TXPKT_DATAMODIFY(x)    ((x) << S_ULP_TXPKT_DATAMODIFY)
28643dde7c95SVishal Kulkarni #define G_ULP_TXPKT_DATAMODIFY(x)    \
28653dde7c95SVishal Kulkarni 	(((x) >> S_ULP_TXPKT_DATAMODIFY) & M_ULP_TXPKT_DATAMODIFY_)
28663dde7c95SVishal Kulkarni #define F_ULP_TXPKT_DATAMODIFY       V_ULP_TXPKT_DATAMODIFY(1U)
28673dde7c95SVishal Kulkarni 
28683dde7c95SVishal Kulkarni #define S_ULP_TXPKT_CHANNELID        22
28693dde7c95SVishal Kulkarni #define M_ULP_TXPKT_CHANNELID        0x1
28703dde7c95SVishal Kulkarni #define V_ULP_TXPKT_CHANNELID(x)     ((x) << S_ULP_TXPKT_CHANNELID)
28713dde7c95SVishal Kulkarni #define G_ULP_TXPKT_CHANNELID(x)     \
28723dde7c95SVishal Kulkarni 	(((x) >> S_ULP_TXPKT_CHANNELID) & M_ULP_TXPKT_CHANNELID)
28733dde7c95SVishal Kulkarni #define F_ULP_TXPKT_CHANNELID        V_ULP_TXPKT_CHANNELID(1U)
28743dde7c95SVishal Kulkarni 
28753dde7c95SVishal Kulkarni /* ulp_txpkt.cmd_dest fields */
28763dde7c95SVishal Kulkarni #define S_ULP_TXPKT_DEST    16
28773dde7c95SVishal Kulkarni #define M_ULP_TXPKT_DEST    0x3
28783dde7c95SVishal Kulkarni #define V_ULP_TXPKT_DEST(x) ((x) << S_ULP_TXPKT_DEST)
287956b2bdd1SGireesh Nagabhushana 
28803dde7c95SVishal Kulkarni #define S_ULP_TXPKT_FID	    4
28813dde7c95SVishal Kulkarni #define M_ULP_TXPKT_FID     0x7ff
28823dde7c95SVishal Kulkarni #define V_ULP_TXPKT_FID(x)  ((x) << S_ULP_TXPKT_FID)
288356b2bdd1SGireesh Nagabhushana 
28843dde7c95SVishal Kulkarni #define S_ULP_TXPKT_RO      3
2885de483253SVishal Kulkarni #define V_ULP_TXPKT_RO(x) ((x) << S_ULP_TXPKT_RO)
2886de483253SVishal Kulkarni #define F_ULP_TXPKT_RO V_ULP_TXPKT_RO(1U)
2887de483253SVishal Kulkarni 
28883dde7c95SVishal Kulkarni enum cpl_tx_tnl_lso_type {
28893dde7c95SVishal Kulkarni 	TX_TNL_TYPE_OPAQUE,
28903dde7c95SVishal Kulkarni 	TX_TNL_TYPE_NVGRE,
28913dde7c95SVishal Kulkarni 	TX_TNL_TYPE_VXLAN,
28923dde7c95SVishal Kulkarni 	TX_TNL_TYPE_GENEVE,
28933dde7c95SVishal Kulkarni };
28943dde7c95SVishal Kulkarni 
28953dde7c95SVishal Kulkarni struct cpl_tx_tnl_lso {
28963dde7c95SVishal Kulkarni 	__be32 op_to_IpIdSplitOut;
28973dde7c95SVishal Kulkarni 	__be16 IpIdOffsetOut;
28983dde7c95SVishal Kulkarni 	__be16 UdpLenSetOut_to_TnlHdrLen;
28993dde7c95SVishal Kulkarni 	__be64 r1;
29003dde7c95SVishal Kulkarni 	__be32 Flow_to_TcpHdrLen;
29013dde7c95SVishal Kulkarni 	__be16 IpIdOffset;
29023dde7c95SVishal Kulkarni 	__be16 IpIdSplit_to_Mss;
29033dde7c95SVishal Kulkarni 	__be32 TCPSeqOffset;
29043dde7c95SVishal Kulkarni 	__be32 EthLenOffset_Size;
29053dde7c95SVishal Kulkarni 	/* encapsulated CPL (TX_PKT_XT) follows here */
29063dde7c95SVishal Kulkarni };
29073dde7c95SVishal Kulkarni 
29083dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_OPCODE		24
29093dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_OPCODE		0xff
29103dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_OPCODE(x)	((x) << S_CPL_TX_TNL_LSO_OPCODE)
29113dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_OPCODE(x)	\
29123dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_OPCODE) & M_CPL_TX_TNL_LSO_OPCODE)
29133dde7c95SVishal Kulkarni 
29143dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_FIRST		23
29153dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_FIRST		0x1
29163dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_FIRST(x)	((x) << S_CPL_TX_TNL_LSO_FIRST)
29173dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_FIRST(x)	\
29183dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_FIRST) & M_CPL_TX_TNL_LSO_FIRST)
29193dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_FIRST		V_CPL_TX_TNL_LSO_FIRST(1U)
29203dde7c95SVishal Kulkarni 
29213dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_LAST		22
29223dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_LAST		0x1
29233dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_LAST(x)	((x) << S_CPL_TX_TNL_LSO_LAST)
29243dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_LAST(x)	\
29253dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_LAST) & M_CPL_TX_TNL_LSO_LAST)
29263dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_LAST		V_CPL_TX_TNL_LSO_LAST(1U)
29273dde7c95SVishal Kulkarni 
29283dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_ETHHDRLENXOUT	21
29293dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_ETHHDRLENXOUT	0x1
29303dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_ETHHDRLENXOUT(x) \
29313dde7c95SVishal Kulkarni     ((x) << S_CPL_TX_TNL_LSO_ETHHDRLENXOUT)
29323dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_ETHHDRLENXOUT(x) \
29333dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_ETHHDRLENXOUT) & M_CPL_TX_TNL_LSO_ETHHDRLENXOUT)
29343dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_ETHHDRLENXOUT	V_CPL_TX_TNL_LSO_ETHHDRLENXOUT(1U)
29353dde7c95SVishal Kulkarni 
29363dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPV6OUT	20
29373dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPV6OUT	0x1
29383dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPV6OUT(x)	((x) << S_CPL_TX_TNL_LSO_IPV6OUT)
29393dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPV6OUT(x)	\
29403dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPV6OUT) & M_CPL_TX_TNL_LSO_IPV6OUT)
29413dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_IPV6OUT	V_CPL_TX_TNL_LSO_IPV6OUT(1U)
29423dde7c95SVishal Kulkarni 
29433dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_ETHHDRLENOUT	16
29443dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_ETHHDRLENOUT	0xf
29453dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_ETHHDRLENOUT(x) \
29463dde7c95SVishal Kulkarni     ((x) << S_CPL_TX_TNL_LSO_ETHHDRLENOUT)
29473dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_ETHHDRLENOUT(x) \
29483dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_ETHHDRLENOUT) & M_CPL_TX_TNL_LSO_ETHHDRLENOUT)
29493dde7c95SVishal Kulkarni 
29503dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPHDRLENOUT	4
29513dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPHDRLENOUT	0xfff
29523dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPHDRLENOUT(x)	((x) << S_CPL_TX_TNL_LSO_IPHDRLENOUT)
29533dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPHDRLENOUT(x)	\
29543dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPHDRLENOUT) & M_CPL_TX_TNL_LSO_IPHDRLENOUT)
29553dde7c95SVishal Kulkarni 
29563dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPHDRCHKOUT	3
29573dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPHDRCHKOUT	0x1
29583dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPHDRCHKOUT(x)	((x) << S_CPL_TX_TNL_LSO_IPHDRCHKOUT)
29593dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPHDRCHKOUT(x)	\
29603dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPHDRCHKOUT) & M_CPL_TX_TNL_LSO_IPHDRCHKOUT)
29613dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_IPHDRCHKOUT	V_CPL_TX_TNL_LSO_IPHDRCHKOUT(1U)
29623dde7c95SVishal Kulkarni 
29633dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPLENSETOUT	2
29643dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPLENSETOUT	0x1
29653dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPLENSETOUT(x)	((x) << S_CPL_TX_TNL_LSO_IPLENSETOUT)
29663dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPLENSETOUT(x)	\
29673dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPLENSETOUT) & M_CPL_TX_TNL_LSO_IPLENSETOUT)
29683dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_IPLENSETOUT	V_CPL_TX_TNL_LSO_IPLENSETOUT(1U)
29693dde7c95SVishal Kulkarni 
29703dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPIDINCOUT	1
29713dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPIDINCOUT	0x1
29723dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPIDINCOUT(x)	((x) << S_CPL_TX_TNL_LSO_IPIDINCOUT)
29733dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPIDINCOUT(x)	\
29743dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPIDINCOUT) & M_CPL_TX_TNL_LSO_IPIDINCOUT)
29753dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_IPIDINCOUT	V_CPL_TX_TNL_LSO_IPIDINCOUT(1U)
29763dde7c95SVishal Kulkarni 
29773dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPIDSPLITOUT	0
29783dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPIDSPLITOUT	0x1
29793dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPIDSPLITOUT(x) \
29803dde7c95SVishal Kulkarni     ((x) << S_CPL_TX_TNL_LSO_IPIDSPLITOUT)
29813dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPIDSPLITOUT(x) \
29823dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPIDSPLITOUT) & M_CPL_TX_TNL_LSO_IPIDSPLITOUT)
29833dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_IPIDSPLITOUT	V_CPL_TX_TNL_LSO_IPIDSPLITOUT(1U)
29843dde7c95SVishal Kulkarni 
29853dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_UDPLENSETOUT	15
29863dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_UDPLENSETOUT	0x1
29873dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_UDPLENSETOUT(x) \
29883dde7c95SVishal Kulkarni     ((x) << S_CPL_TX_TNL_LSO_UDPLENSETOUT)
29893dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_UDPLENSETOUT(x) \
29903dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_UDPLENSETOUT) & M_CPL_TX_TNL_LSO_UDPLENSETOUT)
29913dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_UDPLENSETOUT	V_CPL_TX_TNL_LSO_UDPLENSETOUT(1U)
29923dde7c95SVishal Kulkarni 
29933dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_UDPCHKCLROUT	14
29943dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_UDPCHKCLROUT	0x1
29953dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_UDPCHKCLROUT(x) \
29963dde7c95SVishal Kulkarni     ((x) << S_CPL_TX_TNL_LSO_UDPCHKCLROUT)
29973dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_UDPCHKCLROUT(x) \
29983dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_UDPCHKCLROUT) & M_CPL_TX_TNL_LSO_UDPCHKCLROUT)
29993dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_UDPCHKCLROUT	V_CPL_TX_TNL_LSO_UDPCHKCLROUT(1U)
30003dde7c95SVishal Kulkarni 
30013dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_TNLTYPE	12
30023dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_TNLTYPE	0x3
30033dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_TNLTYPE(x)	((x) << S_CPL_TX_TNL_LSO_TNLTYPE)
30043dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_TNLTYPE(x)	\
30053dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_TNLTYPE) & M_CPL_TX_TNL_LSO_TNLTYPE)
30063dde7c95SVishal Kulkarni 
30073dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_TNLHDRLEN	0
30083dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_TNLHDRLEN	0xfff
30093dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_TNLHDRLEN(x)	((x) << S_CPL_TX_TNL_LSO_TNLHDRLEN)
30103dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_TNLHDRLEN(x)	\
30113dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_TNLHDRLEN) & M_CPL_TX_TNL_LSO_TNLHDRLEN)
30123dde7c95SVishal Kulkarni 
30133dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_FLOW		21
30143dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_FLOW		0x1
30153dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_FLOW(x)	((x) << S_CPL_TX_TNL_LSO_FLOW)
30163dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_FLOW(x)	\
30173dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_FLOW) & M_CPL_TX_TNL_LSO_FLOW)
30183dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_FLOW		V_CPL_TX_TNL_LSO_FLOW(1U)
30193dde7c95SVishal Kulkarni 
30203dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPV6		20
30213dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPV6		0x1
30223dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPV6(x)	((x) << S_CPL_TX_TNL_LSO_IPV6)
30233dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPV6(x)	\
30243dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPV6) & M_CPL_TX_TNL_LSO_IPV6)
30253dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_IPV6		V_CPL_TX_TNL_LSO_IPV6(1U)
30263dde7c95SVishal Kulkarni 
30273dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_ETHHDRLEN	16
30283dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_ETHHDRLEN	0xf
30293dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_ETHHDRLEN(x)	((x) << S_CPL_TX_TNL_LSO_ETHHDRLEN)
30303dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_ETHHDRLEN(x)	\
30313dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_ETHHDRLEN) & M_CPL_TX_TNL_LSO_ETHHDRLEN)
30323dde7c95SVishal Kulkarni 
30333dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPHDRLEN	4
30343dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPHDRLEN	0xfff
30353dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPHDRLEN(x)	((x) << S_CPL_TX_TNL_LSO_IPHDRLEN)
30363dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPHDRLEN(x)	\
30373dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPHDRLEN) & M_CPL_TX_TNL_LSO_IPHDRLEN)
30383dde7c95SVishal Kulkarni 
30393dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_TCPHDRLEN	0
30403dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_TCPHDRLEN	0xf
30413dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_TCPHDRLEN(x)	((x) << S_CPL_TX_TNL_LSO_TCPHDRLEN)
30423dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_TCPHDRLEN(x)	\
30433dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_TCPHDRLEN) & M_CPL_TX_TNL_LSO_TCPHDRLEN)
30443dde7c95SVishal Kulkarni 
30453dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_IPIDSPLIT	15
30463dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_IPIDSPLIT	0x1
30473dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_IPIDSPLIT(x)	((x) << S_CPL_TX_TNL_LSO_IPIDSPLIT)
30483dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_IPIDSPLIT(x)	\
30493dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_IPIDSPLIT) & M_CPL_TX_TNL_LSO_IPIDSPLIT)
30503dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_IPIDSPLIT	V_CPL_TX_TNL_LSO_IPIDSPLIT(1U)
30513dde7c95SVishal Kulkarni 
30523dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_ETHHDRLENX	14
30533dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_ETHHDRLENX	0x1
30543dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_ETHHDRLENX(x)	((x) << S_CPL_TX_TNL_LSO_ETHHDRLENX)
30553dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_ETHHDRLENX(x)	\
30563dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_ETHHDRLENX) & M_CPL_TX_TNL_LSO_ETHHDRLENX)
30573dde7c95SVishal Kulkarni #define F_CPL_TX_TNL_LSO_ETHHDRLENX	V_CPL_TX_TNL_LSO_ETHHDRLENX(1U)
30583dde7c95SVishal Kulkarni 
30593dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_MSS		0
30603dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_MSS		0x3fff
30613dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_MSS(x)		((x) << S_CPL_TX_TNL_LSO_MSS)
30623dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_MSS(x)		\
30633dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_MSS) & M_CPL_TX_TNL_LSO_MSS)
30643dde7c95SVishal Kulkarni 
30653dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_ETHLENOFFSET	28
30663dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_ETHLENOFFSET	0xf
30673dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_ETHLENOFFSET(x) \
30683dde7c95SVishal Kulkarni     ((x) << S_CPL_TX_TNL_LSO_ETHLENOFFSET)
30693dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_ETHLENOFFSET(x) \
30703dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_ETHLENOFFSET) & M_CPL_TX_TNL_LSO_ETHLENOFFSET)
30713dde7c95SVishal Kulkarni 
30723dde7c95SVishal Kulkarni #define S_CPL_TX_TNL_LSO_SIZE		0
30733dde7c95SVishal Kulkarni #define M_CPL_TX_TNL_LSO_SIZE		0xfffffff
30743dde7c95SVishal Kulkarni #define V_CPL_TX_TNL_LSO_SIZE(x)	((x) << S_CPL_TX_TNL_LSO_SIZE)
30753dde7c95SVishal Kulkarni #define G_CPL_TX_TNL_LSO_SIZE(x)	\
30763dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TNL_LSO_SIZE) & M_CPL_TX_TNL_LSO_SIZE)
30773dde7c95SVishal Kulkarni 
30783dde7c95SVishal Kulkarni struct cpl_rx_mps_pkt {
30793dde7c95SVishal Kulkarni 	__be32 op_to_r1_hi;
30803dde7c95SVishal Kulkarni 	__be32 r1_lo_length;
30813dde7c95SVishal Kulkarni };
30823dde7c95SVishal Kulkarni 
30833dde7c95SVishal Kulkarni #define S_CPL_RX_MPS_PKT_OP     24
30843dde7c95SVishal Kulkarni #define M_CPL_RX_MPS_PKT_OP     0xff
30853dde7c95SVishal Kulkarni #define V_CPL_RX_MPS_PKT_OP(x)  ((x) << S_CPL_RX_MPS_PKT_OP)
30863dde7c95SVishal Kulkarni #define G_CPL_RX_MPS_PKT_OP(x)  \
30873dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_MPS_PKT_OP) & M_CPL_RX_MPS_PKT_OP)
30883dde7c95SVishal Kulkarni 
30893dde7c95SVishal Kulkarni #define S_CPL_RX_MPS_PKT_TYPE           20
30903dde7c95SVishal Kulkarni #define M_CPL_RX_MPS_PKT_TYPE           0xf
30913dde7c95SVishal Kulkarni #define V_CPL_RX_MPS_PKT_TYPE(x)        ((x) << S_CPL_RX_MPS_PKT_TYPE)
30923dde7c95SVishal Kulkarni #define G_CPL_RX_MPS_PKT_TYPE(x)        \
30933dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_MPS_PKT_TYPE) & M_CPL_RX_MPS_PKT_TYPE)
30943dde7c95SVishal Kulkarni 
30957e6ad469SVishal Kulkarni #define S_CPL_RX_MPS_PKT_LENGTH     0
30967e6ad469SVishal Kulkarni #define M_CPL_RX_MPS_PKT_LENGTH     0xffff
30977e6ad469SVishal Kulkarni #define V_CPL_RX_MPS_PKT_LENGTH(x)  ((x) << S_CPL_RX_MPS_PKT_LENGTH)
30987e6ad469SVishal Kulkarni #define G_CPL_RX_MPS_PKT_LENGTH(x)  \
30997e6ad469SVishal Kulkarni     (((x) >> S_CPL_RX_MPS_PKT_LENGTH) & M_CPL_RX_MPS_PKT_LENGTH)
31007e6ad469SVishal Kulkarni 
31013dde7c95SVishal Kulkarni /*
31023dde7c95SVishal Kulkarni  * Values for CPL_RX_MPS_PKT_TYPE, a bit-wise orthogonal field.
31033dde7c95SVishal Kulkarni  */
31043dde7c95SVishal Kulkarni #define X_CPL_RX_MPS_PKT_TYPE_PAUSE	(1 << 0)
31053dde7c95SVishal Kulkarni #define X_CPL_RX_MPS_PKT_TYPE_PPP	(1 << 1)
31063dde7c95SVishal Kulkarni #define X_CPL_RX_MPS_PKT_TYPE_QFC	(1 << 2)
31073dde7c95SVishal Kulkarni #define X_CPL_RX_MPS_PKT_TYPE_PTP	(1 << 3)
31083dde7c95SVishal Kulkarni 
31093dde7c95SVishal Kulkarni struct cpl_tx_tls_sfo {
31103dde7c95SVishal Kulkarni 	__be32 op_to_seg_len;
31113dde7c95SVishal Kulkarni 	__be32 pld_len;
31123dde7c95SVishal Kulkarni         __be32 type_protover;
31133dde7c95SVishal Kulkarni         __be32 r1_lo;
31143dde7c95SVishal Kulkarni 	__be32 seqno_numivs;
31153dde7c95SVishal Kulkarni 	__be32 ivgen_hdrlen;
31163dde7c95SVishal Kulkarni 	__be64 scmd1;
31173dde7c95SVishal Kulkarni };
31183dde7c95SVishal Kulkarni 
31193dde7c95SVishal Kulkarni /* cpl_tx_tls_sfo macros */
31203dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_SFO_OPCODE         24
31213dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_SFO_OPCODE         0xff
31223dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_SFO_OPCODE(x)      ((x) << S_CPL_TX_TLS_SFO_OPCODE)
31233dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_SFO_OPCODE(x)      \
31243dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_TLS_SFO_OPCODE) & M_CPL_TX_TLS_SFO_OPCODE)
31253dde7c95SVishal Kulkarni 
31263dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_SFO_DATA_TYPE      20
31273dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_SFO_DATA_TYPE      0xf
31283dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_SFO_DATA_TYPE(x)   ((x) << S_CPL_TX_TLS_SFO_DATA_TYPE)
31293dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_SFO_DATA_TYPE(x)   \
31303dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_TLS_SFO_DATA_TYPE) & M_CPL_TX_TLS_SFO_DATA_TYPE)
31313dde7c95SVishal Kulkarni 
31323dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_SFO_CPL_LEN        16
31333dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_SFO_CPL_LEN        0xf
31343dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_SFO_CPL_LEN(x)     ((x) << S_CPL_TX_TLS_SFO_CPL_LEN)
31353dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_SFO_CPL_LEN(x)     \
31363dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_TLS_SFO_CPL_LEN) & M_CPL_TX_TLS_SFO_CPL_LEN)
31373dde7c95SVishal Kulkarni 
31383dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_SFO_SEG_LEN        0
31393dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_SFO_SEG_LEN        0xffff
31403dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_SFO_SEG_LEN(x)     ((x) << S_CPL_TX_TLS_SFO_SEG_LEN)
31413dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_SFO_SEG_LEN(x)     \
31423dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_TLS_SFO_SEG_LEN) & M_CPL_TX_TLS_SFO_SEG_LEN)
31433dde7c95SVishal Kulkarni 
31443dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_SFO_TYPE           24
31453dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_SFO_TYPE           0xff
31463dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_SFO_TYPE(x)        ((x) << S_CPL_TX_TLS_SFO_TYPE)
31473dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_SFO_TYPE(x)        \
31483dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_SFO_TYPE) & M_CPL_TX_TLS_SFO_TYPE)
31493dde7c95SVishal Kulkarni 
31503dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_SFO_PROTOVER       8
31513dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_SFO_PROTOVER       0xffff
31523dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_SFO_PROTOVER(x)    ((x) << S_CPL_TX_TLS_SFO_PROTOVER)
31533dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_SFO_PROTOVER(x)    \
31543dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_SFO_PROTOVER) & M_CPL_TX_TLS_SFO_PROTOVER)
31553dde7c95SVishal Kulkarni 
31563dde7c95SVishal Kulkarni struct cpl_tls_data {
31573dde7c95SVishal Kulkarni 	RSS_HDR
31583dde7c95SVishal Kulkarni 	__be32 op_tid;
31593dde7c95SVishal Kulkarni 	__be32 length_pkd;
31603dde7c95SVishal Kulkarni 	__be32 seq;
31613dde7c95SVishal Kulkarni 	__be32 r1;
31623dde7c95SVishal Kulkarni };
31633dde7c95SVishal Kulkarni 
31643dde7c95SVishal Kulkarni #define S_CPL_TLS_DATA_OPCODE           24
31653dde7c95SVishal Kulkarni #define M_CPL_TLS_DATA_OPCODE           0xff
31663dde7c95SVishal Kulkarni #define V_CPL_TLS_DATA_OPCODE(x)        ((x) << S_CPL_TLS_DATA_OPCODE)
31673dde7c95SVishal Kulkarni #define G_CPL_TLS_DATA_OPCODE(x)        \
31683dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TLS_DATA_OPCODE) & M_CPL_TLS_DATA_OPCODE)
31693dde7c95SVishal Kulkarni 
31703dde7c95SVishal Kulkarni #define S_CPL_TLS_DATA_TID              0
31713dde7c95SVishal Kulkarni #define M_CPL_TLS_DATA_TID              0xffffff
31723dde7c95SVishal Kulkarni #define V_CPL_TLS_DATA_TID(x)           ((x) << S_CPL_TLS_DATA_TID)
31733dde7c95SVishal Kulkarni #define G_CPL_TLS_DATA_TID(x)           \
31743dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TLS_DATA_TID) & M_CPL_TLS_DATA_TID)
31753dde7c95SVishal Kulkarni 
31763dde7c95SVishal Kulkarni #define S_CPL_TLS_DATA_LENGTH           0
31773dde7c95SVishal Kulkarni #define M_CPL_TLS_DATA_LENGTH           0xffff
31783dde7c95SVishal Kulkarni #define V_CPL_TLS_DATA_LENGTH(x)        ((x) << S_CPL_TLS_DATA_LENGTH)
31793dde7c95SVishal Kulkarni #define G_CPL_TLS_DATA_LENGTH(x)        \
31803dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TLS_DATA_LENGTH) & M_CPL_TLS_DATA_LENGTH)
31813dde7c95SVishal Kulkarni 
31823dde7c95SVishal Kulkarni struct cpl_rx_tls_cmp {
31833dde7c95SVishal Kulkarni 	RSS_HDR
31843dde7c95SVishal Kulkarni 	__be32 op_tid;
31853dde7c95SVishal Kulkarni 	__be32 pdulength_length;
31863dde7c95SVishal Kulkarni 	__be32 seq;
31873dde7c95SVishal Kulkarni 	__be32 ddp_report;
31883dde7c95SVishal Kulkarni 	__be32 r;
31893dde7c95SVishal Kulkarni 	__be32 ddp_valid;
31903dde7c95SVishal Kulkarni };
31913dde7c95SVishal Kulkarni 
31923dde7c95SVishal Kulkarni #define S_CPL_RX_TLS_CMP_OPCODE         24
31933dde7c95SVishal Kulkarni #define M_CPL_RX_TLS_CMP_OPCODE         0xff
31943dde7c95SVishal Kulkarni #define V_CPL_RX_TLS_CMP_OPCODE(x)      ((x) << S_CPL_RX_TLS_CMP_OPCODE)
31953dde7c95SVishal Kulkarni #define G_CPL_RX_TLS_CMP_OPCODE(x)      \
31963dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_TLS_CMP_OPCODE) & M_CPL_RX_TLS_CMP_OPCODE)
31973dde7c95SVishal Kulkarni 
31983dde7c95SVishal Kulkarni #define S_CPL_RX_TLS_CMP_TID            0
31993dde7c95SVishal Kulkarni #define M_CPL_RX_TLS_CMP_TID            0xffffff
32003dde7c95SVishal Kulkarni #define V_CPL_RX_TLS_CMP_TID(x)         ((x) << S_CPL_RX_TLS_CMP_TID)
32013dde7c95SVishal Kulkarni #define G_CPL_RX_TLS_CMP_TID(x)         \
32023dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_TLS_CMP_TID) & M_CPL_RX_TLS_CMP_TID)
32033dde7c95SVishal Kulkarni 
32043dde7c95SVishal Kulkarni #define S_CPL_RX_TLS_CMP_PDULENGTH      16
32053dde7c95SVishal Kulkarni #define M_CPL_RX_TLS_CMP_PDULENGTH      0xffff
32063dde7c95SVishal Kulkarni #define V_CPL_RX_TLS_CMP_PDULENGTH(x)   ((x) << S_CPL_RX_TLS_CMP_PDULENGTH)
32073dde7c95SVishal Kulkarni #define G_CPL_RX_TLS_CMP_PDULENGTH(x)   \
32083dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_TLS_CMP_PDULENGTH) & M_CPL_RX_TLS_CMP_PDULENGTH)
32093dde7c95SVishal Kulkarni 
32103dde7c95SVishal Kulkarni #define S_CPL_RX_TLS_CMP_LENGTH         0
32113dde7c95SVishal Kulkarni #define M_CPL_RX_TLS_CMP_LENGTH         0xffff
32123dde7c95SVishal Kulkarni #define V_CPL_RX_TLS_CMP_LENGTH(x)      ((x) << S_CPL_RX_TLS_CMP_LENGTH)
32133dde7c95SVishal Kulkarni #define G_CPL_RX_TLS_CMP_LENGTH(x)      \
32143dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_TLS_CMP_LENGTH) & M_CPL_RX_TLS_CMP_LENGTH)
32153dde7c95SVishal Kulkarni 
32163dde7c95SVishal Kulkarni #define S_SCMD_SEQ_NO_CTRL      29
32173dde7c95SVishal Kulkarni #define M_SCMD_SEQ_NO_CTRL      0x3
32183dde7c95SVishal Kulkarni #define V_SCMD_SEQ_NO_CTRL(x)   ((x) << S_SCMD_SEQ_NO_CTRL)
32193dde7c95SVishal Kulkarni #define G_SCMD_SEQ_NO_CTRL(x)   \
32203dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_SEQ_NO_CTRL) & M_SCMD_SEQ_NO_CTRL)
32213dde7c95SVishal Kulkarni 
32223dde7c95SVishal Kulkarni /* StsFieldPrsnt- Status field at the end of the TLS PDU */
32233dde7c95SVishal Kulkarni #define S_SCMD_STATUS_PRESENT   28
32243dde7c95SVishal Kulkarni #define M_SCMD_STATUS_PRESENT   0x1
32253dde7c95SVishal Kulkarni #define V_SCMD_STATUS_PRESENT(x)    ((x) << S_SCMD_STATUS_PRESENT)
32263dde7c95SVishal Kulkarni #define G_SCMD_STATUS_PRESENT(x)    \
32273dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_STATUS_PRESENT) & M_SCMD_STATUS_PRESENT)
32283dde7c95SVishal Kulkarni #define F_SCMD_STATUS_PRESENT   V_SCMD_STATUS_PRESENT(1U)
32293dde7c95SVishal Kulkarni 
32303dde7c95SVishal Kulkarni /* ProtoVersion - Protocol Version 0: 1.2, 1:1.1, 2:DTLS, 3:Generic,
32313dde7c95SVishal Kulkarni  * 3-15: Reserved. */
32323dde7c95SVishal Kulkarni #define S_SCMD_PROTO_VERSION    24
32333dde7c95SVishal Kulkarni #define M_SCMD_PROTO_VERSION    0xf
32343dde7c95SVishal Kulkarni #define V_SCMD_PROTO_VERSION(x) ((x) << S_SCMD_PROTO_VERSION)
32353dde7c95SVishal Kulkarni #define G_SCMD_PROTO_VERSION(x) \
32363dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_PROTO_VERSION) & M_SCMD_PROTO_VERSION)
32373dde7c95SVishal Kulkarni 
32383dde7c95SVishal Kulkarni /* EncDecCtrl - Encryption/Decryption Control. 0: Encrypt, 1: Decrypt */
32393dde7c95SVishal Kulkarni #define S_SCMD_ENC_DEC_CTRL     23
32403dde7c95SVishal Kulkarni #define M_SCMD_ENC_DEC_CTRL     0x1
32413dde7c95SVishal Kulkarni #define V_SCMD_ENC_DEC_CTRL(x)  ((x) << S_SCMD_ENC_DEC_CTRL)
32423dde7c95SVishal Kulkarni #define G_SCMD_ENC_DEC_CTRL(x)  \
32433dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_ENC_DEC_CTRL) & M_SCMD_ENC_DEC_CTRL)
32443dde7c95SVishal Kulkarni #define F_SCMD_ENC_DEC_CTRL V_SCMD_ENC_DEC_CTRL(1U)
32453dde7c95SVishal Kulkarni 
32463dde7c95SVishal Kulkarni /* CipherAuthSeqCtrl - Cipher Authentication Sequence Control. */
32473dde7c95SVishal Kulkarni #define S_SCMD_CIPH_AUTH_SEQ_CTRL       22
32483dde7c95SVishal Kulkarni #define M_SCMD_CIPH_AUTH_SEQ_CTRL       0x1
32493dde7c95SVishal Kulkarni #define V_SCMD_CIPH_AUTH_SEQ_CTRL(x)    \
32503dde7c95SVishal Kulkarni 	((x) << S_SCMD_CIPH_AUTH_SEQ_CTRL)
32513dde7c95SVishal Kulkarni #define G_SCMD_CIPH_AUTH_SEQ_CTRL(x)    \
32523dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_CIPH_AUTH_SEQ_CTRL) & M_SCMD_CIPH_AUTH_SEQ_CTRL)
32533dde7c95SVishal Kulkarni #define F_SCMD_CIPH_AUTH_SEQ_CTRL   V_SCMD_CIPH_AUTH_SEQ_CTRL(1U)
32543dde7c95SVishal Kulkarni 
32553dde7c95SVishal Kulkarni /* CiphMode -  Cipher Mode. 0: NOP, 1:AES-CBC, 2:AES-GCM, 3:AES-CTR,
32563dde7c95SVishal Kulkarni  * 4:Generic-AES, 5-15: Reserved. */
32573dde7c95SVishal Kulkarni #define S_SCMD_CIPH_MODE    18
32583dde7c95SVishal Kulkarni #define M_SCMD_CIPH_MODE    0xf
32593dde7c95SVishal Kulkarni #define V_SCMD_CIPH_MODE(x) ((x) << S_SCMD_CIPH_MODE)
32603dde7c95SVishal Kulkarni #define G_SCMD_CIPH_MODE(x) \
32613dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_CIPH_MODE) & M_SCMD_CIPH_MODE)
32623dde7c95SVishal Kulkarni 
32633dde7c95SVishal Kulkarni /* AuthMode - Auth Mode. 0: NOP, 1:SHA1, 2:SHA2-224, 3:SHA2-256
32643dde7c95SVishal Kulkarni  * 4-15: Reserved */
32653dde7c95SVishal Kulkarni #define S_SCMD_AUTH_MODE    14
32663dde7c95SVishal Kulkarni #define M_SCMD_AUTH_MODE    0xf
32673dde7c95SVishal Kulkarni #define V_SCMD_AUTH_MODE(x) ((x) << S_SCMD_AUTH_MODE)
32683dde7c95SVishal Kulkarni #define G_SCMD_AUTH_MODE(x) \
32693dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_AUTH_MODE) & M_SCMD_AUTH_MODE)
32703dde7c95SVishal Kulkarni 
32713dde7c95SVishal Kulkarni /* HmacCtrl - HMAC Control. 0:NOP, 1:No truncation, 2:Support HMAC Truncation
32723dde7c95SVishal Kulkarni  * per RFC 4366, 3:IPSec 96 bits, 4-7:Reserved
32733dde7c95SVishal Kulkarni  */
32743dde7c95SVishal Kulkarni #define S_SCMD_HMAC_CTRL    11
32753dde7c95SVishal Kulkarni #define M_SCMD_HMAC_CTRL    0x7
32763dde7c95SVishal Kulkarni #define V_SCMD_HMAC_CTRL(x) ((x) << S_SCMD_HMAC_CTRL)
32773dde7c95SVishal Kulkarni #define G_SCMD_HMAC_CTRL(x) \
32783dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_HMAC_CTRL) & M_SCMD_HMAC_CTRL)
32793dde7c95SVishal Kulkarni 
32803dde7c95SVishal Kulkarni /* IvSize - IV size in units of 2 bytes */
32813dde7c95SVishal Kulkarni #define S_SCMD_IV_SIZE  7
32823dde7c95SVishal Kulkarni #define M_SCMD_IV_SIZE  0xf
32833dde7c95SVishal Kulkarni #define V_SCMD_IV_SIZE(x)   ((x) << S_SCMD_IV_SIZE)
32843dde7c95SVishal Kulkarni #define G_SCMD_IV_SIZE(x)   \
32853dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_IV_SIZE) & M_SCMD_IV_SIZE)
32863dde7c95SVishal Kulkarni 
32873dde7c95SVishal Kulkarni /* NumIVs - Number of IVs */
32883dde7c95SVishal Kulkarni #define S_SCMD_NUM_IVS  0
32893dde7c95SVishal Kulkarni #define M_SCMD_NUM_IVS  0x7f
32903dde7c95SVishal Kulkarni #define V_SCMD_NUM_IVS(x)   ((x) << S_SCMD_NUM_IVS)
32913dde7c95SVishal Kulkarni #define G_SCMD_NUM_IVS(x)   \
32923dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_NUM_IVS) & M_SCMD_NUM_IVS)
32933dde7c95SVishal Kulkarni 
32943dde7c95SVishal Kulkarni /* EnbDbgId - If this is enabled upper 20 (63:44) bits if SeqNumber
32953dde7c95SVishal Kulkarni  * (below) are used as Cid (connection id for debug status), these
32963dde7c95SVishal Kulkarni  * bits are padded to zero for forming the 64 bit
32973dde7c95SVishal Kulkarni  * sequence number for TLS
32983dde7c95SVishal Kulkarni  */
32993dde7c95SVishal Kulkarni #define S_SCMD_ENB_DBGID  31
33003dde7c95SVishal Kulkarni #define M_SCMD_ENB_DBGID  0x1
33013dde7c95SVishal Kulkarni #define V_SCMD_ENB_DBGID(x)   ((x) << S_SCMD_ENB_DBGID)
33023dde7c95SVishal Kulkarni #define G_SCMD_ENB_DBGID(x)   \
33033dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_ENB_DBGID) & M_SCMD_ENB_DBGID)
33043dde7c95SVishal Kulkarni 
33053dde7c95SVishal Kulkarni /* IV generation in SW. */
33063dde7c95SVishal Kulkarni #define S_SCMD_IV_GEN_CTRL      30
33073dde7c95SVishal Kulkarni #define M_SCMD_IV_GEN_CTRL      0x1
33083dde7c95SVishal Kulkarni #define V_SCMD_IV_GEN_CTRL(x)   ((x) << S_SCMD_IV_GEN_CTRL)
33093dde7c95SVishal Kulkarni #define G_SCMD_IV_GEN_CTRL(x)   \
33103dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_IV_GEN_CTRL) & M_SCMD_IV_GEN_CTRL)
33113dde7c95SVishal Kulkarni #define F_SCMD_IV_GEN_CTRL  V_SCMD_IV_GEN_CTRL(1U)
33123dde7c95SVishal Kulkarni 
33133dde7c95SVishal Kulkarni /* More frags */
33143dde7c95SVishal Kulkarni #define S_SCMD_MORE_FRAGS   20
33153dde7c95SVishal Kulkarni #define M_SCMD_MORE_FRAGS   0x1
33163dde7c95SVishal Kulkarni #define V_SCMD_MORE_FRAGS(x)    ((x) << S_SCMD_MORE_FRAGS)
33173dde7c95SVishal Kulkarni #define G_SCMD_MORE_FRAGS(x)    (((x) >> S_SCMD_MORE_FRAGS) & M_SCMD_MORE_FRAGS)
33183dde7c95SVishal Kulkarni 
33193dde7c95SVishal Kulkarni /*last frag */
33203dde7c95SVishal Kulkarni #define S_SCMD_LAST_FRAG    19
33213dde7c95SVishal Kulkarni #define M_SCMD_LAST_FRAG    0x1
33223dde7c95SVishal Kulkarni #define V_SCMD_LAST_FRAG(x) ((x) << S_SCMD_LAST_FRAG)
33233dde7c95SVishal Kulkarni #define G_SCMD_LAST_FRAG(x) (((x) >> S_SCMD_LAST_FRAG) & M_SCMD_LAST_FRAG)
33243dde7c95SVishal Kulkarni 
33253dde7c95SVishal Kulkarni /* TlsCompPdu */
33263dde7c95SVishal Kulkarni #define S_SCMD_TLS_COMPPDU    18
33273dde7c95SVishal Kulkarni #define M_SCMD_TLS_COMPPDU    0x1
33283dde7c95SVishal Kulkarni #define V_SCMD_TLS_COMPPDU(x) ((x) << S_SCMD_TLS_COMPPDU)
33293dde7c95SVishal Kulkarni #define G_SCMD_TLS_COMPPDU(x) (((x) >> S_SCMD_TLS_COMPPDU) & M_SCMD_TLS_COMPPDU)
33303dde7c95SVishal Kulkarni 
33313dde7c95SVishal Kulkarni /* KeyCntxtInline - Key context inline after the scmd  OR PayloadOnly*/
33323dde7c95SVishal Kulkarni #define S_SCMD_KEY_CTX_INLINE   17
33333dde7c95SVishal Kulkarni #define M_SCMD_KEY_CTX_INLINE   0x1
33343dde7c95SVishal Kulkarni #define V_SCMD_KEY_CTX_INLINE(x)    ((x) << S_SCMD_KEY_CTX_INLINE)
33353dde7c95SVishal Kulkarni #define G_SCMD_KEY_CTX_INLINE(x)    \
33363dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_KEY_CTX_INLINE) & M_SCMD_KEY_CTX_INLINE)
33373dde7c95SVishal Kulkarni #define F_SCMD_KEY_CTX_INLINE   V_SCMD_KEY_CTX_INLINE(1U)
33383dde7c95SVishal Kulkarni 
33393dde7c95SVishal Kulkarni /* TLSFragEnable - 0: Host created TLS PDUs, 1: TLS Framgmentation in ASIC */
33403dde7c95SVishal Kulkarni #define S_SCMD_TLS_FRAG_ENABLE  16
33413dde7c95SVishal Kulkarni #define M_SCMD_TLS_FRAG_ENABLE  0x1
33423dde7c95SVishal Kulkarni #define V_SCMD_TLS_FRAG_ENABLE(x)   ((x) << S_SCMD_TLS_FRAG_ENABLE)
33433dde7c95SVishal Kulkarni #define G_SCMD_TLS_FRAG_ENABLE(x)   \
33443dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_TLS_FRAG_ENABLE) & M_SCMD_TLS_FRAG_ENABLE)
33453dde7c95SVishal Kulkarni #define F_SCMD_TLS_FRAG_ENABLE  V_SCMD_TLS_FRAG_ENABLE(1U)
33463dde7c95SVishal Kulkarni 
33473dde7c95SVishal Kulkarni /* MacOnly - Only send the MAC and discard PDU. This is valid for hash only
33483dde7c95SVishal Kulkarni  * modes, in this case TLS_TX  will drop the PDU and only
33493dde7c95SVishal Kulkarni  * send back the MAC bytes. */
33503dde7c95SVishal Kulkarni #define S_SCMD_MAC_ONLY 15
33513dde7c95SVishal Kulkarni #define M_SCMD_MAC_ONLY 0x1
33523dde7c95SVishal Kulkarni #define V_SCMD_MAC_ONLY(x)  ((x) << S_SCMD_MAC_ONLY)
33533dde7c95SVishal Kulkarni #define G_SCMD_MAC_ONLY(x)  \
33543dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_MAC_ONLY) & M_SCMD_MAC_ONLY)
33553dde7c95SVishal Kulkarni #define F_SCMD_MAC_ONLY V_SCMD_MAC_ONLY(1U)
33563dde7c95SVishal Kulkarni 
33573dde7c95SVishal Kulkarni /* AadIVDrop - Drop the AAD and IV fields. Useful in protocols
33583dde7c95SVishal Kulkarni  * which have complex AAD and IV formations Eg:AES-CCM
33593dde7c95SVishal Kulkarni  */
33603dde7c95SVishal Kulkarni #define S_SCMD_AADIVDROP 14
33613dde7c95SVishal Kulkarni #define M_SCMD_AADIVDROP 0x1
33623dde7c95SVishal Kulkarni #define V_SCMD_AADIVDROP(x)  ((x) << S_SCMD_AADIVDROP)
33633dde7c95SVishal Kulkarni #define G_SCMD_AADIVDROP(x)  \
33643dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_AADIVDROP) & M_SCMD_AADIVDROP)
33653dde7c95SVishal Kulkarni #define F_SCMD_AADIVDROP V_SCMD_AADIVDROP(1U)
33663dde7c95SVishal Kulkarni 
33673dde7c95SVishal Kulkarni /* HdrLength - Length of all headers excluding TLS header
33683dde7c95SVishal Kulkarni  * present before start of crypto PDU/payload. */
33693dde7c95SVishal Kulkarni #define S_SCMD_HDR_LEN  0
33703dde7c95SVishal Kulkarni #define M_SCMD_HDR_LEN  0x3fff
33713dde7c95SVishal Kulkarni #define V_SCMD_HDR_LEN(x)   ((x) << S_SCMD_HDR_LEN)
33723dde7c95SVishal Kulkarni #define G_SCMD_HDR_LEN(x)   \
33733dde7c95SVishal Kulkarni 	(((x) >> S_SCMD_HDR_LEN) & M_SCMD_HDR_LEN)
33743dde7c95SVishal Kulkarni 
33753dde7c95SVishal Kulkarni struct cpl_tx_sec_pdu {
33763dde7c95SVishal Kulkarni 	__be32 op_ivinsrtofst;
33773dde7c95SVishal Kulkarni 	__be32 pldlen;
33783dde7c95SVishal Kulkarni 	__be32 aadstart_cipherstop_hi;
33793dde7c95SVishal Kulkarni 	__be32 cipherstop_lo_authinsert;
33803dde7c95SVishal Kulkarni 	__be32 seqno_numivs;
33813dde7c95SVishal Kulkarni 	__be32 ivgen_hdrlen;
33823dde7c95SVishal Kulkarni 	__be64 scmd1;
33833dde7c95SVishal Kulkarni };
33843dde7c95SVishal Kulkarni 
33853dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_OPCODE     24
33863dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_OPCODE     0xff
33873dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_OPCODE(x)  ((x) << S_CPL_TX_SEC_PDU_OPCODE)
33883dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_OPCODE(x)  \
33893dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_OPCODE) & M_CPL_TX_SEC_PDU_OPCODE)
33903dde7c95SVishal Kulkarni 
33913dde7c95SVishal Kulkarni /* RX Channel Id */
33923dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_RXCHID  22
33933dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_RXCHID  0x1
33943dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_RXCHID(x)   ((x) << S_CPL_TX_SEC_PDU_RXCHID)
33953dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_RXCHID(x)   \
33963dde7c95SVishal Kulkarni (((x) >> S_CPL_TX_SEC_PDU_RXCHID) & M_CPL_TX_SEC_PDU_RXCHID)
33973dde7c95SVishal Kulkarni #define F_CPL_TX_SEC_PDU_RXCHID  V_CPL_TX_SEC_PDU_RXCHID(1U)
33983dde7c95SVishal Kulkarni 
33993dde7c95SVishal Kulkarni /* Ack Follows */
34003dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_ACKFOLLOWS  21
34013dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_ACKFOLLOWS  0x1
34023dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_ACKFOLLOWS(x)   ((x) << S_CPL_TX_SEC_PDU_ACKFOLLOWS)
34033dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_ACKFOLLOWS(x)   \
34043dde7c95SVishal Kulkarni (((x) >> S_CPL_TX_SEC_PDU_ACKFOLLOWS) & M_CPL_TX_SEC_PDU_ACKFOLLOWS)
34053dde7c95SVishal Kulkarni #define F_CPL_TX_SEC_PDU_ACKFOLLOWS  V_CPL_TX_SEC_PDU_ACKFOLLOWS(1U)
34063dde7c95SVishal Kulkarni 
34073dde7c95SVishal Kulkarni /* Loopback bit in cpl_tx_sec_pdu */
34083dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_ULPTXLPBK  20
34093dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_ULPTXLPBK  0x1
34103dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_ULPTXLPBK(x)   ((x) << S_CPL_TX_SEC_PDU_ULPTXLPBK)
34113dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_ULPTXLPBK(x)   \
34123dde7c95SVishal Kulkarni (((x) >> S_CPL_TX_SEC_PDU_ULPTXLPBK) & M_CPL_TX_SEC_PDU_ULPTXLPBK)
34133dde7c95SVishal Kulkarni #define F_CPL_TX_SEC_PDU_ULPTXLPBK  V_CPL_TX_SEC_PDU_ULPTXLPBK(1U)
34143dde7c95SVishal Kulkarni 
34153dde7c95SVishal Kulkarni /* Length of cpl header encapsulated */
34163dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_CPLLEN     16
34173dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_CPLLEN     0xf
34183dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_CPLLEN(x)  ((x) << S_CPL_TX_SEC_PDU_CPLLEN)
34193dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_CPLLEN(x)  \
34203dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_CPLLEN) & M_CPL_TX_SEC_PDU_CPLLEN)
34213dde7c95SVishal Kulkarni 
34223dde7c95SVishal Kulkarni /* PlaceHolder */
34233dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_PLACEHOLDER    10
34243dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_PLACEHOLDER    0x1
34253dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_PLACEHOLDER(x) ((x) << S_CPL_TX_SEC_PDU_PLACEHOLDER)
34263dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_PLACEHOLDER(x) \
34273dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_PLACEHOLDER) & \
34283dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_PLACEHOLDER)
34293dde7c95SVishal Kulkarni 
34303dde7c95SVishal Kulkarni /* IvInsrtOffset: Insertion location for IV */
34313dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_IVINSRTOFST    0
34323dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_IVINSRTOFST    0x3ff
34333dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_IVINSRTOFST(x) ((x) << S_CPL_TX_SEC_PDU_IVINSRTOFST)
34343dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_IVINSRTOFST(x) \
34353dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_IVINSRTOFST) & \
34363dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_IVINSRTOFST)
34373dde7c95SVishal Kulkarni 
34383dde7c95SVishal Kulkarni /* AadStartOffset: Offset in bytes for AAD start from
34393dde7c95SVishal Kulkarni  * the first byte following
34403dde7c95SVishal Kulkarni  * the pkt headers (0-255
34413dde7c95SVishal Kulkarni  *  bytes) */
34423dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_AADSTART   24
34433dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_AADSTART   0xff
34443dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_AADSTART(x)    ((x) << S_CPL_TX_SEC_PDU_AADSTART)
34453dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_AADSTART(x)    \
34463dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_AADSTART) & \
34473dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_AADSTART)
34483dde7c95SVishal Kulkarni 
34493dde7c95SVishal Kulkarni /* AadStopOffset: offset in bytes for AAD stop/end from the first byte following
34503dde7c95SVishal Kulkarni  * the pkt headers (0-511 bytes) */
34513dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_AADSTOP    15
34523dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_AADSTOP    0x1ff
34533dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_AADSTOP(x) ((x) << S_CPL_TX_SEC_PDU_AADSTOP)
34543dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_AADSTOP(x) \
34553dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_AADSTOP) & M_CPL_TX_SEC_PDU_AADSTOP)
34563dde7c95SVishal Kulkarni 
34573dde7c95SVishal Kulkarni /* CipherStartOffset: offset in bytes for encryption/decryption start from the
34583dde7c95SVishal Kulkarni  * first byte following the pkt headers (0-1023
34593dde7c95SVishal Kulkarni  *  bytes) */
34603dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_CIPHERSTART    5
34613dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_CIPHERSTART    0x3ff
34623dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_CIPHERSTART(x) ((x) << S_CPL_TX_SEC_PDU_CIPHERSTART)
34633dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_CIPHERSTART(x) \
34643dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_CIPHERSTART) & \
34653dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_CIPHERSTART)
34663dde7c95SVishal Kulkarni 
34673dde7c95SVishal Kulkarni /* CipherStopOffset: offset in bytes for encryption/decryption end
34683dde7c95SVishal Kulkarni  * from end of the payload of this command (0-511 bytes) */
34693dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_CIPHERSTOP_HI      0
34703dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_CIPHERSTOP_HI      0x1f
34713dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_CIPHERSTOP_HI(x)   \
34723dde7c95SVishal Kulkarni 	((x) << S_CPL_TX_SEC_PDU_CIPHERSTOP_HI)
34733dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_CIPHERSTOP_HI(x)   \
34743dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_CIPHERSTOP_HI) & \
34753dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_CIPHERSTOP_HI)
34763dde7c95SVishal Kulkarni 
34773dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_CIPHERSTOP_LO      28
34783dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_CIPHERSTOP_LO      0xf
34793dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_CIPHERSTOP_LO(x)   \
34803dde7c95SVishal Kulkarni 	((x) << S_CPL_TX_SEC_PDU_CIPHERSTOP_LO)
34813dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_CIPHERSTOP_LO(x)   \
34823dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_CIPHERSTOP_LO) & \
34833dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_CIPHERSTOP_LO)
34843dde7c95SVishal Kulkarni 
34853dde7c95SVishal Kulkarni /* AuthStartOffset: offset in bytes for authentication start from
34863dde7c95SVishal Kulkarni  * the first byte following the pkt headers (0-1023)
34873dde7c95SVishal Kulkarni  *  */
34883dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_AUTHSTART  18
34893dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_AUTHSTART  0x3ff
34903dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_AUTHSTART(x)   ((x) << S_CPL_TX_SEC_PDU_AUTHSTART)
34913dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_AUTHSTART(x)   \
34923dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_AUTHSTART) & \
34933dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_AUTHSTART)
34943dde7c95SVishal Kulkarni 
34953dde7c95SVishal Kulkarni /* AuthStopOffset: offset in bytes for authentication
34963dde7c95SVishal Kulkarni  * end from end of the payload of this command (0-511 Bytes) */
34973dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_AUTHSTOP   9
34983dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_AUTHSTOP   0x1ff
34993dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_AUTHSTOP(x)    ((x) << S_CPL_TX_SEC_PDU_AUTHSTOP)
35003dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_AUTHSTOP(x)    \
35013dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_AUTHSTOP) & \
35023dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_AUTHSTOP)
35033dde7c95SVishal Kulkarni 
35043dde7c95SVishal Kulkarni /* AuthInsrtOffset: offset in bytes for authentication insertion
35053dde7c95SVishal Kulkarni  * from end of the payload of this command (0-511 bytes) */
35063dde7c95SVishal Kulkarni #define S_CPL_TX_SEC_PDU_AUTHINSERT 0
35073dde7c95SVishal Kulkarni #define M_CPL_TX_SEC_PDU_AUTHINSERT 0x1ff
35083dde7c95SVishal Kulkarni #define V_CPL_TX_SEC_PDU_AUTHINSERT(x)  ((x) << S_CPL_TX_SEC_PDU_AUTHINSERT)
35093dde7c95SVishal Kulkarni #define G_CPL_TX_SEC_PDU_AUTHINSERT(x)  \
35103dde7c95SVishal Kulkarni 	(((x) >> S_CPL_TX_SEC_PDU_AUTHINSERT) & \
35113dde7c95SVishal Kulkarni 	 M_CPL_TX_SEC_PDU_AUTHINSERT)
35123dde7c95SVishal Kulkarni 
35133dde7c95SVishal Kulkarni struct cpl_rx_phys_dsgl {
35143dde7c95SVishal Kulkarni 	__be32 op_to_tid;
35153dde7c95SVishal Kulkarni 	__be32 pcirlxorder_to_noofsgentr;
35163dde7c95SVishal Kulkarni 	struct rss_header rss_hdr_int;
35173dde7c95SVishal Kulkarni };
35183dde7c95SVishal Kulkarni 
35193dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_OPCODE       24
35203dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_OPCODE       0xff
35213dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_OPCODE(x)    ((x) << S_CPL_RX_PHYS_DSGL_OPCODE)
35223dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_OPCODE(x)    \
35233dde7c95SVishal Kulkarni 	    (((x) >> S_CPL_RX_PHYS_DSGL_OPCODE) & M_CPL_RX_PHYS_DSGL_OPCODE)
35243dde7c95SVishal Kulkarni 
35253dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_ISRDMA       23
35263dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_ISRDMA       0x1
35273dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_ISRDMA(x)    ((x) << S_CPL_RX_PHYS_DSGL_ISRDMA)
35283dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_ISRDMA(x)    \
35293dde7c95SVishal Kulkarni 	    (((x) >> S_CPL_RX_PHYS_DSGL_ISRDMA) & M_CPL_RX_PHYS_DSGL_ISRDMA)
35303dde7c95SVishal Kulkarni #define F_CPL_RX_PHYS_DSGL_ISRDMA       V_CPL_RX_PHYS_DSGL_ISRDMA(1U)
35313dde7c95SVishal Kulkarni 
35323dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_RSVD1        20
35333dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_RSVD1        0x7
35343dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_RSVD1(x)     ((x) << S_CPL_RX_PHYS_DSGL_RSVD1)
35353dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_RSVD1(x)     \
35363dde7c95SVishal Kulkarni 	    (((x) >> S_CPL_RX_PHYS_DSGL_RSVD1) & M_CPL_RX_PHYS_DSGL_RSVD1)
35373dde7c95SVishal Kulkarni 
35383dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_PCIRLXORDER          31
35393dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_PCIRLXORDER          0x1
35403dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_PCIRLXORDER(x)       \
35413dde7c95SVishal Kulkarni 	((x) << S_CPL_RX_PHYS_DSGL_PCIRLXORDER)
35423dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_PCIRLXORDER(x)       \
35433dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_PHYS_DSGL_PCIRLXORDER) & \
35443dde7c95SVishal Kulkarni 	 M_CPL_RX_PHYS_DSGL_PCIRLXORDER)
35453dde7c95SVishal Kulkarni #define F_CPL_RX_PHYS_DSGL_PCIRLXORDER  V_CPL_RX_PHYS_DSGL_PCIRLXORDER(1U)
35463dde7c95SVishal Kulkarni 
35473dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_PCINOSNOOP           30
35483dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_PCINOSNOOP           0x1
35493dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_PCINOSNOOP(x)        \
35503dde7c95SVishal Kulkarni 	((x) << S_CPL_RX_PHYS_DSGL_PCINOSNOOP)
35513dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_PCINOSNOOP(x)        \
35523dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_PHYS_DSGL_PCINOSNOOP) & \
35533dde7c95SVishal Kulkarni 	 M_CPL_RX_PHYS_DSGL_PCINOSNOOP)
35543dde7c95SVishal Kulkarni #define F_CPL_RX_PHYS_DSGL_PCINOSNOOP   V_CPL_RX_PHYS_DSGL_PCINOSNOOP(1U)
35553dde7c95SVishal Kulkarni 
35563dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_PCITPHNTENB          29
35573dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_PCITPHNTENB          0x1
35583dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_PCITPHNTENB(x)       \
35593dde7c95SVishal Kulkarni 	((x) << S_CPL_RX_PHYS_DSGL_PCITPHNTENB)
35603dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_PCITPHNTENB(x)       \
35613dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_PHYS_DSGL_PCITPHNTENB) & \
35623dde7c95SVishal Kulkarni 	 M_CPL_RX_PHYS_DSGL_PCITPHNTENB)
35633dde7c95SVishal Kulkarni #define F_CPL_RX_PHYS_DSGL_PCITPHNTENB  V_CPL_RX_PHYS_DSGL_PCITPHNTENB(1U)
35643dde7c95SVishal Kulkarni 
35653dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_PCITPHNT     27
35663dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_PCITPHNT     0x3
35673dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_PCITPHNT(x)  ((x) << S_CPL_RX_PHYS_DSGL_PCITPHNT)
35683dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_PCITPHNT(x)  \
35693dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_PHYS_DSGL_PCITPHNT) & \
35703dde7c95SVishal Kulkarni 	M_CPL_RX_PHYS_DSGL_PCITPHNT)
35713dde7c95SVishal Kulkarni 
35723dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_DCAID        16
35733dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_DCAID        0x7ff
35743dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_DCAID(x)     ((x) << S_CPL_RX_PHYS_DSGL_DCAID)
35753dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_DCAID(x)     \
35763dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_PHYS_DSGL_DCAID) & \
35773dde7c95SVishal Kulkarni 	 M_CPL_RX_PHYS_DSGL_DCAID)
35783dde7c95SVishal Kulkarni 
35793dde7c95SVishal Kulkarni #define S_CPL_RX_PHYS_DSGL_NOOFSGENTR           0
35803dde7c95SVishal Kulkarni #define M_CPL_RX_PHYS_DSGL_NOOFSGENTR           0xffff
35813dde7c95SVishal Kulkarni #define V_CPL_RX_PHYS_DSGL_NOOFSGENTR(x)        \
35823dde7c95SVishal Kulkarni 	((x) << S_CPL_RX_PHYS_DSGL_NOOFSGENTR)
35833dde7c95SVishal Kulkarni #define G_CPL_RX_PHYS_DSGL_NOOFSGENTR(x)        \
35843dde7c95SVishal Kulkarni 	(((x) >> S_CPL_RX_PHYS_DSGL_NOOFSGENTR) & \
35853dde7c95SVishal Kulkarni 	 M_CPL_RX_PHYS_DSGL_NOOFSGENTR)
35863dde7c95SVishal Kulkarni 
35873dde7c95SVishal Kulkarni /* CPL_TX_TLS_ACK */
35883dde7c95SVishal Kulkarni struct cpl_tx_tls_ack {
35893dde7c95SVishal Kulkarni         __be32 op_to_Rsvd2;
35903dde7c95SVishal Kulkarni         __be32 PldLen;
35913dde7c95SVishal Kulkarni         __be64 Rsvd3;
35923dde7c95SVishal Kulkarni };
35933dde7c95SVishal Kulkarni 
35943dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_OPCODE         24
35953dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_OPCODE         0xff
35963dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_OPCODE(x)      ((x) << S_CPL_TX_TLS_ACK_OPCODE)
35973dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_OPCODE(x)      \
35983dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_OPCODE) & M_CPL_TX_TLS_ACK_OPCODE)
35993dde7c95SVishal Kulkarni 
36003dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_RSVD1          23
36013dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_RSVD1          0x1
36023dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_RSVD1(x)       ((x) << S_CPL_TX_TLS_ACK_RSVD1)
36033dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_RSVD1(x)       \
36043dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_RSVD1) & M_CPL_TX_TLS_ACK_RSVD1)
36053dde7c95SVishal Kulkarni #define F_CPL_TX_TLS_ACK_RSVD1  V_CPL_TX_TLS_ACK_RSVD1(1U)
36063dde7c95SVishal Kulkarni 
36073dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_RXCHID         22
36083dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_RXCHID         0x1
36093dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_RXCHID(x)      ((x) << S_CPL_TX_TLS_ACK_RXCHID)
36103dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_RXCHID(x)      \
36113dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_RXCHID) & M_CPL_TX_TLS_ACK_RXCHID)
36123dde7c95SVishal Kulkarni #define F_CPL_TX_TLS_ACK_RXCHID V_CPL_TX_TLS_ACK_RXCHID(1U)
36133dde7c95SVishal Kulkarni 
36143dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_FWMSG          21
36153dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_FWMSG          0x1
36163dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_FWMSG(x)       ((x) << S_CPL_TX_TLS_ACK_FWMSG)
36173dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_FWMSG(x)       \
36183dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_FWMSG) & M_CPL_TX_TLS_ACK_FWMSG)
36193dde7c95SVishal Kulkarni #define F_CPL_TX_TLS_ACK_FWMSG  V_CPL_TX_TLS_ACK_FWMSG(1U)
36203dde7c95SVishal Kulkarni 
36213dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_ULPTXLPBK      20
36223dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_ULPTXLPBK      0x1
36233dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_ULPTXLPBK(x)   ((x) << S_CPL_TX_TLS_ACK_ULPTXLPBK)
36243dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_ULPTXLPBK(x)   \
36253dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_ULPTXLPBK) & M_CPL_TX_TLS_ACK_ULPTXLPBK)
36263dde7c95SVishal Kulkarni #define F_CPL_TX_TLS_ACK_ULPTXLPBK      V_CPL_TX_TLS_ACK_ULPTXLPBK(1U)
36273dde7c95SVishal Kulkarni 
36283dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_CPLLEN         16
36293dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_CPLLEN         0xf
36303dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_CPLLEN(x)      ((x) << S_CPL_TX_TLS_ACK_CPLLEN)
36313dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_CPLLEN(x)      \
36323dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_CPLLEN) & M_CPL_TX_TLS_ACK_CPLLEN)
36333dde7c95SVishal Kulkarni 
36343dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_COMPLONERR     15
36353dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_COMPLONERR     0x1
36363dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_COMPLONERR(x)  ((x) << S_CPL_TX_TLS_ACK_COMPLONERR)
36373dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_COMPLONERR(x)  \
36383dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_COMPLONERR) & M_CPL_TX_TLS_ACK_COMPLONERR)
36393dde7c95SVishal Kulkarni #define F_CPL_TX_TLS_ACK_COMPLONERR     V_CPL_TX_TLS_ACK_COMPLONERR(1U)
36403dde7c95SVishal Kulkarni 
36413dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_LCB    14
36423dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_LCB    0x1
36433dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_LCB(x) ((x) << S_CPL_TX_TLS_ACK_LCB)
36443dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_LCB(x) \
36453dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_LCB) & M_CPL_TX_TLS_ACK_LCB)
36463dde7c95SVishal Kulkarni #define F_CPL_TX_TLS_ACK_LCB    V_CPL_TX_TLS_ACK_LCB(1U)
36473dde7c95SVishal Kulkarni 
36483dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_PHASH          13
36493dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_PHASH          0x1
36503dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_PHASH(x)       ((x) << S_CPL_TX_TLS_ACK_PHASH)
36513dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_PHASH(x)       \
36523dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_PHASH) & M_CPL_TX_TLS_ACK_PHASH)
36533dde7c95SVishal Kulkarni #define F_CPL_TX_TLS_ACK_PHASH  V_CPL_TX_TLS_ACK_PHASH(1U)
36543dde7c95SVishal Kulkarni 
36553dde7c95SVishal Kulkarni #define S_CPL_TX_TLS_ACK_RSVD2          0
36563dde7c95SVishal Kulkarni #define M_CPL_TX_TLS_ACK_RSVD2          0x1fff
36573dde7c95SVishal Kulkarni #define V_CPL_TX_TLS_ACK_RSVD2(x)       ((x) << S_CPL_TX_TLS_ACK_RSVD2)
36583dde7c95SVishal Kulkarni #define G_CPL_TX_TLS_ACK_RSVD2(x)       \
36593dde7c95SVishal Kulkarni     (((x) >> S_CPL_TX_TLS_ACK_RSVD2) & M_CPL_TX_TLS_ACK_RSVD2)
36603dde7c95SVishal Kulkarni 
36613dde7c95SVishal Kulkarni #endif  /* T4_MSG_H */
3662