Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
   1
   2/* cnic.c: Broadcom CNIC core network driver.
   3 *
   4 * Copyright (c) 2006-2009 Broadcom Corporation
   5 *
   6 * This program is free software; you can redistribute it and/or modify
   7 * it under the terms of the GNU General Public License as published by
   8 * the Free Software Foundation.
   9 *
  10 */
  11
  12#ifndef CNIC_DEFS_H
  13#define CNIC_DEFS_H
  14
  15/* KWQ (kernel work queue) request op codes */
  16#define L2_KWQE_OPCODE_VALUE_FLUSH                  (4)
  17#define L2_KWQE_OPCODE_VALUE_VM_FREE_RX_QUEUE       (8)
  18
  19#define L4_KWQE_OPCODE_VALUE_CONNECT1               (50)
  20#define L4_KWQE_OPCODE_VALUE_CONNECT2               (51)
  21#define L4_KWQE_OPCODE_VALUE_CONNECT3               (52)
  22#define L4_KWQE_OPCODE_VALUE_RESET                  (53)
  23#define L4_KWQE_OPCODE_VALUE_CLOSE                  (54)
  24#define L4_KWQE_OPCODE_VALUE_UPDATE_SECRET          (60)
  25#define L4_KWQE_OPCODE_VALUE_INIT_ULP               (61)
  26
  27#define L4_KWQE_OPCODE_VALUE_OFFLOAD_PG             (1)
  28#define L4_KWQE_OPCODE_VALUE_UPDATE_PG              (9)
  29#define L4_KWQE_OPCODE_VALUE_UPLOAD_PG              (14)
  30
  31#define L5CM_RAMROD_CMD_ID_BASE			(0x80)
  32#define L5CM_RAMROD_CMD_ID_TCP_CONNECT		(L5CM_RAMROD_CMD_ID_BASE + 3)
  33#define L5CM_RAMROD_CMD_ID_CLOSE		(L5CM_RAMROD_CMD_ID_BASE + 12)
  34#define L5CM_RAMROD_CMD_ID_ABORT		(L5CM_RAMROD_CMD_ID_BASE + 13)
  35#define L5CM_RAMROD_CMD_ID_SEARCHER_DELETE	(L5CM_RAMROD_CMD_ID_BASE + 14)
  36#define L5CM_RAMROD_CMD_ID_TERMINATE_OFFLOAD	(L5CM_RAMROD_CMD_ID_BASE + 15)
  37
  38#define FCOE_KCQE_OPCODE_INIT_FUNC			(0x10)
  39#define FCOE_KCQE_OPCODE_DESTROY_FUNC			(0x11)
  40#define FCOE_KCQE_OPCODE_STAT_FUNC			(0x12)
  41#define FCOE_KCQE_OPCODE_OFFLOAD_CONN			(0x15)
  42#define FCOE_KCQE_OPCODE_ENABLE_CONN			(0x16)
  43#define FCOE_KCQE_OPCODE_DISABLE_CONN			(0x17)
  44#define FCOE_KCQE_OPCODE_DESTROY_CONN			(0x18)
  45#define FCOE_KCQE_OPCODE_CQ_EVENT_NOTIFICATION  (0x20)
  46#define FCOE_KCQE_OPCODE_FCOE_ERROR				(0x21)
  47
  48#define FCOE_RAMROD_CMD_ID_INIT_FUNC		(FCOE_KCQE_OPCODE_INIT_FUNC)
  49#define FCOE_RAMROD_CMD_ID_DESTROY_FUNC		(FCOE_KCQE_OPCODE_DESTROY_FUNC)
  50#define FCOE_RAMROD_CMD_ID_STAT_FUNC		(FCOE_KCQE_OPCODE_STAT_FUNC)
  51#define FCOE_RAMROD_CMD_ID_OFFLOAD_CONN		(FCOE_KCQE_OPCODE_OFFLOAD_CONN)
  52#define FCOE_RAMROD_CMD_ID_ENABLE_CONN		(FCOE_KCQE_OPCODE_ENABLE_CONN)
  53#define FCOE_RAMROD_CMD_ID_DISABLE_CONN		(FCOE_KCQE_OPCODE_DISABLE_CONN)
  54#define FCOE_RAMROD_CMD_ID_DESTROY_CONN		(FCOE_KCQE_OPCODE_DESTROY_CONN)
  55#define FCOE_RAMROD_CMD_ID_TERMINATE_CONN	(0x81)
  56
  57#define FCOE_KWQE_OPCODE_INIT1                  (0)
  58#define FCOE_KWQE_OPCODE_INIT2                  (1)
  59#define FCOE_KWQE_OPCODE_INIT3                  (2)
  60#define FCOE_KWQE_OPCODE_OFFLOAD_CONN1  (3)
  61#define FCOE_KWQE_OPCODE_OFFLOAD_CONN2  (4)
  62#define FCOE_KWQE_OPCODE_OFFLOAD_CONN3  (5)
  63#define FCOE_KWQE_OPCODE_OFFLOAD_CONN4  (6)
  64#define FCOE_KWQE_OPCODE_ENABLE_CONN	(7)
  65#define FCOE_KWQE_OPCODE_DISABLE_CONN	(8)
  66#define FCOE_KWQE_OPCODE_DESTROY_CONN	(9)
  67#define FCOE_KWQE_OPCODE_DESTROY		(10)
  68#define FCOE_KWQE_OPCODE_STAT			(11)
  69
  70#define FCOE_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAILURE	(0x3)
  71
  72/* KCQ (kernel completion queue) response op codes */
  73#define L4_KCQE_OPCODE_VALUE_CLOSE_COMP             (53)
  74#define L4_KCQE_OPCODE_VALUE_RESET_COMP             (54)
  75#define L4_KCQE_OPCODE_VALUE_FW_TCP_UPDATE          (55)
  76#define L4_KCQE_OPCODE_VALUE_CONNECT_COMPLETE       (56)
  77#define L4_KCQE_OPCODE_VALUE_RESET_RECEIVED         (57)
  78#define L4_KCQE_OPCODE_VALUE_CLOSE_RECEIVED         (58)
  79#define L4_KCQE_OPCODE_VALUE_INIT_ULP               (61)
  80
  81#define L4_KCQE_OPCODE_VALUE_OFFLOAD_PG             (1)
  82#define L4_KCQE_OPCODE_VALUE_UPDATE_PG              (9)
  83#define L4_KCQE_OPCODE_VALUE_UPLOAD_PG              (14)
  84
  85/* KCQ (kernel completion queue) completion status */
  86#define L4_KCQE_COMPLETION_STATUS_SUCCESS           (0)
  87#define L4_KCQE_COMPLETION_STATUS_TIMEOUT           (0x93)
  88
  89#define L4_KCQE_COMPLETION_STATUS_CTX_ALLOC_FAIL    (0x83)
  90#define L4_KCQE_COMPLETION_STATUS_OFFLOADED_PG      (0x89)
  91
  92#define L4_KCQE_OPCODE_VALUE_OOO_EVENT_NOTIFICATION (0xa0)
  93#define L4_KCQE_OPCODE_VALUE_OOO_FLUSH              (0xa1)
  94
  95#define L4_LAYER_CODE (4)
  96#define L2_LAYER_CODE (2)
  97
  98/*
  99 * L4 KCQ CQE
 100 */
 101struct l4_kcq {
 102	u32 cid;
 103	u32 pg_cid;
 104	u32 conn_id;
 105	u32 pg_host_opaque;
 106#if defined(__BIG_ENDIAN)
 107	u16 status;
 108	u16 reserved1;
 109#elif defined(__LITTLE_ENDIAN)
 110	u16 reserved1;
 111	u16 status;
 112#endif
 113	u32 reserved2[2];
 114#if defined(__BIG_ENDIAN)
 115	u8 flags;
 116#define L4_KCQ_RESERVED3 (0x7<<0)
 117#define L4_KCQ_RESERVED3_SHIFT 0
 118#define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
 119#define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
 120#define L4_KCQ_LAYER_CODE (0x7<<4)
 121#define L4_KCQ_LAYER_CODE_SHIFT 4
 122#define L4_KCQ_RESERVED4 (0x1<<7)
 123#define L4_KCQ_RESERVED4_SHIFT 7
 124	u8 op_code;
 125	u16 qe_self_seq;
 126#elif defined(__LITTLE_ENDIAN)
 127	u16 qe_self_seq;
 128	u8 op_code;
 129	u8 flags;
 130#define L4_KCQ_RESERVED3 (0xF<<0)
 131#define L4_KCQ_RESERVED3_SHIFT 0
 132#define L4_KCQ_RAMROD_COMPLETION (0x1<<3) /* Everest only */
 133#define L4_KCQ_RAMROD_COMPLETION_SHIFT 3
 134#define L4_KCQ_LAYER_CODE (0x7<<4)
 135#define L4_KCQ_LAYER_CODE_SHIFT 4
 136#define L4_KCQ_RESERVED4 (0x1<<7)
 137#define L4_KCQ_RESERVED4_SHIFT 7
 138#endif
 139};
 140
 141
 142/*
 143 * L4 KCQ CQE PG upload
 144 */
 145struct l4_kcq_upload_pg {
 146	u32 pg_cid;
 147#if defined(__BIG_ENDIAN)
 148	u16 pg_status;
 149	u16 pg_ipid_count;
 150#elif defined(__LITTLE_ENDIAN)
 151	u16 pg_ipid_count;
 152	u16 pg_status;
 153#endif
 154	u32 reserved1[5];
 155#if defined(__BIG_ENDIAN)
 156	u8 flags;
 157#define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
 158#define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
 159#define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
 160#define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
 161#define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
 162#define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
 163	u8 op_code;
 164	u16 qe_self_seq;
 165#elif defined(__LITTLE_ENDIAN)
 166	u16 qe_self_seq;
 167	u8 op_code;
 168	u8 flags;
 169#define L4_KCQ_UPLOAD_PG_RESERVED3 (0xF<<0)
 170#define L4_KCQ_UPLOAD_PG_RESERVED3_SHIFT 0
 171#define L4_KCQ_UPLOAD_PG_LAYER_CODE (0x7<<4)
 172#define L4_KCQ_UPLOAD_PG_LAYER_CODE_SHIFT 4
 173#define L4_KCQ_UPLOAD_PG_RESERVED4 (0x1<<7)
 174#define L4_KCQ_UPLOAD_PG_RESERVED4_SHIFT 7
 175#endif
 176};
 177
 178
 179/*
 180 * Gracefully close the connection request
 181 */
 182struct l4_kwq_close_req {
 183#if defined(__BIG_ENDIAN)
 184	u8 flags;
 185#define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
 186#define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
 187#define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
 188#define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
 189#define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
 190#define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
 191	u8 op_code;
 192	u16 reserved0;
 193#elif defined(__LITTLE_ENDIAN)
 194	u16 reserved0;
 195	u8 op_code;
 196	u8 flags;
 197#define L4_KWQ_CLOSE_REQ_RESERVED1 (0xF<<0)
 198#define L4_KWQ_CLOSE_REQ_RESERVED1_SHIFT 0
 199#define L4_KWQ_CLOSE_REQ_LAYER_CODE (0x7<<4)
 200#define L4_KWQ_CLOSE_REQ_LAYER_CODE_SHIFT 4
 201#define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT (0x1<<7)
 202#define L4_KWQ_CLOSE_REQ_LINKED_WITH_NEXT_SHIFT 7
 203#endif
 204	u32 cid;
 205	u32 reserved2[6];
 206};
 207
 208
 209/*
 210 * The first request to be passed in order to establish connection in option2
 211 */
 212struct l4_kwq_connect_req1 {
 213#if defined(__BIG_ENDIAN)
 214	u8 flags;
 215#define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
 216#define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
 217#define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
 218#define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
 219#define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
 220#define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
 221	u8 op_code;
 222	u8 reserved0;
 223	u8 conn_flags;
 224#define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
 225#define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
 226#define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
 227#define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
 228#define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
 229#define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
 230#define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
 231#define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
 232#elif defined(__LITTLE_ENDIAN)
 233	u8 conn_flags;
 234#define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE (0x1<<0)
 235#define L4_KWQ_CONNECT_REQ1_IS_PG_HOST_OPAQUE_SHIFT 0
 236#define L4_KWQ_CONNECT_REQ1_IP_V6 (0x1<<1)
 237#define L4_KWQ_CONNECT_REQ1_IP_V6_SHIFT 1
 238#define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG (0x1<<2)
 239#define L4_KWQ_CONNECT_REQ1_PASSIVE_FLAG_SHIFT 2
 240#define L4_KWQ_CONNECT_REQ1_RSRV (0x1F<<3)
 241#define L4_KWQ_CONNECT_REQ1_RSRV_SHIFT 3
 242	u8 reserved0;
 243	u8 op_code;
 244	u8 flags;
 245#define L4_KWQ_CONNECT_REQ1_RESERVED1 (0xF<<0)
 246#define L4_KWQ_CONNECT_REQ1_RESERVED1_SHIFT 0
 247#define L4_KWQ_CONNECT_REQ1_LAYER_CODE (0x7<<4)
 248#define L4_KWQ_CONNECT_REQ1_LAYER_CODE_SHIFT 4
 249#define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT (0x1<<7)
 250#define L4_KWQ_CONNECT_REQ1_LINKED_WITH_NEXT_SHIFT 7
 251#endif
 252	u32 cid;
 253	u32 pg_cid;
 254	u32 src_ip;
 255	u32 dst_ip;
 256#if defined(__BIG_ENDIAN)
 257	u16 dst_port;
 258	u16 src_port;
 259#elif defined(__LITTLE_ENDIAN)
 260	u16 src_port;
 261	u16 dst_port;
 262#endif
 263#if defined(__BIG_ENDIAN)
 264	u8 rsrv1[3];
 265	u8 tcp_flags;
 266#define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
 267#define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
 268#define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
 269#define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
 270#define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
 271#define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
 272#define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
 273#define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
 274#define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
 275#define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
 276#define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
 277#define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
 278#define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
 279#define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
 280#elif defined(__LITTLE_ENDIAN)
 281	u8 tcp_flags;
 282#define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK (0x1<<0)
 283#define L4_KWQ_CONNECT_REQ1_NO_DELAY_ACK_SHIFT 0
 284#define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE (0x1<<1)
 285#define L4_KWQ_CONNECT_REQ1_KEEP_ALIVE_SHIFT 1
 286#define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE (0x1<<2)
 287#define L4_KWQ_CONNECT_REQ1_NAGLE_ENABLE_SHIFT 2
 288#define L4_KWQ_CONNECT_REQ1_TIME_STAMP (0x1<<3)
 289#define L4_KWQ_CONNECT_REQ1_TIME_STAMP_SHIFT 3
 290#define L4_KWQ_CONNECT_REQ1_SACK (0x1<<4)
 291#define L4_KWQ_CONNECT_REQ1_SACK_SHIFT 4
 292#define L4_KWQ_CONNECT_REQ1_SEG_SCALING (0x1<<5)
 293#define L4_KWQ_CONNECT_REQ1_SEG_SCALING_SHIFT 5
 294#define L4_KWQ_CONNECT_REQ1_RESERVED2 (0x3<<6)
 295#define L4_KWQ_CONNECT_REQ1_RESERVED2_SHIFT 6
 296	u8 rsrv1[3];
 297#endif
 298	u32 rsrv2;
 299};
 300
 301
 302/*
 303 * The second ( optional )request to be passed in order to establish
 304 * connection in option2 - for IPv6 only
 305 */
 306struct l4_kwq_connect_req2 {
 307#if defined(__BIG_ENDIAN)
 308	u8 flags;
 309#define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
 310#define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
 311#define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
 312#define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
 313#define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
 314#define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
 315	u8 op_code;
 316	u8 reserved0;
 317	u8 rsrv;
 318#elif defined(__LITTLE_ENDIAN)
 319	u8 rsrv;
 320	u8 reserved0;
 321	u8 op_code;
 322	u8 flags;
 323#define L4_KWQ_CONNECT_REQ2_RESERVED1 (0xF<<0)
 324#define L4_KWQ_CONNECT_REQ2_RESERVED1_SHIFT 0
 325#define L4_KWQ_CONNECT_REQ2_LAYER_CODE (0x7<<4)
 326#define L4_KWQ_CONNECT_REQ2_LAYER_CODE_SHIFT 4
 327#define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT (0x1<<7)
 328#define L4_KWQ_CONNECT_REQ2_LINKED_WITH_NEXT_SHIFT 7
 329#endif
 330	u32 reserved2;
 331	u32 src_ip_v6_2;
 332	u32 src_ip_v6_3;
 333	u32 src_ip_v6_4;
 334	u32 dst_ip_v6_2;
 335	u32 dst_ip_v6_3;
 336	u32 dst_ip_v6_4;
 337};
 338
 339
 340/*
 341 * The third ( and last )request to be passed in order to establish
 342 * connection in option2
 343 */
 344struct l4_kwq_connect_req3 {
 345#if defined(__BIG_ENDIAN)
 346	u8 flags;
 347#define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
 348#define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
 349#define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
 350#define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
 351#define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
 352#define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
 353	u8 op_code;
 354	u16 reserved0;
 355#elif defined(__LITTLE_ENDIAN)
 356	u16 reserved0;
 357	u8 op_code;
 358	u8 flags;
 359#define L4_KWQ_CONNECT_REQ3_RESERVED1 (0xF<<0)
 360#define L4_KWQ_CONNECT_REQ3_RESERVED1_SHIFT 0
 361#define L4_KWQ_CONNECT_REQ3_LAYER_CODE (0x7<<4)
 362#define L4_KWQ_CONNECT_REQ3_LAYER_CODE_SHIFT 4
 363#define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT (0x1<<7)
 364#define L4_KWQ_CONNECT_REQ3_LINKED_WITH_NEXT_SHIFT 7
 365#endif
 366	u32 ka_timeout;
 367	u32 ka_interval ;
 368#if defined(__BIG_ENDIAN)
 369	u8 snd_seq_scale;
 370	u8 ttl;
 371	u8 tos;
 372	u8 ka_max_probe_count;
 373#elif defined(__LITTLE_ENDIAN)
 374	u8 ka_max_probe_count;
 375	u8 tos;
 376	u8 ttl;
 377	u8 snd_seq_scale;
 378#endif
 379#if defined(__BIG_ENDIAN)
 380	u16 pmtu;
 381	u16 mss;
 382#elif defined(__LITTLE_ENDIAN)
 383	u16 mss;
 384	u16 pmtu;
 385#endif
 386	u32 rcv_buf;
 387	u32 snd_buf;
 388	u32 seed;
 389};
 390
 391
 392/*
 393 * a KWQE request to offload a PG connection
 394 */
 395struct l4_kwq_offload_pg {
 396#if defined(__BIG_ENDIAN)
 397	u8 flags;
 398#define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
 399#define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
 400#define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
 401#define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
 402#define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
 403#define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
 404	u8 op_code;
 405	u16 reserved0;
 406#elif defined(__LITTLE_ENDIAN)
 407	u16 reserved0;
 408	u8 op_code;
 409	u8 flags;
 410#define L4_KWQ_OFFLOAD_PG_RESERVED1 (0xF<<0)
 411#define L4_KWQ_OFFLOAD_PG_RESERVED1_SHIFT 0
 412#define L4_KWQ_OFFLOAD_PG_LAYER_CODE (0x7<<4)
 413#define L4_KWQ_OFFLOAD_PG_LAYER_CODE_SHIFT 4
 414#define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT (0x1<<7)
 415#define L4_KWQ_OFFLOAD_PG_LINKED_WITH_NEXT_SHIFT 7
 416#endif
 417#if defined(__BIG_ENDIAN)
 418	u8 l2hdr_nbytes;
 419	u8 pg_flags;
 420#define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
 421#define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
 422#define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
 423#define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
 424#define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
 425#define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
 426	u8 da0;
 427	u8 da1;
 428#elif defined(__LITTLE_ENDIAN)
 429	u8 da1;
 430	u8 da0;
 431	u8 pg_flags;
 432#define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP (0x1<<0)
 433#define L4_KWQ_OFFLOAD_PG_SNAP_ENCAP_SHIFT 0
 434#define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING (0x1<<1)
 435#define L4_KWQ_OFFLOAD_PG_VLAN_TAGGING_SHIFT 1
 436#define L4_KWQ_OFFLOAD_PG_RESERVED2 (0x3F<<2)
 437#define L4_KWQ_OFFLOAD_PG_RESERVED2_SHIFT 2
 438	u8 l2hdr_nbytes;
 439#endif
 440#if defined(__BIG_ENDIAN)
 441	u8 da2;
 442	u8 da3;
 443	u8 da4;
 444	u8 da5;
 445#elif defined(__LITTLE_ENDIAN)
 446	u8 da5;
 447	u8 da4;
 448	u8 da3;
 449	u8 da2;
 450#endif
 451#if defined(__BIG_ENDIAN)
 452	u8 sa0;
 453	u8 sa1;
 454	u8 sa2;
 455	u8 sa3;
 456#elif defined(__LITTLE_ENDIAN)
 457	u8 sa3;
 458	u8 sa2;
 459	u8 sa1;
 460	u8 sa0;
 461#endif
 462#if defined(__BIG_ENDIAN)
 463	u8 sa4;
 464	u8 sa5;
 465	u16 etype;
 466#elif defined(__LITTLE_ENDIAN)
 467	u16 etype;
 468	u8 sa5;
 469	u8 sa4;
 470#endif
 471#if defined(__BIG_ENDIAN)
 472	u16 vlan_tag;
 473	u16 ipid_start;
 474#elif defined(__LITTLE_ENDIAN)
 475	u16 ipid_start;
 476	u16 vlan_tag;
 477#endif
 478#if defined(__BIG_ENDIAN)
 479	u16 ipid_count;
 480	u16 reserved3;
 481#elif defined(__LITTLE_ENDIAN)
 482	u16 reserved3;
 483	u16 ipid_count;
 484#endif
 485	u32 host_opaque;
 486};
 487
 488
 489/*
 490 * Abortively close the connection request
 491 */
 492struct l4_kwq_reset_req {
 493#if defined(__BIG_ENDIAN)
 494	u8 flags;
 495#define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
 496#define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
 497#define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
 498#define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
 499#define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
 500#define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
 501	u8 op_code;
 502	u16 reserved0;
 503#elif defined(__LITTLE_ENDIAN)
 504	u16 reserved0;
 505	u8 op_code;
 506	u8 flags;
 507#define L4_KWQ_RESET_REQ_RESERVED1 (0xF<<0)
 508#define L4_KWQ_RESET_REQ_RESERVED1_SHIFT 0
 509#define L4_KWQ_RESET_REQ_LAYER_CODE (0x7<<4)
 510#define L4_KWQ_RESET_REQ_LAYER_CODE_SHIFT 4
 511#define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT (0x1<<7)
 512#define L4_KWQ_RESET_REQ_LINKED_WITH_NEXT_SHIFT 7
 513#endif
 514	u32 cid;
 515	u32 reserved2[6];
 516};
 517
 518
 519/*
 520 * a KWQE request to update a PG connection
 521 */
 522struct l4_kwq_update_pg {
 523#if defined(__BIG_ENDIAN)
 524	u8 flags;
 525#define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
 526#define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
 527#define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
 528#define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
 529#define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
 530#define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
 531	u8 opcode;
 532	u16 oper16;
 533#elif defined(__LITTLE_ENDIAN)
 534	u16 oper16;
 535	u8 opcode;
 536	u8 flags;
 537#define L4_KWQ_UPDATE_PG_RESERVED1 (0xF<<0)
 538#define L4_KWQ_UPDATE_PG_RESERVED1_SHIFT 0
 539#define L4_KWQ_UPDATE_PG_LAYER_CODE (0x7<<4)
 540#define L4_KWQ_UPDATE_PG_LAYER_CODE_SHIFT 4
 541#define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT (0x1<<7)
 542#define L4_KWQ_UPDATE_PG_LINKED_WITH_NEXT_SHIFT 7
 543#endif
 544	u32 pg_cid;
 545	u32 pg_host_opaque;
 546#if defined(__BIG_ENDIAN)
 547	u8 pg_valids;
 548#define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
 549#define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
 550#define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
 551#define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
 552#define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
 553#define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
 554	u8 pg_unused_a;
 555	u16 pg_ipid_count;
 556#elif defined(__LITTLE_ENDIAN)
 557	u16 pg_ipid_count;
 558	u8 pg_unused_a;
 559	u8 pg_valids;
 560#define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT (0x1<<0)
 561#define L4_KWQ_UPDATE_PG_VALIDS_IPID_COUNT_SHIFT 0
 562#define L4_KWQ_UPDATE_PG_VALIDS_DA (0x1<<1)
 563#define L4_KWQ_UPDATE_PG_VALIDS_DA_SHIFT 1
 564#define L4_KWQ_UPDATE_PG_RESERVERD2 (0x3F<<2)
 565#define L4_KWQ_UPDATE_PG_RESERVERD2_SHIFT 2
 566#endif
 567#if defined(__BIG_ENDIAN)
 568	u16 reserverd3;
 569	u8 da0;
 570	u8 da1;
 571#elif defined(__LITTLE_ENDIAN)
 572	u8 da1;
 573	u8 da0;
 574	u16 reserverd3;
 575#endif
 576#if defined(__BIG_ENDIAN)
 577	u8 da2;
 578	u8 da3;
 579	u8 da4;
 580	u8 da5;
 581#elif defined(__LITTLE_ENDIAN)
 582	u8 da5;
 583	u8 da4;
 584	u8 da3;
 585	u8 da2;
 586#endif
 587	u32 reserved4;
 588	u32 reserved5;
 589};
 590
 591
 592/*
 593 * a KWQE request to upload a PG or L4 context
 594 */
 595struct l4_kwq_upload {
 596#if defined(__BIG_ENDIAN)
 597	u8 flags;
 598#define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
 599#define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
 600#define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
 601#define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
 602#define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
 603#define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
 604	u8 opcode;
 605	u16 oper16;
 606#elif defined(__LITTLE_ENDIAN)
 607	u16 oper16;
 608	u8 opcode;
 609	u8 flags;
 610#define L4_KWQ_UPLOAD_RESERVED1 (0xF<<0)
 611#define L4_KWQ_UPLOAD_RESERVED1_SHIFT 0
 612#define L4_KWQ_UPLOAD_LAYER_CODE (0x7<<4)
 613#define L4_KWQ_UPLOAD_LAYER_CODE_SHIFT 4
 614#define L4_KWQ_UPLOAD_LINKED_WITH_NEXT (0x1<<7)
 615#define L4_KWQ_UPLOAD_LINKED_WITH_NEXT_SHIFT 7
 616#endif
 617	u32 cid;
 618	u32 reserved2[6];
 619};
 620
 621/*
 622 * bnx2x structures
 623 */
 624
 625/*
 626 * The iscsi aggregative context of Cstorm
 627 */
 628struct cstorm_iscsi_ag_context {
 629	u32 agg_vars1;
 630#define CSTORM_ISCSI_AG_CONTEXT_STATE (0xFF<<0)
 631#define CSTORM_ISCSI_AG_CONTEXT_STATE_SHIFT 0
 632#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<8)
 633#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 8
 634#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<9)
 635#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 9
 636#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<10)
 637#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 10
 638#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<11)
 639#define __CSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 11
 640#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN (0x1<<12)
 641#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_SE_CF_EN_SHIFT 12
 642#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN (0x1<<13)
 643#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED_ULP_RX_INV_CF_EN_SHIFT 13
 644#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF (0x3<<14)
 645#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_SHIFT 14
 646#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66 (0x3<<16)
 647#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED66_SHIFT 16
 648#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN (0x1<<18)
 649#define __CSTORM_ISCSI_AG_CONTEXT_FIN_RECEIVED_CF_EN_SHIFT 18
 650#define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<19)
 651#define __CSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 19
 652#define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN (0x1<<20)
 653#define __CSTORM_ISCSI_AG_CONTEXT_AUX2_CF_EN_SHIFT 20
 654#define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<21)
 655#define __CSTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 21
 656#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN (0x1<<22)
 657#define __CSTORM_ISCSI_AG_CONTEXT_AUX4_CF_EN_SHIFT 22
 658#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE (0x7<<23)
 659#define __CSTORM_ISCSI_AG_CONTEXT_REL_SEQ_RULE_SHIFT 23
 660#define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE (0x3<<26)
 661#define CSTORM_ISCSI_AG_CONTEXT_HQ_PROD_RULE_SHIFT 26
 662#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52 (0x3<<28)
 663#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED52_SHIFT 28
 664#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53 (0x3<<30)
 665#define __CSTORM_ISCSI_AG_CONTEXT_RESERVED53_SHIFT 30
 666#if defined(__BIG_ENDIAN)
 667	u8 __aux1_th;
 668	u8 __aux1_val;
 669	u16 __agg_vars2;
 670#elif defined(__LITTLE_ENDIAN)
 671	u16 __agg_vars2;
 672	u8 __aux1_val;
 673	u8 __aux1_th;
 674#endif
 675	u32 rel_seq;
 676	u32 rel_seq_th;
 677#if defined(__BIG_ENDIAN)
 678	u16 hq_cons;
 679	u16 hq_prod;
 680#elif defined(__LITTLE_ENDIAN)
 681	u16 hq_prod;
 682	u16 hq_cons;
 683#endif
 684#if defined(__BIG_ENDIAN)
 685	u8 __reserved62;
 686	u8 __reserved61;
 687	u8 __reserved60;
 688	u8 __reserved59;
 689#elif defined(__LITTLE_ENDIAN)
 690	u8 __reserved59;
 691	u8 __reserved60;
 692	u8 __reserved61;
 693	u8 __reserved62;
 694#endif
 695#if defined(__BIG_ENDIAN)
 696	u16 __reserved64;
 697	u16 cq_u_prod;
 698#elif defined(__LITTLE_ENDIAN)
 699	u16 cq_u_prod;
 700	u16 __reserved64;
 701#endif
 702	u32 __cq_u_prod1;
 703#if defined(__BIG_ENDIAN)
 704	u16 __agg_vars3;
 705	u16 cq_u_pend;
 706#elif defined(__LITTLE_ENDIAN)
 707	u16 cq_u_pend;
 708	u16 __agg_vars3;
 709#endif
 710#if defined(__BIG_ENDIAN)
 711	u16 __aux2_th;
 712	u16 aux2_val;
 713#elif defined(__LITTLE_ENDIAN)
 714	u16 aux2_val;
 715	u16 __aux2_th;
 716#endif
 717};
 718
 719/*
 720 * The fcoe extra aggregative context section of Tstorm
 721 */
 722struct tstorm_fcoe_extra_ag_context_section {
 723	u32 __agg_val1;
 724#if defined(__BIG_ENDIAN)
 725	u8 __tcp_agg_vars2;
 726	u8 __agg_val3;
 727	u16 __agg_val2;
 728#elif defined(__LITTLE_ENDIAN)
 729	u16 __agg_val2;
 730	u8 __agg_val3;
 731	u8 __tcp_agg_vars2;
 732#endif
 733#if defined(__BIG_ENDIAN)
 734	u16 __agg_val5;
 735	u8 __agg_val6;
 736	u8 __tcp_agg_vars3;
 737#elif defined(__LITTLE_ENDIAN)
 738	u8 __tcp_agg_vars3;
 739	u8 __agg_val6;
 740	u16 __agg_val5;
 741#endif
 742	u32 __lcq_prod;
 743	u32 rtt_seq;
 744	u32 rtt_time;
 745	u32 __reserved66;
 746	u32 wnd_right_edge;
 747	u32 tcp_agg_vars1;
 748#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
 749#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
 750#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
 751#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
 752#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
 753#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
 754#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
 755#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
 756#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
 757#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
 758#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
 759#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
 760#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
 761#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
 762#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN (0x1<<9)
 763#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_LCQ_SND_EN_SHIFT 9
 764#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
 765#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
 766#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
 767#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
 768#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
 769#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
 770#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
 771#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
 772#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
 773#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
 774#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
 775#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
 776#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
 777#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
 778#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
 779#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
 780#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
 781#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
 782#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
 783#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
 784#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
 785#define __TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
 786#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
 787#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
 788#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
 789#define TSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
 790	u32 snd_max;
 791	u32 __lcq_cons;
 792	u32 __reserved2;
 793};
 794
 795/*
 796 * The fcoe aggregative context of Tstorm
 797 */
 798struct tstorm_fcoe_ag_context {
 799#if defined(__BIG_ENDIAN)
 800	u16 ulp_credit;
 801	u8 agg_vars1;
 802#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
 803#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
 804#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
 805#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
 806#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
 807#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
 808#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
 809#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
 810#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
 811#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
 812#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
 813#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
 814#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
 815#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
 816	u8 state;
 817#elif defined(__LITTLE_ENDIAN)
 818	u8 state;
 819	u8 agg_vars1;
 820#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
 821#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
 822#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
 823#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
 824#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
 825#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
 826#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
 827#define TSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
 828#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF (0x3<<4)
 829#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_SHIFT 4
 830#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG (0x1<<6)
 831#define __TSTORM_FCOE_AG_CONTEXT_AUX3_FLAG_SHIFT 6
 832#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG (0x1<<7)
 833#define __TSTORM_FCOE_AG_CONTEXT_AUX4_FLAG_SHIFT 7
 834	u16 ulp_credit;
 835#endif
 836#if defined(__BIG_ENDIAN)
 837	u16 __agg_val4;
 838	u16 agg_vars2;
 839#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
 840#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
 841#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
 842#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
 843#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
 844#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
 845#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
 846#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
 847#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
 848#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
 849#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
 850#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
 851#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
 852#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
 853#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
 854#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
 855#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
 856#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
 857#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
 858#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
 859#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
 860#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
 861#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
 862#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
 863#elif defined(__LITTLE_ENDIAN)
 864	u16 agg_vars2;
 865#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG (0x1<<0)
 866#define __TSTORM_FCOE_AG_CONTEXT_AUX5_FLAG_SHIFT 0
 867#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG (0x1<<1)
 868#define __TSTORM_FCOE_AG_CONTEXT_AUX6_FLAG_SHIFT 1
 869#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF (0x3<<2)
 870#define __TSTORM_FCOE_AG_CONTEXT_AUX4_CF_SHIFT 2
 871#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF (0x3<<4)
 872#define __TSTORM_FCOE_AG_CONTEXT_AUX5_CF_SHIFT 4
 873#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF (0x3<<6)
 874#define __TSTORM_FCOE_AG_CONTEXT_AUX6_CF_SHIFT 6
 875#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF (0x3<<8)
 876#define __TSTORM_FCOE_AG_CONTEXT_AUX7_CF_SHIFT 8
 877#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG (0x1<<10)
 878#define __TSTORM_FCOE_AG_CONTEXT_AUX7_FLAG_SHIFT 10
 879#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN (0x1<<11)
 880#define __TSTORM_FCOE_AG_CONTEXT_QUEUE0_FLUSH_CF_EN_SHIFT 11
 881#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN (0x1<<12)
 882#define TSTORM_FCOE_AG_CONTEXT_AUX4_CF_EN_SHIFT 12
 883#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN (0x1<<13)
 884#define TSTORM_FCOE_AG_CONTEXT_AUX5_CF_EN_SHIFT 13
 885#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
 886#define TSTORM_FCOE_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
 887#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
 888#define TSTORM_FCOE_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
 889	u16 __agg_val4;
 890#endif
 891	struct tstorm_fcoe_extra_ag_context_section __extra_section;
 892};
 893
 894
 895
 896/*
 897 * The tcp aggregative context section of Tstorm
 898 */
 899struct tstorm_tcp_tcp_ag_context_section {
 900	u32 __agg_val1;
 901#if defined(__BIG_ENDIAN)
 902	u8 __tcp_agg_vars2;
 903	u8 __agg_val3;
 904	u16 __agg_val2;
 905#elif defined(__LITTLE_ENDIAN)
 906	u16 __agg_val2;
 907	u8 __agg_val3;
 908	u8 __tcp_agg_vars2;
 909#endif
 910#if defined(__BIG_ENDIAN)
 911	u16 __agg_val5;
 912	u8 __agg_val6;
 913	u8 __tcp_agg_vars3;
 914#elif defined(__LITTLE_ENDIAN)
 915	u8 __tcp_agg_vars3;
 916	u8 __agg_val6;
 917	u16 __agg_val5;
 918#endif
 919	u32 snd_nxt;
 920	u32 rtt_seq;
 921	u32 rtt_time;
 922	u32 __reserved66;
 923	u32 wnd_right_edge;
 924	u32 tcp_agg_vars1;
 925#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<0)
 926#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 0
 927#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG (0x1<<1)
 928#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_LAST_PACKET_FIN_FLAG_SHIFT 1
 929#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF (0x3<<2)
 930#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_SHIFT 2
 931#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF (0x3<<4)
 932#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_SHIFT 4
 933#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN (0x1<<6)
 934#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_WND_UPD_CF_EN_SHIFT 6
 935#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN (0x1<<7)
 936#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TIMEOUT_CF_EN_SHIFT 7
 937#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN (0x1<<8)
 938#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_SEQ_EN_SHIFT 8
 939#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN (0x1<<9)
 940#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_SND_NXT_EN_SHIFT 9
 941#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<10)
 942#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 10
 943#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG (0x1<<11)
 944#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_FLAG_SHIFT 11
 945#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN (0x1<<12)
 946#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_EN_SHIFT 12
 947#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN (0x1<<13)
 948#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_EN_SHIFT 13
 949#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF (0x3<<14)
 950#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_CF_SHIFT 14
 951#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF (0x3<<16)
 952#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX2_CF_SHIFT 16
 953#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED (0x1<<18)
 954#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_BLOCKED_SHIFT 18
 955#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<19)
 956#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 19
 957#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN (0x1<<20)
 958#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_EN_SHIFT 20
 959#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN (0x1<<21)
 960#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_EN_SHIFT 21
 961#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1 (0x3<<22)
 962#define __TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED1_SHIFT 22
 963#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ (0xF<<24)
 964#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_PEND_SEQ_SHIFT 24
 965#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ (0xF<<28)
 966#define TSTORM_TCP_TCP_AG_CONTEXT_SECTION_RETRANSMIT_DONE_SEQ_SHIFT 28
 967	u32 snd_max;
 968	u32 snd_una;
 969	u32 __reserved2;
 970};
 971
 972/*
 973 * The iscsi aggregative context of Tstorm
 974 */
 975struct tstorm_iscsi_ag_context {
 976#if defined(__BIG_ENDIAN)
 977	u16 ulp_credit;
 978	u8 agg_vars1;
 979#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
 980#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
 981#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
 982#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
 983#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
 984#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
 985#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
 986#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
 987#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
 988#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
 989#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
 990#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
 991#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
 992#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
 993	u8 state;
 994#elif defined(__LITTLE_ENDIAN)
 995	u8 state;
 996	u8 agg_vars1;
 997#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
 998#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
 999#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1000#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1001#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1002#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1003#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1004#define TSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1005#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF (0x3<<4)
1006#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_SHIFT 4
1007#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG (0x1<<6)
1008#define __TSTORM_ISCSI_AG_CONTEXT_AUX3_FLAG_SHIFT 6
1009#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG (0x1<<7)
1010#define __TSTORM_ISCSI_AG_CONTEXT_ACK_ON_FIN_SENT_FLAG_SHIFT 7
1011	u16 ulp_credit;
1012#endif
1013#if defined(__BIG_ENDIAN)
1014	u16 __agg_val4;
1015	u16 agg_vars2;
1016#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
1017#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
1018#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
1019#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
1020#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
1021#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1022#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1023#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1024#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1025#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1026#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1027#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1028#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1029#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1030#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1031#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1032#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1033#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1034#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1035#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1036#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1037#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1038#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1039#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1040#elif defined(__LITTLE_ENDIAN)
1041	u16 agg_vars2;
1042#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG (0x1<<0)
1043#define __TSTORM_ISCSI_AG_CONTEXT_MSL_TIMER_SET_FLAG_SHIFT 0
1044#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG (0x1<<1)
1045#define __TSTORM_ISCSI_AG_CONTEXT_FIN_SENT_FIRST_FLAG_SHIFT 1
1046#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF (0x3<<2)
1047#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_SHIFT 2
1048#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF (0x3<<4)
1049#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_SHIFT 4
1050#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF (0x3<<6)
1051#define __TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_SHIFT 6
1052#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF (0x3<<8)
1053#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_SHIFT 8
1054#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG (0x1<<10)
1055#define __TSTORM_ISCSI_AG_CONTEXT_AUX7_FLAG_SHIFT 10
1056#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<11)
1057#define __TSTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 11
1058#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN (0x1<<12)
1059#define __TSTORM_ISCSI_AG_CONTEXT_RST_SENT_CF_EN_SHIFT 12
1060#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN (0x1<<13)
1061#define __TSTORM_ISCSI_AG_CONTEXT_WAKEUP_CALL_CF_EN_SHIFT 13
1062#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN (0x1<<14)
1063#define TSTORM_ISCSI_AG_CONTEXT_AUX6_CF_EN_SHIFT 14
1064#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN (0x1<<15)
1065#define TSTORM_ISCSI_AG_CONTEXT_AUX7_CF_EN_SHIFT 15
1066	u16 __agg_val4;
1067#endif
1068	struct tstorm_tcp_tcp_ag_context_section tcp;
1069};
1070
1071
1072
1073/*
1074 * The fcoe aggregative context of Ustorm
1075 */
1076struct ustorm_fcoe_ag_context {
1077#if defined(__BIG_ENDIAN)
1078	u8 __aux_counter_flags;
1079	u8 agg_vars2;
1080#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
1081#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
1082#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
1083#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
1084#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1085#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1086#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1087#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1088	u8 agg_vars1;
1089#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1090#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1091#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1092#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1093#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1094#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1095#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1096#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1097#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
1098#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
1099#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1100#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1101	u8 state;
1102#elif defined(__LITTLE_ENDIAN)
1103	u8 state;
1104	u8 agg_vars1;
1105#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1106#define __USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1107#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1108#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1109#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1110#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1111#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1112#define USTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1113#define USTORM_FCOE_AG_CONTEXT_INV_CF (0x3<<4)
1114#define USTORM_FCOE_AG_CONTEXT_INV_CF_SHIFT 4
1115#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1116#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1117	u8 agg_vars2;
1118#define USTORM_FCOE_AG_CONTEXT_TX_CF (0x3<<0)
1119#define USTORM_FCOE_AG_CONTEXT_TX_CF_SHIFT 0
1120#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF (0x3<<2)
1121#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_SHIFT 2
1122#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1123#define USTORM_FCOE_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1124#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1125#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1126	u8 __aux_counter_flags;
1127#endif
1128#if defined(__BIG_ENDIAN)
1129	u8 cdu_usage;
1130	u8 agg_misc2;
1131	u16 pbf_tx_seq_ack;
1132#elif defined(__LITTLE_ENDIAN)
1133	u16 pbf_tx_seq_ack;
1134	u8 agg_misc2;
1135	u8 cdu_usage;
1136#endif
1137	u32 agg_misc4;
1138#if defined(__BIG_ENDIAN)
1139	u8 agg_val3_th;
1140	u8 agg_val3;
1141	u16 agg_misc3;
1142#elif defined(__LITTLE_ENDIAN)
1143	u16 agg_misc3;
1144	u8 agg_val3;
1145	u8 agg_val3_th;
1146#endif
1147	u32 expired_task_id;
1148	u32 agg_misc4_th;
1149#if defined(__BIG_ENDIAN)
1150	u16 cq_prod;
1151	u16 cq_cons;
1152#elif defined(__LITTLE_ENDIAN)
1153	u16 cq_cons;
1154	u16 cq_prod;
1155#endif
1156#if defined(__BIG_ENDIAN)
1157	u16 __reserved2;
1158	u8 decision_rules;
1159#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
1160#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
1161#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1162#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1163#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1164#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1165#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1166#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1167	u8 decision_rule_enable_bits;
1168#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
1169#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
1170#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1171#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1172#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
1173#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
1174#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1175#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1176#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
1177#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
1178#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
1179#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
1180#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1181#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1182#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1183#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1184#elif defined(__LITTLE_ENDIAN)
1185	u8 decision_rule_enable_bits;
1186#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN (0x1<<0)
1187#define __USTORM_FCOE_AG_CONTEXT_RESERVED_INV_CF_EN_SHIFT 0
1188#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1189#define USTORM_FCOE_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1190#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN (0x1<<2)
1191#define USTORM_FCOE_AG_CONTEXT_TX_CF_EN_SHIFT 2
1192#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1193#define __USTORM_FCOE_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1194#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<4)
1195#define __USTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 4
1196#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN (0x1<<5)
1197#define __USTORM_FCOE_AG_CONTEXT_QUEUE0_CF_EN_SHIFT 5
1198#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1199#define __USTORM_FCOE_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1200#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1201#define __USTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1202	u8 decision_rules;
1203#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE (0x7<<0)
1204#define USTORM_FCOE_AG_CONTEXT_CQ_DEC_RULE_SHIFT 0
1205#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1206#define __USTORM_FCOE_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1207#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG (0x1<<6)
1208#define USTORM_FCOE_AG_CONTEXT_CQ_ARM_N_FLAG_SHIFT 6
1209#define __USTORM_FCOE_AG_CONTEXT_RESERVED1 (0x1<<7)
1210#define __USTORM_FCOE_AG_CONTEXT_RESERVED1_SHIFT 7
1211	u16 __reserved2;
1212#endif
1213};
1214
1215
1216/*
1217 * The iscsi aggregative context of Ustorm
1218 */
1219struct ustorm_iscsi_ag_context {
1220#if defined(__BIG_ENDIAN)
1221	u8 __aux_counter_flags;
1222	u8 agg_vars2;
1223#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1224#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1225#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1226#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1227#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1228#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1229#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1230#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1231	u8 agg_vars1;
1232#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1233#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1234#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1235#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1236#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1237#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1238#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1239#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1240#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1241#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1242#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1243#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1244	u8 state;
1245#elif defined(__LITTLE_ENDIAN)
1246	u8 state;
1247	u8 agg_vars1;
1248#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1249#define __USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1250#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1251#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1252#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1253#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1254#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1255#define USTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1256#define USTORM_ISCSI_AG_CONTEXT_INV_CF (0x3<<4)
1257#define USTORM_ISCSI_AG_CONTEXT_INV_CF_SHIFT 4
1258#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF (0x3<<6)
1259#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_SHIFT 6
1260	u8 agg_vars2;
1261#define USTORM_ISCSI_AG_CONTEXT_TX_CF (0x3<<0)
1262#define USTORM_ISCSI_AG_CONTEXT_TX_CF_SHIFT 0
1263#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF (0x3<<2)
1264#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_SHIFT 2
1265#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE (0x7<<4)
1266#define USTORM_ISCSI_AG_CONTEXT_AGG_MISC4_RULE_SHIFT 4
1267#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK (0x1<<7)
1268#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_MASK_SHIFT 7
1269	u8 __aux_counter_flags;
1270#endif
1271#if defined(__BIG_ENDIAN)
1272	u8 cdu_usage;
1273	u8 agg_misc2;
1274	u16 __cq_local_comp_itt_val;
1275#elif defined(__LITTLE_ENDIAN)
1276	u16 __cq_local_comp_itt_val;
1277	u8 agg_misc2;
1278	u8 cdu_usage;
1279#endif
1280	u32 agg_misc4;
1281#if defined(__BIG_ENDIAN)
1282	u8 agg_val3_th;
1283	u8 agg_val3;
1284	u16 agg_misc3;
1285#elif defined(__LITTLE_ENDIAN)
1286	u16 agg_misc3;
1287	u8 agg_val3;
1288	u8 agg_val3_th;
1289#endif
1290	u32 agg_val1;
1291	u32 agg_misc4_th;
1292#if defined(__BIG_ENDIAN)
1293	u16 agg_val2_th;
1294	u16 agg_val2;
1295#elif defined(__LITTLE_ENDIAN)
1296	u16 agg_val2;
1297	u16 agg_val2_th;
1298#endif
1299#if defined(__BIG_ENDIAN)
1300	u16 __reserved2;
1301	u8 decision_rules;
1302#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1303#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1304#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1305#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1306#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1307#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1308#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1309#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1310	u8 decision_rule_enable_bits;
1311#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1312#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1313#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1314#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1315#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1316#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1317#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1318#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1319#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1320#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1321#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1322#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1323#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1324#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1325#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1326#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1327#elif defined(__LITTLE_ENDIAN)
1328	u8 decision_rule_enable_bits;
1329#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN (0x1<<0)
1330#define USTORM_ISCSI_AG_CONTEXT_INV_CF_EN_SHIFT 0
1331#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN (0x1<<1)
1332#define USTORM_ISCSI_AG_CONTEXT_COMPLETION_CF_EN_SHIFT 1
1333#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN (0x1<<2)
1334#define USTORM_ISCSI_AG_CONTEXT_TX_CF_EN_SHIFT 2
1335#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN (0x1<<3)
1336#define __USTORM_ISCSI_AG_CONTEXT_TIMER_CF_EN_SHIFT 3
1337#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN (0x1<<4)
1338#define __USTORM_ISCSI_AG_CONTEXT_CQ_LOCAL_COMP_CF_EN_SHIFT 4
1339#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN (0x1<<5)
1340#define __USTORM_ISCSI_AG_CONTEXT_QUEUES_FLUSH_Q0_CF_EN_SHIFT 5
1341#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN (0x1<<6)
1342#define __USTORM_ISCSI_AG_CONTEXT_AUX3_CF_EN_SHIFT 6
1343#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1344#define __USTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1345	u8 decision_rules;
1346#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE (0x7<<0)
1347#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_RULE_SHIFT 0
1348#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE (0x7<<3)
1349#define __USTORM_ISCSI_AG_CONTEXT_AGG_VAL3_RULE_SHIFT 3
1350#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG (0x1<<6)
1351#define USTORM_ISCSI_AG_CONTEXT_AGG_VAL2_ARM_N_FLAG_SHIFT 6
1352#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1 (0x1<<7)
1353#define __USTORM_ISCSI_AG_CONTEXT_RESERVED1_SHIFT 7
1354	u16 __reserved2;
1355#endif
1356};
1357
1358
1359/*
1360 * The fcoe aggregative context section of Xstorm
1361 */
1362struct xstorm_fcoe_extra_ag_context_section {
1363#if defined(__BIG_ENDIAN)
1364	u8 tcp_agg_vars1;
1365#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0)
1366#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
1367#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1368#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1369#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1370#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1371#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
1372#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
1373#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
1374#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7
1375	u8 __reserved_da_cnt;
1376	u16 __mtu;
1377#elif defined(__LITTLE_ENDIAN)
1378	u16 __mtu;
1379	u8 __reserved_da_cnt;
1380	u8 tcp_agg_vars1;
1381#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51 (0x3<<0)
1382#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED51_SHIFT 0
1383#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1384#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1385#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1386#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1387#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN (0x1<<6)
1388#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_CLEAR_DA_TIMER_EN_SHIFT 6
1389#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG (0x1<<7)
1390#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_DA_EXPIRATION_FLAG_SHIFT 7
1391#endif
1392	u32 snd_nxt;
1393	u32 tx_wnd;
1394	u32 __reserved55;
1395	u32 local_adv_wnd;
1396#if defined(__BIG_ENDIAN)
1397	u8 __agg_val8_th;
1398	u8 __tx_dest;
1399	u16 tcp_agg_vars2;
1400#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0)
1401#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0
1402#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1)
1403#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1
1404#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2)
1405#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2
1406#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1407#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1408#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1409#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1410#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5)
1411#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5
1412#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6)
1413#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6
1414#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1415#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1416#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8)
1417#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8
1418#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1419#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1420#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1421#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1422#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1423#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1424#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1425#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1426#elif defined(__LITTLE_ENDIAN)
1427	u16 tcp_agg_vars2;
1428#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57 (0x1<<0)
1429#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED57_SHIFT 0
1430#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58 (0x1<<1)
1431#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED58_SHIFT 1
1432#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59 (0x1<<2)
1433#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED59_SHIFT 2
1434#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1435#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1436#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1437#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1438#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60 (0x1<<5)
1439#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED60_SHIFT 5
1440#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN (0x1<<6)
1441#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_ACK_TO_FE_UPDATED_EN_SHIFT 6
1442#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1443#define XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1444#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN (0x1<<8)
1445#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_RESERVED_TX_FIN_FLAG_EN_SHIFT 8
1446#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1447#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1448#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1449#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1450#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1451#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1452#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1453#define __XSTORM_FCOE_EXTRA_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1454	u8 __tx_dest;
1455	u8 __agg_val8_th;
1456#endif
1457	u32 __sq_base_addr_lo;
1458	u32 __sq_base_addr_hi;
1459	u32 __xfrq_base_addr_lo;
1460	u32 __xfrq_base_addr_hi;
1461#if defined(__BIG_ENDIAN)
1462	u16 __xfrq_cons;
1463	u16 __xfrq_prod;
1464#elif defined(__LITTLE_ENDIAN)
1465	u16 __xfrq_prod;
1466	u16 __xfrq_cons;
1467#endif
1468#if defined(__BIG_ENDIAN)
1469	u8 __tcp_agg_vars5;
1470	u8 __tcp_agg_vars4;
1471	u8 __tcp_agg_vars3;
1472	u8 __reserved_force_pure_ack_cnt;
1473#elif defined(__LITTLE_ENDIAN)
1474	u8 __reserved_force_pure_ack_cnt;
1475	u8 __tcp_agg_vars3;
1476	u8 __tcp_agg_vars4;
1477	u8 __tcp_agg_vars5;
1478#endif
1479	u32 __tcp_agg_vars6;
1480#if defined(__BIG_ENDIAN)
1481	u16 __agg_misc6;
1482	u16 __tcp_agg_vars7;
1483#elif defined(__LITTLE_ENDIAN)
1484	u16 __tcp_agg_vars7;
1485	u16 __agg_misc6;
1486#endif
1487	u32 __agg_val10;
1488	u32 __agg_val10_th;
1489#if defined(__BIG_ENDIAN)
1490	u16 __reserved3;
1491	u8 __reserved2;
1492	u8 __da_only_cnt;
1493#elif defined(__LITTLE_ENDIAN)
1494	u8 __da_only_cnt;
1495	u8 __reserved2;
1496	u16 __reserved3;
1497#endif
1498};
1499
1500/*
1501 * The fcoe aggregative context of Xstorm
1502 */
1503struct xstorm_fcoe_ag_context {
1504#if defined(__BIG_ENDIAN)
1505	u16 agg_val1;
1506	u8 agg_vars1;
1507#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1508#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1509#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1510#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1511#define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2)
1512#define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2
1513#define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3)
1514#define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3
1515#define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1516#define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1517#define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5)
1518#define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5
1519#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1520#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1521#define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7)
1522#define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7
1523	u8 __state;
1524#elif defined(__LITTLE_ENDIAN)
1525	u8 __state;
1526	u8 agg_vars1;
1527#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1528#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1529#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1530#define __XSTORM_FCOE_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1531#define __XSTORM_FCOE_AG_CONTEXT_RESERVED51 (0x1<<2)
1532#define __XSTORM_FCOE_AG_CONTEXT_RESERVED51_SHIFT 2
1533#define __XSTORM_FCOE_AG_CONTEXT_RESERVED52 (0x1<<3)
1534#define __XSTORM_FCOE_AG_CONTEXT_RESERVED52_SHIFT 3
1535#define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1536#define __XSTORM_FCOE_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1537#define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN (0x1<<5)
1538#define XSTORM_FCOE_AG_CONTEXT_NAGLE_EN_SHIFT 5
1539#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1540#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1541#define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN (0x1<<7)
1542#define __XSTORM_FCOE_AG_CONTEXT_RESERVED_UNA_GT_NXT_EN_SHIFT 7
1543	u16 agg_val1;
1544#endif
1545#if defined(__BIG_ENDIAN)
1546	u8 cdu_reserved;
1547	u8 __agg_vars4;
1548	u8 agg_vars3;
1549#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1550#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1551#define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6)
1552#define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6
1553	u8 agg_vars2;
1554#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0)
1555#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0
1556#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1557#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1558#define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1559#define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1560#define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1561#define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1562#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1563#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1564#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1565#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1566#elif defined(__LITTLE_ENDIAN)
1567	u8 agg_vars2;
1568#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF (0x3<<0)
1569#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_SHIFT 0
1570#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1571#define __XSTORM_FCOE_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1572#define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1573#define __XSTORM_FCOE_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1574#define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1575#define __XSTORM_FCOE_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1576#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1577#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1578#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1579#define __XSTORM_FCOE_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1580	u8 agg_vars3;
1581#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1582#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1583#define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF (0x3<<6)
1584#define __XSTORM_FCOE_AG_CONTEXT_AUX19_CF_SHIFT 6
1585	u8 __agg_vars4;
1586	u8 cdu_reserved;
1587#endif
1588	u32 more_to_send;
1589#if defined(__BIG_ENDIAN)
1590	u16 agg_vars5;
1591#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
1592#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0
1593#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
1594#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
1595#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
1596#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
1597#define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14)
1598#define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14
1599	u16 sq_cons;
1600#elif defined(__LITTLE_ENDIAN)
1601	u16 sq_cons;
1602	u16 agg_vars5;
1603#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
1604#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE5_SHIFT 0
1605#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
1606#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
1607#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
1608#define XSTORM_FCOE_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
1609#define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE (0x3<<14)
1610#define __XSTORM_FCOE_AG_CONTEXT_CONFQ_DEC_RULE_SHIFT 14
1611#endif
1612	struct xstorm_fcoe_extra_ag_context_section __extra_section;
1613#if defined(__BIG_ENDIAN)
1614	u16 agg_vars7;
1615#define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
1616#define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
1617#define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3)
1618#define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3
1619#define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4)
1620#define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4
1621#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
1622#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6
1623#define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8)
1624#define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8
1625#define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10)
1626#define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10
1627#define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
1628#define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
1629#define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12)
1630#define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12
1631#define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13)
1632#define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13
1633#define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14)
1634#define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14
1635#define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15)
1636#define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15
1637	u8 agg_val3_th;
1638	u8 agg_vars6;
1639#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
1640#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0
1641#define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3)
1642#define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3
1643#define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6)
1644#define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6
1645#elif defined(__LITTLE_ENDIAN)
1646	u8 agg_vars6;
1647#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
1648#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE6_SHIFT 0
1649#define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE (0x7<<3)
1650#define __XSTORM_FCOE_AG_CONTEXT_XFRQ_DEC_RULE_SHIFT 3
1651#define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE (0x3<<6)
1652#define __XSTORM_FCOE_AG_CONTEXT_SQ_DEC_RULE_SHIFT 6
1653	u8 agg_val3_th;
1654	u16 agg_vars7;
1655#define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
1656#define __XSTORM_FCOE_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
1657#define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG (0x1<<3)
1658#define __XSTORM_FCOE_AG_CONTEXT_AUX13_FLAG_SHIFT 3
1659#define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF (0x3<<4)
1660#define __XSTORM_FCOE_AG_CONTEXT_QUEUE0_CF_SHIFT 4
1661#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
1662#define XSTORM_FCOE_AG_CONTEXT_DECISION_RULE3_SHIFT 6
1663#define XSTORM_FCOE_AG_CONTEXT_AUX1_CF (0x3<<8)
1664#define XSTORM_FCOE_AG_CONTEXT_AUX1_CF_SHIFT 8
1665#define __XSTORM_FCOE_AG_CONTEXT_RESERVED62 (0x1<<10)
1666#define __XSTORM_FCOE_AG_CONTEXT_RESERVED62_SHIFT 10
1667#define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
1668#define __XSTORM_FCOE_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
1669#define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG (0x1<<12)
1670#define __XSTORM_FCOE_AG_CONTEXT_AUX10_FLAG_SHIFT 12
1671#define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG (0x1<<13)
1672#define __XSTORM_FCOE_AG_CONTEXT_AUX11_FLAG_SHIFT 13
1673#define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG (0x1<<14)
1674#define __XSTORM_FCOE_AG_CONTEXT_AUX12_FLAG_SHIFT 14
1675#define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG (0x1<<15)
1676#define __XSTORM_FCOE_AG_CONTEXT_AUX2_FLAG_SHIFT 15
1677#endif
1678#if defined(__BIG_ENDIAN)
1679	u16 __agg_val11_th;
1680	u16 __agg_val11;
1681#elif defined(__LITTLE_ENDIAN)
1682	u16 __agg_val11;
1683	u16 __agg_val11_th;
1684#endif
1685#if defined(__BIG_ENDIAN)
1686	u8 __reserved1;
1687	u8 __agg_val6_th;
1688	u16 __agg_val9;
1689#elif defined(__LITTLE_ENDIAN)
1690	u16 __agg_val9;
1691	u8 __agg_val6_th;
1692	u8 __reserved1;
1693#endif
1694#if defined(__BIG_ENDIAN)
1695	u16 confq_cons;
1696	u16 confq_prod;
1697#elif defined(__LITTLE_ENDIAN)
1698	u16 confq_prod;
1699	u16 confq_cons;
1700#endif
1701	u32 agg_vars8;
1702#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
1703#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC2_SHIFT 0
1704#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
1705#define XSTORM_FCOE_AG_CONTEXT_AGG_MISC3_SHIFT 24
1706#if defined(__BIG_ENDIAN)
1707	u16 agg_misc0;
1708	u16 sq_prod;
1709#elif defined(__LITTLE_ENDIAN)
1710	u16 sq_prod;
1711	u16 agg_misc0;
1712#endif
1713#if defined(__BIG_ENDIAN)
1714	u8 agg_val3;
1715	u8 agg_val6;
1716	u8 agg_val5_th;
1717	u8 agg_val5;
1718#elif defined(__LITTLE_ENDIAN)
1719	u8 agg_val5;
1720	u8 agg_val5_th;
1721	u8 agg_val6;
1722	u8 agg_val3;
1723#endif
1724#if defined(__BIG_ENDIAN)
1725	u16 __agg_misc1;
1726	u16 agg_limit1;
1727#elif defined(__LITTLE_ENDIAN)
1728	u16 agg_limit1;
1729	u16 __agg_misc1;
1730#endif
1731	u32 completion_seq;
1732	u32 confq_pbl_base_lo;
1733	u32 confq_pbl_base_hi;
1734};
1735
1736
1737
1738/*
1739 * The tcp aggregative context section of Xstorm
1740 */
1741struct xstorm_tcp_tcp_ag_context_section {
1742#if defined(__BIG_ENDIAN)
1743	u8 tcp_agg_vars1;
1744#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0)
1745#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0
1746#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1747#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1748#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1749#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1750#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6)
1751#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6
1752#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7)
1753#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7
1754	u8 __da_cnt;
1755	u16 mss;
1756#elif defined(__LITTLE_ENDIAN)
1757	u16 mss;
1758	u8 __da_cnt;
1759	u8 tcp_agg_vars1;
1760#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF (0x3<<0)
1761#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_DA_TIMER_CF_SHIFT 0
1762#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED (0x3<<2)
1763#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_SHIFT 2
1764#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF (0x3<<4)
1765#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_SHIFT 4
1766#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN (0x1<<6)
1767#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CLEAR_DA_TIMER_EN_SHIFT 6
1768#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG (0x1<<7)
1769#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_EXPIRATION_FLAG_SHIFT 7
1770#endif
1771	u32 snd_nxt;
1772	u32 tx_wnd;
1773	u32 snd_una;
1774	u32 local_adv_wnd;
1775#if defined(__BIG_ENDIAN)
1776	u8 __agg_val8_th;
1777	u8 __tx_dest;
1778	u16 tcp_agg_vars2;
1779#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1780#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1781#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1782#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1783#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1784#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1785#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1786#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1787#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1788#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1789#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1790#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1791#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1792#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1793#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1794#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1795#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1796#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1797#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1798#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1799#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1800#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1801#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1802#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1803#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1804#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1805#elif defined(__LITTLE_ENDIAN)
1806	u16 tcp_agg_vars2;
1807#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG (0x1<<0)
1808#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_SHIFT 0
1809#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED (0x1<<1)
1810#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_UNBLOCKED_SHIFT 1
1811#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE (0x1<<2)
1812#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_TIMER_ACTIVE_SHIFT 2
1813#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG (0x1<<3)
1814#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX3_FLAG_SHIFT 3
1815#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG (0x1<<4)
1816#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX4_FLAG_SHIFT 4
1817#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE (0x1<<5)
1818#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DA_ENABLE_SHIFT 5
1819#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN (0x1<<6)
1820#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ACK_TO_FE_UPDATED_EN_SHIFT 6
1821#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN (0x1<<7)
1822#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SIDEBAND_SENT_CF_EN_SHIFT 7
1823#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN (0x1<<8)
1824#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_FIN_FLAG_EN_SHIFT 8
1825#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG (0x1<<9)
1826#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX1_FLAG_SHIFT 9
1827#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF (0x3<<10)
1828#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_SET_RTO_CF_SHIFT 10
1829#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF (0x3<<12)
1830#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_UPDATED_CF_SHIFT 12
1831#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF (0x3<<14)
1832#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_SHIFT 14
1833	u8 __tx_dest;
1834	u8 __agg_val8_th;
1835#endif
1836	u32 ack_to_far_end;
1837	u32 rto_timer;
1838	u32 ka_timer;
1839	u32 ts_to_echo;
1840#if defined(__BIG_ENDIAN)
1841	u16 __agg_val7_th;
1842	u16 __agg_val7;
1843#elif defined(__LITTLE_ENDIAN)
1844	u16 __agg_val7;
1845	u16 __agg_val7_th;
1846#endif
1847#if defined(__BIG_ENDIAN)
1848	u8 __tcp_agg_vars5;
1849	u8 __tcp_agg_vars4;
1850	u8 __tcp_agg_vars3;
1851	u8 __force_pure_ack_cnt;
1852#elif defined(__LITTLE_ENDIAN)
1853	u8 __force_pure_ack_cnt;
1854	u8 __tcp_agg_vars3;
1855	u8 __tcp_agg_vars4;
1856	u8 __tcp_agg_vars5;
1857#endif
1858	u32 tcp_agg_vars6;
1859#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN (0x1<<0)
1860#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TS_TO_ECHO_CF_EN_SHIFT 0
1861#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN (0x1<<1)
1862#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TX_DEST_UPDATED_CF_EN_SHIFT 1
1863#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN (0x1<<2)
1864#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_EN_SHIFT 2
1865#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN (0x1<<3)
1866#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_EN_SHIFT 3
1867#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG (0x1<<4)
1868#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX6_FLAG_SHIFT 4
1869#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG (0x1<<5)
1870#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX7_FLAG_SHIFT 5
1871#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF (0x3<<6)
1872#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX5_CF_SHIFT 6
1873#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF (0x3<<8)
1874#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX9_CF_SHIFT 8
1875#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF (0x3<<10)
1876#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX10_CF_SHIFT 10
1877#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF (0x3<<12)
1878#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX11_CF_SHIFT 12
1879#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF (0x3<<14)
1880#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX12_CF_SHIFT 14
1881#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF (0x3<<16)
1882#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX13_CF_SHIFT 16
1883#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF (0x3<<18)
1884#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX14_CF_SHIFT 18
1885#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF (0x3<<20)
1886#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX15_CF_SHIFT 20
1887#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF (0x3<<22)
1888#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX16_CF_SHIFT 22
1889#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF (0x3<<24)
1890#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_AUX17_CF_SHIFT 24
1891#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG (0x1<<26)
1892#define XSTORM_TCP_TCP_AG_CONTEXT_SECTION_ECE_FLAG_SHIFT 26
1893#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71 (0x1<<27)
1894#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_RESERVED71_SHIFT 27
1895#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY (0x1<<28)
1896#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_FORCE_PURE_ACK_CNT_DIRTY_SHIFT 28
1897#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG (0x1<<29)
1898#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_TCP_AUTO_STOP_FLAG_SHIFT 29
1899#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG (0x1<<30)
1900#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_DO_TS_UPDATE_FLAG_SHIFT 30
1901#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG (0x1<<31)
1902#define __XSTORM_TCP_TCP_AG_CONTEXT_SECTION_CANCEL_RETRANSMIT_FLAG_SHIFT 31
1903#if defined(__BIG_ENDIAN)
1904	u16 __agg_misc6;
1905	u16 __tcp_agg_vars7;
1906#elif defined(__LITTLE_ENDIAN)
1907	u16 __tcp_agg_vars7;
1908	u16 __agg_misc6;
1909#endif
1910	u32 __agg_val10;
1911	u32 __agg_val10_th;
1912#if defined(__BIG_ENDIAN)
1913	u16 __reserved3;
1914	u8 __reserved2;
1915	u8 __da_only_cnt;
1916#elif defined(__LITTLE_ENDIAN)
1917	u8 __da_only_cnt;
1918	u8 __reserved2;
1919	u16 __reserved3;
1920#endif
1921};
1922
1923/*
1924 * The iscsi aggregative context of Xstorm
1925 */
1926struct xstorm_iscsi_ag_context {
1927#if defined(__BIG_ENDIAN)
1928	u16 agg_val1;
1929	u8 agg_vars1;
1930#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1931#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1932#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1933#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1934#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1935#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1936#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1937#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1938#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1939#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1940#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1941#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1942#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1943#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1944#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1945#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1946	u8 state;
1947#elif defined(__LITTLE_ENDIAN)
1948	u8 state;
1949	u8 agg_vars1;
1950#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
1951#define __XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
1952#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
1953#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
1954#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
1955#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
1956#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
1957#define XSTORM_ISCSI_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
1958#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
1959#define __XSTORM_ISCSI_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
1960#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN (0x1<<5)
1961#define XSTORM_ISCSI_AG_CONTEXT_NAGLE_EN_SHIFT 5
1962#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
1963#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
1964#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
1965#define __XSTORM_ISCSI_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
1966	u16 agg_val1;
1967#endif
1968#if defined(__BIG_ENDIAN)
1969	u8 cdu_reserved;
1970	u8 __agg_vars4;
1971	u8 agg_vars3;
1972#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
1973#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
1974#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
1975#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
1976	u8 agg_vars2;
1977#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1978#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1979#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1980#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1981#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1982#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1983#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1984#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1985#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
1986#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
1987#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
1988#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
1989#elif defined(__LITTLE_ENDIAN)
1990	u8 agg_vars2;
1991#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF (0x3<<0)
1992#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_SHIFT 0
1993#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
1994#define __XSTORM_ISCSI_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
1995#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG (0x1<<3)
1996#define __XSTORM_ISCSI_AG_CONTEXT_AUX8_FLAG_SHIFT 3
1997#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG (0x1<<4)
1998#define __XSTORM_ISCSI_AG_CONTEXT_AUX9_FLAG_SHIFT 4
1999#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2000#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2001#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN (0x1<<7)
2002#define __XSTORM_ISCSI_AG_CONTEXT_DQ_CF_EN_SHIFT 7
2003	u8 agg_vars3;
2004#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2005#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2006#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2007#define __XSTORM_ISCSI_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2008	u8 __agg_vars4;
2009	u8 cdu_reserved;
2010#endif
2011	u32 more_to_send;
2012#if defined(__BIG_ENDIAN)
2013	u16 agg_vars5;
2014#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2015#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2016#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2017#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2018#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2019#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2020#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2021#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2022	u16 sq_cons;
2023#elif defined(__LITTLE_ENDIAN)
2024	u16 sq_cons;
2025	u16 agg_vars5;
2026#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2027#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2028#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2029#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2030#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2031#define XSTORM_ISCSI_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2032#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2033#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2034#endif
2035	struct xstorm_tcp_tcp_ag_context_section tcp;
2036#if defined(__BIG_ENDIAN)
2037	u16 agg_vars7;
2038#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2039#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2040#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2041#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2042#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2043#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2044#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2045#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2046#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2047#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2048#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2049#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2050#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2051#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2052#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2053#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2054#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2055#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2056#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2057#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2058#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2059#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2060	u8 agg_val3_th;
2061	u8 agg_vars6;
2062#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2063#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2064#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2065#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2066#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2067#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2068#elif defined(__LITTLE_ENDIAN)
2069	u8 agg_vars6;
2070#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2071#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2072#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2073#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2074#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2075#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2076	u8 agg_val3_th;
2077	u16 agg_vars7;
2078#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2079#define __XSTORM_ISCSI_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2080#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2081#define __XSTORM_ISCSI_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2082#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2083#define __XSTORM_ISCSI_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2084#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2085#define XSTORM_ISCSI_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2086#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF (0x3<<8)
2087#define XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_SHIFT 8
2088#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2089#define __XSTORM_ISCSI_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2090#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2091#define __XSTORM_ISCSI_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2092#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2093#define __XSTORM_ISCSI_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2094#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2095#define __XSTORM_ISCSI_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2096#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2097#define __XSTORM_ISCSI_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2098#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2099#define __XSTORM_ISCSI_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2100#endif
2101#if defined(__BIG_ENDIAN)
2102	u16 __agg_val11_th;
2103	u16 __gen_data;
2104#elif defined(__LITTLE_ENDIAN)
2105	u16 __gen_data;
2106	u16 __agg_val11_th;
2107#endif
2108#if defined(__BIG_ENDIAN)
2109	u8 __reserved1;
2110	u8 __agg_val6_th;
2111	u16 __agg_val9;
2112#elif defined(__LITTLE_ENDIAN)
2113	u16 __agg_val9;
2114	u8 __agg_val6_th;
2115	u8 __reserved1;
2116#endif
2117#if defined(__BIG_ENDIAN)
2118	u16 hq_prod;
2119	u16 hq_cons;
2120#elif defined(__LITTLE_ENDIAN)
2121	u16 hq_cons;
2122	u16 hq_prod;
2123#endif
2124	u32 agg_vars8;
2125#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
2126#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC2_SHIFT 0
2127#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
2128#define XSTORM_ISCSI_AG_CONTEXT_AGG_MISC3_SHIFT 24
2129#if defined(__BIG_ENDIAN)
2130	u16 r2tq_prod;
2131	u16 sq_prod;
2132#elif defined(__LITTLE_ENDIAN)
2133	u16 sq_prod;
2134	u16 r2tq_prod;
2135#endif
2136#if defined(__BIG_ENDIAN)
2137	u8 agg_val3;
2138	u8 agg_val6;
2139	u8 agg_val5_th;
2140	u8 agg_val5;
2141#elif defined(__LITTLE_ENDIAN)
2142	u8 agg_val5;
2143	u8 agg_val5_th;
2144	u8 agg_val6;
2145	u8 agg_val3;
2146#endif
2147#if defined(__BIG_ENDIAN)
2148	u16 __agg_misc1;
2149	u16 agg_limit1;
2150#elif defined(__LITTLE_ENDIAN)
2151	u16 agg_limit1;
2152	u16 __agg_misc1;
2153#endif
2154	u32 hq_cons_tcp_seq;
2155	u32 exp_stat_sn;
2156	u32 rst_seq_num;
2157};
2158
2159
2160/*
2161 * The L5cm aggregative context of XStorm
2162 */
2163struct xstorm_l5cm_ag_context {
2164#if defined(__BIG_ENDIAN)
2165	u16 agg_val1;
2166	u8 agg_vars1;
2167#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
2168#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
2169#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
2170#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
2171#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
2172#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
2173#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
2174#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
2175#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
2176#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
2177#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)
2178#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5
2179#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
2180#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
2181#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
2182#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
2183	u8 state;
2184#elif defined(__LITTLE_ENDIAN)
2185	u8 state;
2186	u8 agg_vars1;
2187#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0 (0x1<<0)
2188#define __XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM0_SHIFT 0
2189#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1 (0x1<<1)
2190#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM1_SHIFT 1
2191#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2 (0x1<<2)
2192#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM2_SHIFT 2
2193#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3 (0x1<<3)
2194#define XSTORM_L5CM_AG_CONTEXT_EXISTS_IN_QM3_SHIFT 3
2195#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN (0x1<<4)
2196#define __XSTORM_L5CM_AG_CONTEXT_MORE_TO_SEND_EN_SHIFT 4
2197#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN (0x1<<5)
2198#define XSTORM_L5CM_AG_CONTEXT_NAGLE_EN_SHIFT 5
2199#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG (0x1<<6)
2200#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_SHIFT 6
2201#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN (0x1<<7)
2202#define __XSTORM_L5CM_AG_CONTEXT_UNA_GT_NXT_EN_SHIFT 7
2203	u16 agg_val1;
2204#endif
2205#if defined(__BIG_ENDIAN)
2206	u8 cdu_reserved;
2207	u8 __agg_vars4;
2208	u8 agg_vars3;
2209#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2210#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2211#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2212#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2213	u8 agg_vars2;
2214#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)
2215#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0
2216#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2217#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2218#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2219#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2220#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2221#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2222#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2223#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2224#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)
2225#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7
2226#elif defined(__LITTLE_ENDIAN)
2227	u8 agg_vars2;
2228#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF (0x3<<0)
2229#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_SHIFT 0
2230#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN (0x1<<2)
2231#define __XSTORM_L5CM_AG_CONTEXT_DQ_SPARE_FLAG_EN_SHIFT 2
2232#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG (0x1<<3)
2233#define __XSTORM_L5CM_AG_CONTEXT_AUX8_FLAG_SHIFT 3
2234#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG (0x1<<4)
2235#define __XSTORM_L5CM_AG_CONTEXT_AUX9_FLAG_SHIFT 4
2236#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1 (0x3<<5)
2237#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE1_SHIFT 5
2238#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN (0x1<<7)
2239#define XSTORM_L5CM_AG_CONTEXT_AUX4_CF_EN_SHIFT 7
2240	u8 agg_vars3;
2241#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2 (0x3F<<0)
2242#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM2_SHIFT 0
2243#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF (0x3<<6)
2244#define __XSTORM_L5CM_AG_CONTEXT_RX_TS_EN_CF_SHIFT 6
2245	u8 __agg_vars4;
2246	u8 cdu_reserved;
2247#endif
2248	u32 more_to_send;
2249#if defined(__BIG_ENDIAN)
2250	u16 agg_vars5;
2251#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2252#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2253#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2254#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2255#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2256#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2257#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2258#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2259	u16 agg_val4_th;
2260#elif defined(__LITTLE_ENDIAN)
2261	u16 agg_val4_th;
2262	u16 agg_vars5;
2263#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5 (0x3<<0)
2264#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE5_SHIFT 0
2265#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0 (0x3F<<2)
2266#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM0_SHIFT 2
2267#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1 (0x3F<<8)
2268#define XSTORM_L5CM_AG_CONTEXT_PHYSICAL_QUEUE_NUM1_SHIFT 8
2269#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2 (0x3<<14)
2270#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE2_SHIFT 14
2271#endif
2272	struct xstorm_tcp_tcp_ag_context_section tcp;
2273#if defined(__BIG_ENDIAN)
2274	u16 agg_vars7;
2275#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2276#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2277#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2278#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2279#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2280#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2281#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2282#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2283#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)
2284#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8
2285#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2286#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2287#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2288#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2289#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2290#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2291#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2292#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2293#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2294#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2295#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2296#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2297	u8 agg_val3_th;
2298	u8 agg_vars6;
2299#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2300#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2301#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2302#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2303#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2304#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2305#elif defined(__LITTLE_ENDIAN)
2306	u8 agg_vars6;
2307#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6 (0x7<<0)
2308#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE6_SHIFT 0
2309#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7 (0x7<<3)
2310#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE7_SHIFT 3
2311#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4 (0x3<<6)
2312#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE4_SHIFT 6
2313	u8 agg_val3_th;
2314	u16 agg_vars7;
2315#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE (0x7<<0)
2316#define __XSTORM_L5CM_AG_CONTEXT_AGG_VAL11_DECISION_RULE_SHIFT 0
2317#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG (0x1<<3)
2318#define __XSTORM_L5CM_AG_CONTEXT_AUX13_FLAG_SHIFT 3
2319#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF (0x3<<4)
2320#define __XSTORM_L5CM_AG_CONTEXT_STORMS_SYNC_CF_SHIFT 4
2321#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3 (0x3<<6)
2322#define XSTORM_L5CM_AG_CONTEXT_DECISION_RULE3_SHIFT 6
2323#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF (0x3<<8)
2324#define XSTORM_L5CM_AG_CONTEXT_AUX1_CF_SHIFT 8
2325#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK (0x1<<10)
2326#define __XSTORM_L5CM_AG_CONTEXT_COMPLETION_SEQ_DECISION_MASK_SHIFT 10
2327#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN (0x1<<11)
2328#define __XSTORM_L5CM_AG_CONTEXT_AUX1_CF_EN_SHIFT 11
2329#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG (0x1<<12)
2330#define __XSTORM_L5CM_AG_CONTEXT_AUX10_FLAG_SHIFT 12
2331#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG (0x1<<13)
2332#define __XSTORM_L5CM_AG_CONTEXT_AUX11_FLAG_SHIFT 13
2333#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG (0x1<<14)
2334#define __XSTORM_L5CM_AG_CONTEXT_AUX12_FLAG_SHIFT 14
2335#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN (0x1<<15)
2336#define __XSTORM_L5CM_AG_CONTEXT_RX_WND_SCL_EN_SHIFT 15
2337#endif
2338#if defined(__BIG_ENDIAN)
2339	u16 __agg_val11_th;
2340	u16 __gen_data;
2341#elif defined(__LITTLE_ENDIAN)
2342	u16 __gen_data;
2343	u16 __agg_val11_th;
2344#endif
2345#if defined(__BIG_ENDIAN)
2346	u8 __reserved1;
2347	u8 __agg_val6_th;
2348	u16 __agg_val9;
2349#elif defined(__LITTLE_ENDIAN)
2350	u16 __agg_val9;
2351	u8 __agg_val6_th;
2352	u8 __reserved1;
2353#endif
2354#if defined(__BIG_ENDIAN)
2355	u16 agg_val2_th;
2356	u16 agg_val2;
2357#elif defined(__LITTLE_ENDIAN)
2358	u16 agg_val2;
2359	u16 agg_val2_th;
2360#endif
2361	u32 agg_vars8;
2362#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2 (0xFFFFFF<<0)
2363#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC2_SHIFT 0
2364#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3 (0xFF<<24)
2365#define XSTORM_L5CM_AG_CONTEXT_AGG_MISC3_SHIFT 24
2366#if defined(__BIG_ENDIAN)
2367	u16 agg_misc0;
2368	u16 agg_val4;
2369#elif defined(__LITTLE_ENDIAN)
2370	u16 agg_val4;
2371	u16 agg_misc0;
2372#endif
2373#if defined(__BIG_ENDIAN)
2374	u8 agg_val3;
2375	u8 agg_val6;
2376	u8 agg_val5_th;
2377	u8 agg_val5;
2378#elif defined(__LITTLE_ENDIAN)
2379	u8 agg_val5;
2380	u8 agg_val5_th;
2381	u8 agg_val6;
2382	u8 agg_val3;
2383#endif
2384#if defined(__BIG_ENDIAN)
2385	u16 __agg_misc1;
2386	u16 agg_limit1;
2387#elif defined(__LITTLE_ENDIAN)
2388	u16 agg_limit1;
2389	u16 __agg_misc1;
2390#endif
2391	u32 completion_seq;
2392	u32 agg_misc4;
2393	u32 rst_seq_num;
2394};
2395
2396/*
2397 * ABTS info $$KEEP_ENDIANNESS$$
2398 */
2399struct fcoe_abts_info {
2400	__le16 aborted_task_id;
2401	__le16 reserved0;
2402	__le32 reserved1;
2403};
2404
2405
2406/*
2407 * Fixed size structure in order to plant it in Union structure
2408 * $$KEEP_ENDIANNESS$$
2409 */
2410struct fcoe_abts_rsp_union {
2411	u8 r_ctl;
2412	u8 rsrv[3];
2413	__le32 abts_rsp_payload[7];
2414};
2415
2416
2417/*
2418 * 4 regs size $$KEEP_ENDIANNESS$$
2419 */
2420struct fcoe_bd_ctx {
2421	__le32 buf_addr_hi;
2422	__le32 buf_addr_lo;
2423	__le16 buf_len;
2424	__le16 rsrv0;
2425	__le16 flags;
2426	__le16 rsrv1;
2427};
2428
2429
2430/*
2431 * FCoE cached sges context $$KEEP_ENDIANNESS$$
2432 */
2433struct fcoe_cached_sge_ctx {
2434	struct regpair cur_buf_addr;
2435	__le16 cur_buf_rem;
2436	__le16 second_buf_rem;
2437	struct regpair second_buf_addr;
2438};
2439
2440
2441/*
2442 * Cleanup info $$KEEP_ENDIANNESS$$
2443 */
2444struct fcoe_cleanup_info {
2445	__le16 cleaned_task_id;
2446	__le16 rolled_tx_seq_cnt;
2447	__le32 rolled_tx_data_offset;
2448};
2449
2450
2451/*
2452 * Fcp RSP flags $$KEEP_ENDIANNESS$$
2453 */
2454struct fcoe_fcp_rsp_flags {
2455	u8 flags;
2456#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID (0x1<<0)
2457#define FCOE_FCP_RSP_FLAGS_FCP_RSP_LEN_VALID_SHIFT 0
2458#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID (0x1<<1)
2459#define FCOE_FCP_RSP_FLAGS_FCP_SNS_LEN_VALID_SHIFT 1
2460#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER (0x1<<2)
2461#define FCOE_FCP_RSP_FLAGS_FCP_RESID_OVER_SHIFT 2
2462#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER (0x1<<3)
2463#define FCOE_FCP_RSP_FLAGS_FCP_RESID_UNDER_SHIFT 3
2464#define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ (0x1<<4)
2465#define FCOE_FCP_RSP_FLAGS_FCP_CONF_REQ_SHIFT 4
2466#define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS (0x7<<5)
2467#define FCOE_FCP_RSP_FLAGS_FCP_BIDI_FLAGS_SHIFT 5
2468};
2469
2470/*
2471 * Fcp RSP payload $$KEEP_ENDIANNESS$$
2472 */
2473struct fcoe_fcp_rsp_payload {
2474	struct regpair reserved0;
2475	__le32 fcp_resid;
2476	u8 scsi_status_code;
2477	struct fcoe_fcp_rsp_flags fcp_flags;
2478	__le16 retry_delay_timer;
2479	__le32 fcp_rsp_len;
2480	__le32 fcp_sns_len;
2481};
2482
2483/*
2484 * Fixed size structure in order to plant it in Union structure
2485 * $$KEEP_ENDIANNESS$$
2486 */
2487struct fcoe_fcp_rsp_union {
2488	struct fcoe_fcp_rsp_payload payload;
2489	struct regpair reserved0;
2490};
2491
2492/*
2493 * FC header $$KEEP_ENDIANNESS$$
2494 */
2495struct fcoe_fc_hdr {
2496	u8 s_id[3];
2497	u8 cs_ctl;
2498	u8 d_id[3];
2499	u8 r_ctl;
2500	__le16 seq_cnt;
2501	u8 df_ctl;
2502	u8 seq_id;
2503	u8 f_ctl[3];
2504	u8 type;
2505	__le32 parameters;
2506	__le16 rx_id;
2507	__le16 ox_id;
2508};
2509
2510/*
2511 * FC header union $$KEEP_ENDIANNESS$$
2512 */
2513struct fcoe_mp_rsp_union {
2514	struct fcoe_fc_hdr fc_hdr;
2515	__le32 mp_payload_len;
2516	__le32 rsrv;
2517};
2518
2519/*
2520 * Completion information $$KEEP_ENDIANNESS$$
2521 */
2522union fcoe_comp_flow_info {
2523	struct fcoe_fcp_rsp_union fcp_rsp;
2524	struct fcoe_abts_rsp_union abts_rsp;
2525	struct fcoe_mp_rsp_union mp_rsp;
2526	__le32 opaque[8];
2527};
2528
2529
2530/*
2531 * External ABTS info $$KEEP_ENDIANNESS$$
2532 */
2533struct fcoe_ext_abts_info {
2534	__le32 rsrv0[6];
2535	struct fcoe_abts_info ctx;
2536};
2537
2538
2539/*
2540 * External cleanup info $$KEEP_ENDIANNESS$$
2541 */
2542struct fcoe_ext_cleanup_info {
2543	__le32 rsrv0[6];
2544	struct fcoe_cleanup_info ctx;
2545};
2546
2547
2548/*
2549 * Fcoe FW Tx sequence context $$KEEP_ENDIANNESS$$
2550 */
2551struct fcoe_fw_tx_seq_ctx {
2552	__le32 data_offset;
2553	__le16 seq_cnt;
2554	__le16 rsrv0;
2555};
2556
2557/*
2558 * Fcoe external FW Tx sequence context $$KEEP_ENDIANNESS$$
2559 */
2560struct fcoe_ext_fw_tx_seq_ctx {
2561	__le32 rsrv0[6];
2562	struct fcoe_fw_tx_seq_ctx ctx;
2563};
2564
2565
2566/*
2567 * FCoE multiple sges context $$KEEP_ENDIANNESS$$
2568 */
2569struct fcoe_mul_sges_ctx {
2570	struct regpair cur_sge_addr;
2571	__le16 cur_sge_off;
2572	u8 cur_sge_idx;
2573	u8 sgl_size;
2574};
2575
2576/*
2577 * FCoE external multiple sges context $$KEEP_ENDIANNESS$$
2578 */
2579struct fcoe_ext_mul_sges_ctx {
2580	struct fcoe_mul_sges_ctx mul_sgl;
2581	struct regpair rsrv0;
2582};
2583
2584
2585/*
2586 * FCP CMD payload $$KEEP_ENDIANNESS$$
2587 */
2588struct fcoe_fcp_cmd_payload {
2589	__le32 opaque[8];
2590};
2591
2592
2593
2594
2595
2596/*
2597 * Fcp xfr rdy payload $$KEEP_ENDIANNESS$$
2598 */
2599struct fcoe_fcp_xfr_rdy_payload {
2600	__le32 burst_len;
2601	__le32 data_ro;
2602};
2603
2604
2605/*
2606 * FC frame $$KEEP_ENDIANNESS$$
2607 */
2608struct fcoe_fc_frame {
2609	struct fcoe_fc_hdr fc_hdr;
2610	__le32 reserved0[2];
2611};
2612
2613
2614
2615
2616/*
2617 * FCoE KCQ CQE parameters $$KEEP_ENDIANNESS$$
2618 */
2619union fcoe_kcqe_params {
2620	__le32 reserved0[4];
2621};
2622
2623/*
2624 * FCoE KCQ CQE $$KEEP_ENDIANNESS$$
2625 */
2626struct fcoe_kcqe {
2627	__le32 fcoe_conn_id;
2628	__le32 completion_status;
2629	__le32 fcoe_conn_context_id;
2630	union fcoe_kcqe_params params;
2631	__le16 qe_self_seq;
2632	u8 op_code;
2633	u8 flags;
2634#define FCOE_KCQE_RESERVED0 (0x7<<0)
2635#define FCOE_KCQE_RESERVED0_SHIFT 0
2636#define FCOE_KCQE_RAMROD_COMPLETION (0x1<<3)
2637#define FCOE_KCQE_RAMROD_COMPLETION_SHIFT 3
2638#define FCOE_KCQE_LAYER_CODE (0x7<<4)
2639#define FCOE_KCQE_LAYER_CODE_SHIFT 4
2640#define FCOE_KCQE_LINKED_WITH_NEXT (0x1<<7)
2641#define FCOE_KCQE_LINKED_WITH_NEXT_SHIFT 7
2642};
2643
2644
2645
2646/*
2647 * FCoE KWQE header $$KEEP_ENDIANNESS$$
2648 */
2649struct fcoe_kwqe_header {
2650	u8 op_code;
2651	u8 flags;
2652#define FCOE_KWQE_HEADER_RESERVED0 (0xF<<0)
2653#define FCOE_KWQE_HEADER_RESERVED0_SHIFT 0
2654#define FCOE_KWQE_HEADER_LAYER_CODE (0x7<<4)
2655#define FCOE_KWQE_HEADER_LAYER_CODE_SHIFT 4
2656#define FCOE_KWQE_HEADER_RESERVED1 (0x1<<7)
2657#define FCOE_KWQE_HEADER_RESERVED1_SHIFT 7
2658};
2659
2660/*
2661 * FCoE firmware init request 1 $$KEEP_ENDIANNESS$$
2662 */
2663struct fcoe_kwqe_init1 {
2664	__le16 num_tasks;
2665	struct fcoe_kwqe_header hdr;
2666	__le32 task_list_pbl_addr_lo;
2667	__le32 task_list_pbl_addr_hi;
2668	__le32 dummy_buffer_addr_lo;
2669	__le32 dummy_buffer_addr_hi;
2670	__le16 sq_num_wqes;
2671	__le16 rq_num_wqes;
2672	__le16 rq_buffer_log_size;
2673	__le16 cq_num_wqes;
2674	__le16 mtu;
2675	u8 num_sessions_log;
2676	u8 flags;
2677#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE (0xF<<0)
2678#define FCOE_KWQE_INIT1_LOG_PAGE_SIZE_SHIFT 0
2679#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC (0x7<<4)
2680#define FCOE_KWQE_INIT1_LOG_CACHED_PBES_PER_FUNC_SHIFT 4
2681#define FCOE_KWQE_INIT1_RESERVED1 (0x1<<7)
2682#define FCOE_KWQE_INIT1_RESERVED1_SHIFT 7
2683};
2684
2685/*
2686 * FCoE firmware init request 2 $$KEEP_ENDIANNESS$$
2687 */
2688struct fcoe_kwqe_init2 {
2689	u8 hsi_major_version;
2690	u8 hsi_minor_version;
2691	struct fcoe_kwqe_header hdr;
2692	__le32 hash_tbl_pbl_addr_lo;
2693	__le32 hash_tbl_pbl_addr_hi;
2694	__le32 t2_hash_tbl_addr_lo;
2695	__le32 t2_hash_tbl_addr_hi;
2696	__le32 t2_ptr_hash_tbl_addr_lo;
2697	__le32 t2_ptr_hash_tbl_addr_hi;
2698	__le32 free_list_count;
2699};
2700
2701/*
2702 * FCoE firmware init request 3 $$KEEP_ENDIANNESS$$
2703 */
2704struct fcoe_kwqe_init3 {
2705	__le16 reserved0;
2706	struct fcoe_kwqe_header hdr;
2707	__le32 error_bit_map_lo;
2708	__le32 error_bit_map_hi;
2709	u8 perf_config;
2710	u8 reserved21[3];
2711	__le32 reserved2[4];
2712};
2713
2714/*
2715 * FCoE connection offload request 1 $$KEEP_ENDIANNESS$$
2716 */
2717struct fcoe_kwqe_conn_offload1 {
2718	__le16 fcoe_conn_id;
2719	struct fcoe_kwqe_header hdr;
2720	__le32 sq_addr_lo;
2721	__le32 sq_addr_hi;
2722	__le32 rq_pbl_addr_lo;
2723	__le32 rq_pbl_addr_hi;
2724	__le32 rq_first_pbe_addr_lo;
2725	__le32 rq_first_pbe_addr_hi;
2726	__le16 rq_prod;
2727	__le16 reserved0;
2728};
2729
2730/*
2731 * FCoE connection offload request 2 $$KEEP_ENDIANNESS$$
2732 */
2733struct fcoe_kwqe_conn_offload2 {
2734	__le16 tx_max_fc_pay_len;
2735	struct fcoe_kwqe_header hdr;
2736	__le32 cq_addr_lo;
2737	__le32 cq_addr_hi;
2738	__le32 xferq_addr_lo;
2739	__le32 xferq_addr_hi;
2740	__le32 conn_db_addr_lo;
2741	__le32 conn_db_addr_hi;
2742	__le32 reserved1;
2743};
2744
2745/*
2746 * FCoE connection offload request 3 $$KEEP_ENDIANNESS$$
2747 */
2748struct fcoe_kwqe_conn_offload3 {
2749	__le16 vlan_tag;
2750#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID (0xFFF<<0)
2751#define FCOE_KWQE_CONN_OFFLOAD3_VLAN_ID_SHIFT 0
2752#define FCOE_KWQE_CONN_OFFLOAD3_CFI (0x1<<12)
2753#define FCOE_KWQE_CONN_OFFLOAD3_CFI_SHIFT 12
2754#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY (0x7<<13)
2755#define FCOE_KWQE_CONN_OFFLOAD3_PRIORITY_SHIFT 13
2756	struct fcoe_kwqe_header hdr;
2757	u8 s_id[3];
2758	u8 tx_max_conc_seqs_c3;
2759	u8 d_id[3];
2760	u8 flags;
2761#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS (0x1<<0)
2762#define FCOE_KWQE_CONN_OFFLOAD3_B_MUL_N_PORT_IDS_SHIFT 0
2763#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES (0x1<<1)
2764#define FCOE_KWQE_CONN_OFFLOAD3_B_E_D_TOV_RES_SHIFT 1
2765#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT (0x1<<2)
2766#define FCOE_KWQE_CONN_OFFLOAD3_B_CONT_INCR_SEQ_CNT_SHIFT 2
2767#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ (0x1<<3)
2768#define FCOE_KWQE_CONN_OFFLOAD3_B_CONF_REQ_SHIFT 3
2769#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID (0x1<<4)
2770#define FCOE_KWQE_CONN_OFFLOAD3_B_REC_VALID_SHIFT 4
2771#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID (0x1<<5)
2772#define FCOE_KWQE_CONN_OFFLOAD3_B_C2_VALID_SHIFT 5
2773#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0 (0x1<<6)
2774#define FCOE_KWQE_CONN_OFFLOAD3_B_ACK_0_SHIFT 6
2775#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG (0x1<<7)
2776#define FCOE_KWQE_CONN_OFFLOAD3_B_VLAN_FLAG_SHIFT 7
2777	__le32 reserved;
2778	__le32 confq_first_pbe_addr_lo;
2779	__le32 confq_first_pbe_addr_hi;
2780	__le16 tx_total_conc_seqs;
2781	__le16 rx_max_fc_pay_len;
2782	__le16 rx_total_conc_seqs;
2783	u8 rx_max_conc_seqs_c3;
2784	u8 rx_open_seqs_exch_c3;
2785};
2786
2787/*
2788 * FCoE connection offload request 4 $$KEEP_ENDIANNESS$$
2789 */
2790struct fcoe_kwqe_conn_offload4 {
2791	u8 e_d_tov_timer_val;
2792	u8 reserved2;
2793	struct fcoe_kwqe_header hdr;
2794	u8 src_mac_addr_lo[2];
2795	u8 src_mac_addr_mid[2];
2796	u8 src_mac_addr_hi[2];
2797	u8 dst_mac_addr_hi[2];
2798	u8 dst_mac_addr_lo[2];
2799	u8 dst_mac_addr_mid[2];
2800	__le32 lcq_addr_lo;
2801	__le32 lcq_addr_hi;
2802	__le32 confq_pbl_base_addr_lo;
2803	__le32 confq_pbl_base_addr_hi;
2804};
2805
2806/*
2807 * FCoE connection enable request $$KEEP_ENDIANNESS$$
2808 */
2809struct fcoe_kwqe_conn_enable_disable {
2810	__le16 reserved0;
2811	struct fcoe_kwqe_header hdr;
2812	u8 src_mac_addr_lo[2];
2813	u8 src_mac_addr_mid[2];
2814	u8 src_mac_addr_hi[2];
2815	u16 vlan_tag;
2816#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID (0xFFF<<0)
2817#define FCOE_KWQE_CONN_ENABLE_DISABLE_VLAN_ID_SHIFT 0
2818#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI (0x1<<12)
2819#define FCOE_KWQE_CONN_ENABLE_DISABLE_CFI_SHIFT 12
2820#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY (0x7<<13)
2821#define FCOE_KWQE_CONN_ENABLE_DISABLE_PRIORITY_SHIFT 13
2822	u8 dst_mac_addr_lo[2];
2823	u8 dst_mac_addr_mid[2];
2824	u8 dst_mac_addr_hi[2];
2825	__le16 reserved1;
2826	u8 s_id[3];
2827	u8 vlan_flag;
2828	u8 d_id[3];
2829	u8 reserved3;
2830	__le32 context_id;
2831	__le32 conn_id;
2832	__le32 reserved4;
2833};
2834
2835/*
2836 * FCoE connection destroy request $$KEEP_ENDIANNESS$$
2837 */
2838struct fcoe_kwqe_conn_destroy {
2839	__le16 reserved0;
2840	struct fcoe_kwqe_header hdr;
2841	__le32 context_id;
2842	__le32 conn_id;
2843	__le32 reserved1[5];
2844};
2845
2846/*
2847 * FCoe destroy request $$KEEP_ENDIANNESS$$
2848 */
2849struct fcoe_kwqe_destroy {
2850	__le16 reserved0;
2851	struct fcoe_kwqe_header hdr;
2852	__le32 reserved1[7];
2853};
2854
2855/*
2856 * FCoe statistics request $$KEEP_ENDIANNESS$$
2857 */
2858struct fcoe_kwqe_stat {
2859	__le16 reserved0;
2860	struct fcoe_kwqe_header hdr;
2861	__le32 stat_params_addr_lo;
2862	__le32 stat_params_addr_hi;
2863	__le32 reserved1[5];
2864};
2865
2866/*
2867 * FCoE KWQ WQE $$KEEP_ENDIANNESS$$
2868 */
2869union fcoe_kwqe {
2870	struct fcoe_kwqe_init1 init1;
2871	struct fcoe_kwqe_init2 init2;
2872	struct fcoe_kwqe_init3 init3;
2873	struct fcoe_kwqe_conn_offload1 conn_offload1;
2874	struct fcoe_kwqe_conn_offload2 conn_offload2;
2875	struct fcoe_kwqe_conn_offload3 conn_offload3;
2876	struct fcoe_kwqe_conn_offload4 conn_offload4;
2877	struct fcoe_kwqe_conn_enable_disable conn_enable_disable;
2878	struct fcoe_kwqe_conn_destroy conn_destroy;
2879	struct fcoe_kwqe_destroy destroy;
2880	struct fcoe_kwqe_stat statistics;
2881};
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898/*
2899 * TX SGL context $$KEEP_ENDIANNESS$$
2900 */
2901union fcoe_sgl_union_ctx {
2902	struct fcoe_cached_sge_ctx cached_sge;
2903	struct fcoe_ext_mul_sges_ctx sgl;
2904	__le32 opaque[5];
2905};
2906
2907/*
2908 * Data-In/ELS/BLS information $$KEEP_ENDIANNESS$$
2909 */
2910struct fcoe_read_flow_info {
2911	union fcoe_sgl_union_ctx sgl_ctx;
2912	__le32 rsrv0[3];
2913};
2914
2915
2916/*
2917 * Fcoe stat context $$KEEP_ENDIANNESS$$
2918 */
2919struct fcoe_s_stat_ctx {
2920	u8 flags;
2921#define FCOE_S_STAT_CTX_ACTIVE (0x1<<0)
2922#define FCOE_S_STAT_CTX_ACTIVE_SHIFT 0
2923#define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND (0x1<<1)
2924#define FCOE_S_STAT_CTX_ACK_ABORT_SEQ_COND_SHIFT 1
2925#define FCOE_S_STAT_CTX_ABTS_PERFORMED (0x1<<2)
2926#define FCOE_S_STAT_CTX_ABTS_PERFORMED_SHIFT 2
2927#define FCOE_S_STAT_CTX_SEQ_TIMEOUT (0x1<<3)
2928#define FCOE_S_STAT_CTX_SEQ_TIMEOUT_SHIFT 3
2929#define FCOE_S_STAT_CTX_P_RJT (0x1<<4)
2930#define FCOE_S_STAT_CTX_P_RJT_SHIFT 4
2931#define FCOE_S_STAT_CTX_ACK_EOFT (0x1<<5)
2932#define FCOE_S_STAT_CTX_ACK_EOFT_SHIFT 5
2933#define FCOE_S_STAT_CTX_RSRV1 (0x3<<6)
2934#define FCOE_S_STAT_CTX_RSRV1_SHIFT 6
2935};
2936
2937/*
2938 * Fcoe rx seq context $$KEEP_ENDIANNESS$$
2939 */
2940struct fcoe_rx_seq_ctx {
2941	u8 seq_id;
2942	struct fcoe_s_stat_ctx s_stat;
2943	__le16 seq_cnt;
2944	__le32 low_exp_ro;
2945	__le32 high_exp_ro;
2946};
2947
2948
2949/*
2950 * Fcoe rx_wr union context $$KEEP_ENDIANNESS$$
2951 */
2952union fcoe_rx_wr_union_ctx {
2953	struct fcoe_read_flow_info read_info;
2954	union fcoe_comp_flow_info comp_info;
2955	__le32 opaque[8];
2956};
2957
2958
2959
2960/*
2961 * FCoE SQ element $$KEEP_ENDIANNESS$$
2962 */
2963struct fcoe_sqe {
2964	__le16 wqe;
2965#define FCOE_SQE_TASK_ID (0x7FFF<<0)
2966#define FCOE_SQE_TASK_ID_SHIFT 0
2967#define FCOE_SQE_TOGGLE_BIT (0x1<<15)
2968#define FCOE_SQE_TOGGLE_BIT_SHIFT 15
2969};
2970
2971
2972
2973/*
2974 * 14 regs $$KEEP_ENDIANNESS$$
2975 */
2976struct fcoe_tce_tx_only {
2977	union fcoe_sgl_union_ctx sgl_ctx;
2978	__le32 rsrv0;
2979};
2980
2981/*
2982 * 32 bytes (8 regs) used for TX only purposes $$KEEP_ENDIANNESS$$
2983 */
2984union fcoe_tx_wr_rx_rd_union_ctx {
2985	struct fcoe_fc_frame tx_frame;
2986	struct fcoe_fcp_cmd_payload fcp_cmd;
2987	struct fcoe_ext_cleanup_info cleanup;
2988	struct fcoe_ext_abts_info abts;
2989	struct fcoe_ext_fw_tx_seq_ctx tx_seq;
2990	__le32 opaque[8];
2991};
2992
2993/*
2994 * tce_tx_wr_rx_rd_const $$KEEP_ENDIANNESS$$
2995 */
2996struct fcoe_tce_tx_wr_rx_rd_const {
2997	u8 init_flags;
2998#define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE (0x7<<0)
2999#define FCOE_TCE_TX_WR_RX_RD_CONST_TASK_TYPE_SHIFT 0
3000#define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE (0x1<<3)
3001#define FCOE_TCE_TX_WR_RX_RD_CONST_DEV_TYPE_SHIFT 3
3002#define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE (0x1<<4)
3003#define FCOE_TCE_TX_WR_RX_RD_CONST_CLASS_TYPE_SHIFT 4
3004#define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE (0x3<<5)
3005#define FCOE_TCE_TX_WR_RX_RD_CONST_CACHED_SGE_SHIFT 5
3006#define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV (0x1<<7)
3007#define FCOE_TCE_TX_WR_RX_RD_CONST_SUPPORT_REC_TOV_SHIFT 7
3008	u8 tx_flags;
3009#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID (0x1<<0)
3010#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_VALID_SHIFT 0
3011#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE (0xF<<1)
3012#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_STATE_SHIFT 1
3013#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1 (0x1<<5)
3014#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV1_SHIFT 5
3015#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT (0x1<<6)
3016#define FCOE_TCE_TX_WR_RX_RD_CONST_TX_SEQ_INIT_SHIFT 6
3017#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV2 (0x1<<7)
3018#define FCOE_TCE_TX_WR_RX_RD_CONST_RSRV2_SHIFT 7
3019	__le16 rsrv3;
3020	__le32 verify_tx_seq;
3021};
3022
3023/*
3024 * tce_tx_wr_rx_rd $$KEEP_ENDIANNESS$$
3025 */
3026struct fcoe_tce_tx_wr_rx_rd {
3027	union fcoe_tx_wr_rx_rd_union_ctx union_ctx;
3028	struct fcoe_tce_tx_wr_rx_rd_const const_ctx;
3029};
3030
3031/*
3032 * tce_rx_wr_tx_rd_const $$KEEP_ENDIANNESS$$
3033 */
3034struct fcoe_tce_rx_wr_tx_rd_const {
3035	__le32 data_2_trns;
3036	__le32 init_flags;
3037#define FCOE_TCE_RX_WR_TX_RD_CONST_CID (0xFFFFFF<<0)
3038#define FCOE_TCE_RX_WR_TX_RD_CONST_CID_SHIFT 0
3039#define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0 (0xFF<<24)
3040#define FCOE_TCE_RX_WR_TX_RD_CONST_RSRV0_SHIFT 24
3041};
3042
3043/*
3044 * tce_rx_wr_tx_rd_var $$KEEP_ENDIANNESS$$
3045 */
3046struct fcoe_tce_rx_wr_tx_rd_var {
3047	__le16 rx_flags;
3048#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1 (0xF<<0)
3049#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV1_SHIFT 0
3050#define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE (0x7<<4)
3051#define FCOE_TCE_RX_WR_TX_RD_VAR_NUM_RQ_WQE_SHIFT 4
3052#define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ (0x1<<7)
3053#define FCOE_TCE_RX_WR_TX_RD_VAR_CONF_REQ_SHIFT 7
3054#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE (0xF<<8)
3055#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_STATE_SHIFT 8
3056#define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME (0x1<<12)
3057#define FCOE_TCE_RX_WR_TX_RD_VAR_EXP_FIRST_FRAME_SHIFT 12
3058#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT (0x1<<13)
3059#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_SEQ_INIT_SHIFT 13
3060#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2 (0x1<<14)
3061#define FCOE_TCE_RX_WR_TX_RD_VAR_RSRV2_SHIFT 14
3062#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID (0x1<<15)
3063#define FCOE_TCE_RX_WR_TX_RD_VAR_RX_VALID_SHIFT 15
3064	__le16 rx_id;
3065	struct fcoe_fcp_xfr_rdy_payload fcp_xfr_rdy;
3066};
3067
3068/*
3069 * tce_rx_wr_tx_rd $$KEEP_ENDIANNESS$$
3070 */
3071struct fcoe_tce_rx_wr_tx_rd {
3072	struct fcoe_tce_rx_wr_tx_rd_const const_ctx;
3073	struct fcoe_tce_rx_wr_tx_rd_var var_ctx;
3074};
3075
3076/*
3077 * tce_rx_only $$KEEP_ENDIANNESS$$
3078 */
3079struct fcoe_tce_rx_only {
3080	struct fcoe_rx_seq_ctx rx_seq_ctx;
3081	union fcoe_rx_wr_union_ctx union_ctx;
3082};
3083
3084/*
3085 * task_ctx_entry $$KEEP_ENDIANNESS$$
3086 */
3087struct fcoe_task_ctx_entry {
3088	struct fcoe_tce_tx_only txwr_only;
3089	struct fcoe_tce_tx_wr_rx_rd txwr_rxrd;
3090	struct fcoe_tce_rx_wr_tx_rd rxwr_txrd;
3091	struct fcoe_tce_rx_only rxwr_only;
3092};
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103/*
3104 * FCoE XFRQ element $$KEEP_ENDIANNESS$$
3105 */
3106struct fcoe_xfrqe {
3107	__le16 wqe;
3108#define FCOE_XFRQE_TASK_ID (0x7FFF<<0)
3109#define FCOE_XFRQE_TASK_ID_SHIFT 0
3110#define FCOE_XFRQE_TOGGLE_BIT (0x1<<15)
3111#define FCOE_XFRQE_TOGGLE_BIT_SHIFT 15
3112};
3113
3114
3115/*
3116 * Cached SGEs $$KEEP_ENDIANNESS$$
3117 */
3118struct common_fcoe_sgl {
3119	struct fcoe_bd_ctx sge[3];
3120};
3121
3122
3123/*
3124 * FCoE SQ\XFRQ element
3125 */
3126struct fcoe_cached_wqe {
3127	struct fcoe_sqe sqe;
3128	struct fcoe_xfrqe xfrqe;
3129};
3130
3131
3132/*
3133 * FCoE connection enable\disable params passed by driver to FW in FCoE enable
3134 * ramrod $$KEEP_ENDIANNESS$$
3135 */
3136struct fcoe_conn_enable_disable_ramrod_params {
3137	struct fcoe_kwqe_conn_enable_disable enable_disable_kwqe;
3138};
3139
3140
3141/*
3142 * FCoE connection offload params passed by driver to FW in FCoE offload ramrod
3143 * $$KEEP_ENDIANNESS$$
3144 */
3145struct fcoe_conn_offload_ramrod_params {
3146	struct fcoe_kwqe_conn_offload1 offload_kwqe1;
3147	struct fcoe_kwqe_conn_offload2 offload_kwqe2;
3148	struct fcoe_kwqe_conn_offload3 offload_kwqe3;
3149	struct fcoe_kwqe_conn_offload4 offload_kwqe4;
3150};
3151
3152
3153struct ustorm_fcoe_mng_ctx {
3154#if defined(__BIG_ENDIAN)
3155	u8 mid_seq_proc_flag;
3156	u8 tce_in_cam_flag;
3157	u8 tce_on_ior_flag;
3158	u8 en_cached_tce_flag;
3159#elif defined(__LITTLE_ENDIAN)
3160	u8 en_cached_tce_flag;
3161	u8 tce_on_ior_flag;
3162	u8 tce_in_cam_flag;
3163	u8 mid_seq_proc_flag;
3164#endif
3165#if defined(__BIG_ENDIAN)
3166	u8 tce_cam_addr;
3167	u8 cached_conn_flag;
3168	u16 rsrv0;
3169#elif defined(__LITTLE_ENDIAN)
3170	u16 rsrv0;
3171	u8 cached_conn_flag;
3172	u8 tce_cam_addr;
3173#endif
3174#if defined(__BIG_ENDIAN)
3175	u16 dma_tce_ram_addr;
3176	u16 tce_ram_addr;
3177#elif defined(__LITTLE_ENDIAN)
3178	u16 tce_ram_addr;
3179	u16 dma_tce_ram_addr;
3180#endif
3181#if defined(__BIG_ENDIAN)
3182	u16 ox_id;
3183	u16 wr_done_seq;
3184#elif defined(__LITTLE_ENDIAN)
3185	u16 wr_done_seq;
3186	u16 ox_id;
3187#endif
3188	struct regpair task_addr;
3189};
3190
3191/*
3192 * Parameters initialized during offloaded according to FLOGI/PLOGI/PRLI and
3193 * used in FCoE context section
3194 */
3195struct ustorm_fcoe_params {
3196#if defined(__BIG_ENDIAN)
3197	u16 fcoe_conn_id;
3198	u16 flags;
3199#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
3200#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
3201#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
3202#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
3203#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
3204#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
3205#define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
3206#define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
3207#define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
3208#define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
3209#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
3210#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
3211#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
3212#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
3213#define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7)
3214#define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7
3215#elif defined(__LITTLE_ENDIAN)
3216	u16 flags;
3217#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS (0x1<<0)
3218#define USTORM_FCOE_PARAMS_B_MUL_N_PORT_IDS_SHIFT 0
3219#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES (0x1<<1)
3220#define USTORM_FCOE_PARAMS_B_E_D_TOV_RES_SHIFT 1
3221#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT (0x1<<2)
3222#define USTORM_FCOE_PARAMS_B_CONT_INCR_SEQ_CNT_SHIFT 2
3223#define USTORM_FCOE_PARAMS_B_CONF_REQ (0x1<<3)
3224#define USTORM_FCOE_PARAMS_B_CONF_REQ_SHIFT 3
3225#define USTORM_FCOE_PARAMS_B_REC_VALID (0x1<<4)
3226#define USTORM_FCOE_PARAMS_B_REC_VALID_SHIFT 4
3227#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT (0x1<<5)
3228#define USTORM_FCOE_PARAMS_B_CQ_TOGGLE_BIT_SHIFT 5
3229#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT (0x1<<6)
3230#define USTORM_FCOE_PARAMS_B_XFRQ_TOGGLE_BIT_SHIFT 6
3231#define USTORM_FCOE_PARAMS_RSRV0 (0x1FF<<7)
3232#define USTORM_FCOE_PARAMS_RSRV0_SHIFT 7
3233	u16 fcoe_conn_id;
3234#endif
3235#if defined(__BIG_ENDIAN)
3236	u8 hc_csdm_byte_en;
3237	u8 func_id;
3238	u8 port_id;
3239	u8 vnic_id;
3240#elif defined(__LITTLE_ENDIAN)
3241	u8 vnic_id;
3242	u8 port_id;
3243	u8 func_id;
3244	u8 hc_csdm_byte_en;
3245#endif
3246#if defined(__BIG_ENDIAN)
3247	u16 rx_total_conc_seqs;
3248	u16 rx_max_fc_pay_len;
3249#elif defined(__LITTLE_ENDIAN)
3250	u16 rx_max_fc_pay_len;
3251	u16 rx_total_conc_seqs;
3252#endif
3253#if defined(__BIG_ENDIAN)
3254	u8 task_pbe_idx_off;
3255	u8 task_in_page_log_size;
3256	u16 rx_max_conc_seqs;
3257#elif defined(__LITTLE_ENDIAN)
3258	u16 rx_max_conc_seqs;
3259	u8 task_in_page_log_size;
3260	u8 task_pbe_idx_off;
3261#endif
3262};
3263
3264/*
3265 * FCoE 16-bits index structure
3266 */
3267struct fcoe_idx16_fields {
3268	u16 fields;
3269#define FCOE_IDX16_FIELDS_IDX (0x7FFF<<0)
3270#define FCOE_IDX16_FIELDS_IDX_SHIFT 0
3271#define FCOE_IDX16_FIELDS_MSB (0x1<<15)
3272#define FCOE_IDX16_FIELDS_MSB_SHIFT 15
3273};
3274
3275/*
3276 * FCoE 16-bits index union
3277 */
3278union fcoe_idx16_field_union {
3279	struct fcoe_idx16_fields fields;
3280	u16 val;
3281};
3282
3283/*
3284 * Parameters required for placement according to SGL
3285 */
3286struct ustorm_fcoe_data_place_mng {
3287#if defined(__BIG_ENDIAN)
3288	u16 sge_off;
3289	u8 num_sges;
3290	u8 sge_idx;
3291#elif defined(__LITTLE_ENDIAN)
3292	u8 sge_idx;
3293	u8 num_sges;
3294	u16 sge_off;
3295#endif
3296};
3297
3298/*
3299 * Parameters required for placement according to SGL
3300 */
3301struct ustorm_fcoe_data_place {
3302	struct ustorm_fcoe_data_place_mng cached_mng;
3303	struct fcoe_bd_ctx cached_sge[2];
3304};
3305
3306/*
3307 * TX processing shall write and RX processing shall read from this section
3308 */
3309union fcoe_u_tce_tx_wr_rx_rd_union {
3310	struct fcoe_abts_info abts;
3311	struct fcoe_cleanup_info cleanup;
3312	struct fcoe_fw_tx_seq_ctx tx_seq_ctx;
3313	u32 opaque[2];
3314};
3315
3316/*
3317 * TX processing shall write and RX processing shall read from this section
3318 */
3319struct fcoe_u_tce_tx_wr_rx_rd {
3320	union fcoe_u_tce_tx_wr_rx_rd_union union_ctx;
3321	struct fcoe_tce_tx_wr_rx_rd_const const_ctx;
3322};
3323
3324struct ustorm_fcoe_tce {
3325	struct fcoe_u_tce_tx_wr_rx_rd txwr_rxrd;
3326	struct fcoe_tce_rx_wr_tx_rd rxwr_txrd;
3327	struct fcoe_tce_rx_only rxwr;
3328};
3329
3330struct ustorm_fcoe_cache_ctx {
3331	u32 rsrv0;
3332	struct ustorm_fcoe_data_place data_place;
3333	struct ustorm_fcoe_tce tce;
3334};
3335
3336/*
3337 * Ustorm FCoE Storm Context
3338 */
3339struct ustorm_fcoe_st_context {
3340	struct ustorm_fcoe_mng_ctx mng_ctx;
3341	struct ustorm_fcoe_params fcoe_params;
3342	struct regpair cq_base_addr;
3343	struct regpair rq_pbl_base;
3344	struct regpair rq_cur_page_addr;
3345	struct regpair confq_pbl_base_addr;
3346	struct regpair conn_db_base;
3347	struct regpair xfrq_base_addr;
3348	struct regpair lcq_base_addr;
3349#if defined(__BIG_ENDIAN)
3350	union fcoe_idx16_field_union rq_cons;
3351	union fcoe_idx16_field_union rq_prod;
3352#elif defined(__LITTLE_ENDIAN)
3353	union fcoe_idx16_field_union rq_prod;
3354	union fcoe_idx16_field_union rq_cons;
3355#endif
3356#if defined(__BIG_ENDIAN)
3357	u16 xfrq_prod;
3358	u16 cq_cons;
3359#elif defined(__LITTLE_ENDIAN)
3360	u16 cq_cons;
3361	u16 xfrq_prod;
3362#endif
3363#if defined(__BIG_ENDIAN)
3364	u16 lcq_cons;
3365	u16 hc_cram_address;
3366#elif defined(__LITTLE_ENDIAN)
3367	u16 hc_cram_address;
3368	u16 lcq_cons;
3369#endif
3370#if defined(__BIG_ENDIAN)
3371	u16 sq_xfrq_lcq_confq_size;
3372	u16 confq_prod;
3373#elif defined(__LITTLE_ENDIAN)
3374	u16 confq_prod;
3375	u16 sq_xfrq_lcq_confq_size;
3376#endif
3377#if defined(__BIG_ENDIAN)
3378	u8 hc_csdm_agg_int;
3379	u8 rsrv2;
3380	u8 available_rqes;
3381	u8 sp_q_flush_cnt;
3382#elif defined(__LITTLE_ENDIAN)
3383	u8 sp_q_flush_cnt;
3384	u8 available_rqes;
3385	u8 rsrv2;
3386	u8 hc_csdm_agg_int;
3387#endif
3388#if defined(__BIG_ENDIAN)
3389	u16 num_pend_tasks;
3390	u16 pbf_ack_ram_addr;
3391#elif defined(__LITTLE_ENDIAN)
3392	u16 pbf_ack_ram_addr;
3393	u16 num_pend_tasks;
3394#endif
3395	struct ustorm_fcoe_cache_ctx cache_ctx;
3396};
3397
3398/*
3399 * The FCoE non-aggregative context of Tstorm
3400 */
3401struct tstorm_fcoe_st_context {
3402	struct regpair reserved0;
3403	struct regpair reserved1;
3404};
3405
3406/*
3407 * Ethernet context section
3408 */
3409struct xstorm_fcoe_eth_context_section {
3410#if defined(__BIG_ENDIAN)
3411	u8 remote_addr_4;
3412	u8 remote_addr_5;
3413	u8 local_addr_0;
3414	u8 local_addr_1;
3415#elif defined(__LITTLE_ENDIAN)
3416	u8 local_addr_1;
3417	u8 local_addr_0;
3418	u8 remote_addr_5;
3419	u8 remote_addr_4;
3420#endif
3421#if defined(__BIG_ENDIAN)
3422	u8 remote_addr_0;
3423	u8 remote_addr_1;
3424	u8 remote_addr_2;
3425	u8 remote_addr_3;
3426#elif defined(__LITTLE_ENDIAN)
3427	u8 remote_addr_3;
3428	u8 remote_addr_2;
3429	u8 remote_addr_1;
3430	u8 remote_addr_0;
3431#endif
3432#if defined(__BIG_ENDIAN)
3433	u16 reserved_vlan_type;
3434	u16 params;
3435#define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
3436#define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
3437#define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12)
3438#define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12
3439#define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
3440#define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
3441#elif defined(__LITTLE_ENDIAN)
3442	u16 params;
3443#define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
3444#define XSTORM_FCOE_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
3445#define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI (0x1<<12)
3446#define XSTORM_FCOE_ETH_CONTEXT_SECTION_CFI_SHIFT 12
3447#define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
3448#define XSTORM_FCOE_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
3449	u16 reserved_vlan_type;
3450#endif
3451#if defined(__BIG_ENDIAN)
3452	u8 local_addr_2;
3453	u8 local_addr_3;
3454	u8 local_addr_4;
3455	u8 local_addr_5;
3456#elif defined(__LITTLE_ENDIAN)
3457	u8 local_addr_5;
3458	u8 local_addr_4;
3459	u8 local_addr_3;
3460	u8 local_addr_2;
3461#endif
3462};
3463
3464/*
3465 * Flags used in FCoE context section - 1 byte
3466 */
3467struct xstorm_fcoe_context_flags {
3468	u8 flags;
3469#define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q (0x3<<0)
3470#define XSTORM_FCOE_CONTEXT_FLAGS_B_PROC_Q_SHIFT 0
3471#define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ (0x1<<2)
3472#define XSTORM_FCOE_CONTEXT_FLAGS_B_MID_SEQ_SHIFT 2
3473#define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ (0x1<<3)
3474#define XSTORM_FCOE_CONTEXT_FLAGS_B_BLOCK_SQ_SHIFT 3
3475#define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT (0x1<<4)
3476#define XSTORM_FCOE_CONTEXT_FLAGS_B_REC_SUPPORT_SHIFT 4
3477#define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE (0x1<<5)
3478#define XSTORM_FCOE_CONTEXT_FLAGS_B_SQ_TOGGLE_SHIFT 5
3479#define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE (0x1<<6)
3480#define XSTORM_FCOE_CONTEXT_FLAGS_B_XFRQ_TOGGLE_SHIFT 6
3481#define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN (0x1<<7)
3482#define XSTORM_FCOE_CONTEXT_FLAGS_B_VNTAG_VLAN_SHIFT 7
3483};
3484
3485struct xstorm_fcoe_tce {
3486	struct fcoe_tce_tx_only txwr;
3487	struct fcoe_tce_tx_wr_rx_rd txwr_rxrd;
3488};
3489
3490/*
3491 * FCP_DATA parameters required for transmission
3492 */
3493struct xstorm_fcoe_fcp_data {
3494	u32 io_rem;
3495#if defined(__BIG_ENDIAN)
3496	u16 cached_sge_off;
3497	u8 cached_num_sges;
3498	u8 cached_sge_idx;
3499#elif defined(__LITTLE_ENDIAN)
3500	u8 cached_sge_idx;
3501	u8 cached_num_sges;
3502	u16 cached_sge_off;
3503#endif
3504	u32 buf_addr_hi_0;
3505	u32 buf_addr_lo_0;
3506#if defined(__BIG_ENDIAN)
3507	u16 num_of_pending_tasks;
3508	u16 buf_len_0;
3509#elif defined(__LITTLE_ENDIAN)
3510	u16 buf_len_0;
3511	u16 num_of_pending_tasks;
3512#endif
3513	u32 buf_addr_hi_1;
3514	u32 buf_addr_lo_1;
3515#if defined(__BIG_ENDIAN)
3516	u16 task_pbe_idx_off;
3517	u16 buf_len_1;
3518#elif defined(__LITTLE_ENDIAN)
3519	u16 buf_len_1;
3520	u16 task_pbe_idx_off;
3521#endif
3522	u32 buf_addr_hi_2;
3523	u32 buf_addr_lo_2;
3524#if defined(__BIG_ENDIAN)
3525	u16 ox_id;
3526	u16 buf_len_2;
3527#elif defined(__LITTLE_ENDIAN)
3528	u16 buf_len_2;
3529	u16 ox_id;
3530#endif
3531};
3532
3533/*
3534 * vlan configuration
3535 */
3536struct xstorm_fcoe_vlan_conf {
3537	u8 vlan_conf;
3538#define XSTORM_FCOE_VLAN_CONF_PRIORITY (0x7<<0)
3539#define XSTORM_FCOE_VLAN_CONF_PRIORITY_SHIFT 0
3540#define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG (0x1<<3)
3541#define XSTORM_FCOE_VLAN_CONF_INNER_VLAN_FLAG_SHIFT 3
3542#define XSTORM_FCOE_VLAN_CONF_RESERVED (0xF<<4)
3543#define XSTORM_FCOE_VLAN_CONF_RESERVED_SHIFT 4
3544};
3545
3546/*
3547 * FCoE 16-bits vlan structure
3548 */
3549struct fcoe_vlan_fields {
3550	u16 fields;
3551#define FCOE_VLAN_FIELDS_VID (0xFFF<<0)
3552#define FCOE_VLAN_FIELDS_VID_SHIFT 0
3553#define FCOE_VLAN_FIELDS_CLI (0x1<<12)
3554#define FCOE_VLAN_FIELDS_CLI_SHIFT 12
3555#define FCOE_VLAN_FIELDS_PRI (0x7<<13)
3556#define FCOE_VLAN_FIELDS_PRI_SHIFT 13
3557};
3558
3559/*
3560 * FCoE 16-bits vlan union
3561 */
3562union fcoe_vlan_field_union {
3563	struct fcoe_vlan_fields fields;
3564	u16 val;
3565};
3566
3567/*
3568 * FCoE 16-bits vlan, vif union
3569 */
3570union fcoe_vlan_vif_field_union {
3571	union fcoe_vlan_field_union vlan;
3572	u16 vif;
3573};
3574
3575/*
3576 * FCoE context section
3577 */
3578struct xstorm_fcoe_context_section {
3579#if defined(__BIG_ENDIAN)
3580	u8 cs_ctl;
3581	u8 s_id[3];
3582#elif defined(__LITTLE_ENDIAN)
3583	u8 s_id[3];
3584	u8 cs_ctl;
3585#endif
3586#if defined(__BIG_ENDIAN)
3587	u8 rctl;
3588	u8 d_id[3];
3589#elif defined(__LITTLE_ENDIAN)
3590	u8 d_id[3];
3591	u8 rctl;
3592#endif
3593#if defined(__BIG_ENDIAN)
3594	u16 sq_xfrq_lcq_confq_size;
3595	u16 tx_max_fc_pay_len;
3596#elif defined(__LITTLE_ENDIAN)
3597	u16 tx_max_fc_pay_len;
3598	u16 sq_xfrq_lcq_confq_size;
3599#endif
3600	u32 lcq_prod;
3601#if defined(__BIG_ENDIAN)
3602	u8 port_id;
3603	u8 func_id;
3604	u8 seq_id;
3605	struct xstorm_fcoe_context_flags tx_flags;
3606#elif defined(__LITTLE_ENDIAN)
3607	struct xstorm_fcoe_context_flags tx_flags;
3608	u8 seq_id;
3609	u8 func_id;
3610	u8 port_id;
3611#endif
3612#if defined(__BIG_ENDIAN)
3613	u16 mtu;
3614	u8 func_mode;
3615	u8 vnic_id;
3616#elif defined(__LITTLE_ENDIAN)
3617	u8 vnic_id;
3618	u8 func_mode;
3619	u16 mtu;
3620#endif
3621	struct regpair confq_curr_page_addr;
3622	struct fcoe_cached_wqe cached_wqe[8];
3623	struct regpair lcq_base_addr;
3624	struct xstorm_fcoe_tce tce;
3625	struct xstorm_fcoe_fcp_data fcp_data;
3626#if defined(__BIG_ENDIAN)
3627	u8 tx_max_conc_seqs_c3;
3628	u8 vlan_flag;
3629	u8 dcb_val;
3630	u8 data_pb_cmd_size;
3631#elif defined(__LITTLE_ENDIAN)
3632	u8 data_pb_cmd_size;
3633	u8 dcb_val;
3634	u8 vlan_flag;
3635	u8 tx_max_conc_seqs_c3;
3636#endif
3637#if defined(__BIG_ENDIAN)
3638	u16 fcoe_tx_stat_params_ram_addr;
3639	u16 fcoe_tx_fc_seq_ram_addr;
3640#elif defined(__LITTLE_ENDIAN)
3641	u16 fcoe_tx_fc_seq_ram_addr;
3642	u16 fcoe_tx_stat_params_ram_addr;
3643#endif
3644#if defined(__BIG_ENDIAN)
3645	u8 fcp_cmd_line_credit;
3646	u8 eth_hdr_size;
3647	u16 pbf_addr;
3648#elif defined(__LITTLE_ENDIAN)
3649	u16 pbf_addr;
3650	u8 eth_hdr_size;
3651	u8 fcp_cmd_line_credit;
3652#endif
3653#if defined(__BIG_ENDIAN)
3654	union fcoe_vlan_vif_field_union multi_func_val;
3655	u8 page_log_size;
3656	struct xstorm_fcoe_vlan_conf orig_vlan_conf;
3657#elif defined(__LITTLE_ENDIAN)
3658	struct xstorm_fcoe_vlan_conf orig_vlan_conf;
3659	u8 page_log_size;
3660	union fcoe_vlan_vif_field_union multi_func_val;
3661#endif
3662#if defined(__BIG_ENDIAN)
3663	u16 fcp_cmd_frame_size;
3664	u16 pbf_addr_ff;
3665#elif defined(__LITTLE_ENDIAN)
3666	u16 pbf_addr_ff;
3667	u16 fcp_cmd_frame_size;
3668#endif
3669#if defined(__BIG_ENDIAN)
3670	u8 vlan_num;
3671	u8 cos;
3672	u8 cache_xfrq_cons;
3673	u8 cache_sq_cons;
3674#elif defined(__LITTLE_ENDIAN)
3675	u8 cache_sq_cons;
3676	u8 cache_xfrq_cons;
3677	u8 cos;
3678	u8 vlan_num;
3679#endif
3680	u32 verify_tx_seq;
3681};
3682
3683/*
3684 * Xstorm FCoE Storm Context
3685 */
3686struct xstorm_fcoe_st_context {
3687	struct xstorm_fcoe_eth_context_section eth;
3688	struct xstorm_fcoe_context_section fcoe;
3689};
3690
3691/*
3692 * Fcoe connection context
3693 */
3694struct fcoe_context {
3695	struct ustorm_fcoe_st_context ustorm_st_context;
3696	struct tstorm_fcoe_st_context tstorm_st_context;
3697	struct xstorm_fcoe_ag_context xstorm_ag_context;
3698	struct tstorm_fcoe_ag_context tstorm_ag_context;
3699	struct ustorm_fcoe_ag_context ustorm_ag_context;
3700	struct timers_block_context timers_context;
3701	struct xstorm_fcoe_st_context xstorm_st_context;
3702};
3703
3704/*
3705 * FCoE init params passed by driver to FW in FCoE init ramrod
3706 * $$KEEP_ENDIANNESS$$
3707 */
3708struct fcoe_init_ramrod_params {
3709	struct fcoe_kwqe_init1 init_kwqe1;
3710	struct fcoe_kwqe_init2 init_kwqe2;
3711	struct fcoe_kwqe_init3 init_kwqe3;
3712	struct regpair eq_pbl_base;
3713	__le32 eq_pbl_size;
3714	__le32 reserved2;
3715	__le16 eq_prod;
3716	__le16 sb_num;
3717	u8 sb_id;
3718	u8 reserved0;
3719	__le16 reserved1;
3720};
3721
3722/*
3723 * FCoE statistics params buffer passed by driver to FW in FCoE statistics
3724 * ramrod $$KEEP_ENDIANNESS$$
3725 */
3726struct fcoe_stat_ramrod_params {
3727	struct fcoe_kwqe_stat stat_kwqe;
3728};
3729
3730/*
3731 * CQ DB CQ producer and pending completion counter
3732 */
3733struct iscsi_cq_db_prod_pnd_cmpltn_cnt {
3734#if defined(__BIG_ENDIAN)
3735	u16 cntr;
3736	u16 prod;
3737#elif defined(__LITTLE_ENDIAN)
3738	u16 prod;
3739	u16 cntr;
3740#endif
3741};
3742
3743/*
3744 * CQ DB pending completion ITT array
3745 */
3746struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr {
3747	struct iscsi_cq_db_prod_pnd_cmpltn_cnt prod_pend_comp[8];
3748};
3749
3750/*
3751 * Cstorm CQ sequence to notify array, updated by driver
3752 */
3753struct iscsi_cq_db_sqn_2_notify_arr {
3754	u16 sqn[8];
3755};
3756
3757/*
3758 * Cstorm iSCSI Storm Context
3759 */
3760struct cstorm_iscsi_st_context {
3761	struct iscsi_cq_db_prod_pnd_cmpltn_cnt_arr cq_c_prod_pend_comp_ctr_arr;
3762	struct iscsi_cq_db_sqn_2_notify_arr cq_c_prod_sqn_arr;
3763	struct iscsi_cq_db_sqn_2_notify_arr cq_c_sqn_2_notify_arr;
3764	struct regpair hq_pbl_base;
3765	struct regpair hq_curr_pbe;
3766	struct regpair task_pbl_base;
3767	struct regpair cq_db_base;
3768#if defined(__BIG_ENDIAN)
3769	u16 hq_bd_itt;
3770	u16 iscsi_conn_id;
3771#elif defined(__LITTLE_ENDIAN)
3772	u16 iscsi_conn_id;
3773	u16 hq_bd_itt;
3774#endif
3775	u32 hq_bd_data_segment_len;
3776	u32 hq_bd_buffer_offset;
3777#if defined(__BIG_ENDIAN)
3778	u8 rsrv;
3779	u8 cq_proc_en_bit_map;
3780	u8 cq_pend_comp_itt_valid_bit_map;
3781	u8 hq_bd_opcode;
3782#elif defined(__LITTLE_ENDIAN)
3783	u8 hq_bd_opcode;
3784	u8 cq_pend_comp_itt_valid_bit_map;
3785	u8 cq_proc_en_bit_map;
3786	u8 rsrv;
3787#endif
3788	u32 hq_tcp_seq;
3789#if defined(__BIG_ENDIAN)
3790	u16 flags;
3791#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3792#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3793#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3794#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3795#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3796#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3797#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3798#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3799#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3800#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3801#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3802#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3803	u16 hq_cons;
3804#elif defined(__LITTLE_ENDIAN)
3805	u16 hq_cons;
3806	u16 flags;
3807#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN (0x1<<0)
3808#define CSTORM_ISCSI_ST_CONTEXT_DATA_DIGEST_EN_SHIFT 0
3809#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN (0x1<<1)
3810#define CSTORM_ISCSI_ST_CONTEXT_HDR_DIGEST_EN_SHIFT 1
3811#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID (0x1<<2)
3812#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_CTXT_VALID_SHIFT 2
3813#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG (0x1<<3)
3814#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_LCL_CMPLN_FLG_SHIFT 3
3815#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK (0x1<<4)
3816#define CSTORM_ISCSI_ST_CONTEXT_HQ_BD_WRITE_TASK_SHIFT 4
3817#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV (0x7FF<<5)
3818#define CSTORM_ISCSI_ST_CONTEXT_CTRL_FLAGS_RSRV_SHIFT 5
3819#endif
3820	struct regpair rsrv1;
3821};
3822
3823
3824/*
3825 * SCSI read/write SQ WQE
3826 */
3827struct iscsi_cmd_pdu_hdr_little_endian {
3828#if defined(__BIG_ENDIAN)
3829	u8 opcode;
3830	u8 op_attr;
3831#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0)
3832#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0
3833#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3)
3834#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3
3835#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5)
3836#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5
3837#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6)
3838#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6
3839#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3840#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3841	u16 rsrv0;
3842#elif defined(__LITTLE_ENDIAN)
3843	u16 rsrv0;
3844	u8 op_attr;
3845#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES (0x7<<0)
3846#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_ATTRIBUTES_SHIFT 0
3847#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x3<<3)
3848#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 3
3849#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG (0x1<<5)
3850#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_WRITE_FLAG_SHIFT 5
3851#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG (0x1<<6)
3852#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_READ_FLAG_SHIFT 6
3853#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
3854#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
3855	u8 opcode;
3856#endif
3857	u32 data_fields;
3858#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
3859#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
3860#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
3861#define ISCSI_CMD_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
3862	struct regpair lun;
3863	u32 itt;
3864	u32 expected_data_transfer_length;
3865	u32 cmd_sn;
3866	u32 exp_stat_sn;
3867	u32 scsi_command_block[4];
3868};
3869
3870
3871/*
3872 * Buffer per connection, used in Tstorm
3873 */
3874struct iscsi_conn_buf {
3875	struct regpair reserved[8];
3876};
3877
3878
3879/*
3880 * iSCSI context region, used only in iSCSI
3881 */
3882struct ustorm_iscsi_rq_db {
3883	struct regpair pbl_base;
3884	struct regpair curr_pbe;
3885};
3886
3887/*
3888 * iSCSI context region, used only in iSCSI
3889 */
3890struct ustorm_iscsi_r2tq_db {
3891	struct regpair pbl_base;
3892	struct regpair curr_pbe;
3893};
3894
3895/*
3896 * iSCSI context region, used only in iSCSI
3897 */
3898struct ustorm_iscsi_cq_db {
3899#if defined(__BIG_ENDIAN)
3900	u16 cq_sn;
3901	u16 prod;
3902#elif defined(__LITTLE_ENDIAN)
3903	u16 prod;
3904	u16 cq_sn;
3905#endif
3906	struct regpair curr_pbe;
3907};
3908
3909/*
3910 * iSCSI context region, used only in iSCSI
3911 */
3912struct rings_db {
3913	struct ustorm_iscsi_rq_db rq;
3914	struct ustorm_iscsi_r2tq_db r2tq;
3915	struct ustorm_iscsi_cq_db cq[8];
3916#if defined(__BIG_ENDIAN)
3917	u16 rq_prod;
3918	u16 r2tq_prod;
3919#elif defined(__LITTLE_ENDIAN)
3920	u16 r2tq_prod;
3921	u16 rq_prod;
3922#endif
3923	struct regpair cq_pbl_base;
3924};
3925
3926/*
3927 * iSCSI context region, used only in iSCSI
3928 */
3929struct ustorm_iscsi_placement_db {
3930	u32 sgl_base_lo;
3931	u32 sgl_base_hi;
3932	u32 local_sge_0_address_hi;
3933	u32 local_sge_0_address_lo;
3934#if defined(__BIG_ENDIAN)
3935	u16 curr_sge_offset;
3936	u16 local_sge_0_size;
3937#elif defined(__LITTLE_ENDIAN)
3938	u16 local_sge_0_size;
3939	u16 curr_sge_offset;
3940#endif
3941	u32 local_sge_1_address_hi;
3942	u32 local_sge_1_address_lo;
3943#if defined(__BIG_ENDIAN)
3944	u8 exp_padding_2b;
3945	u8 nal_len_3b;
3946	u16 local_sge_1_size;
3947#elif defined(__LITTLE_ENDIAN)
3948	u16 local_sge_1_size;
3949	u8 nal_len_3b;
3950	u8 exp_padding_2b;
3951#endif
3952#if defined(__BIG_ENDIAN)
3953	u8 sgl_size;
3954	u8 local_sge_index_2b;
3955	u16 reserved7;
3956#elif defined(__LITTLE_ENDIAN)
3957	u16 reserved7;
3958	u8 local_sge_index_2b;
3959	u8 sgl_size;
3960#endif
3961	u32 rem_pdu;
3962	u32 place_db_bitfield_1;
3963#define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD (0xFFFFFF<<0)
3964#define USTORM_ISCSI_PLACEMENT_DB_REM_PDU_PAYLOAD_SHIFT 0
3965#define USTORM_ISCSI_PLACEMENT_DB_CQ_ID (0xFF<<24)
3966#define USTORM_ISCSI_PLACEMENT_DB_CQ_ID_SHIFT 24
3967	u32 place_db_bitfield_2;
3968#define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE (0xFFFFFF<<0)
3969#define USTORM_ISCSI_PLACEMENT_DB_BYTES_2_TRUNCATE_SHIFT 0
3970#define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX (0xFF<<24)
3971#define USTORM_ISCSI_PLACEMENT_DB_HOST_SGE_INDEX_SHIFT 24
3972	u32 nal;
3973#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE (0xFFFFFF<<0)
3974#define USTORM_ISCSI_PLACEMENT_DB_REM_SGE_SIZE_SHIFT 0
3975#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B (0xFF<<24)
3976#define USTORM_ISCSI_PLACEMENT_DB_EXP_DIGEST_3B_SHIFT 24
3977};
3978
3979/*
3980 * Ustorm iSCSI Storm Context
3981 */
3982struct ustorm_iscsi_st_context {
3983	u32 exp_stat_sn;
3984	u32 exp_data_sn;
3985	struct rings_db ring;
3986	struct regpair task_pbl_base;
3987	struct regpair tce_phy_addr;
3988	struct ustorm_iscsi_placement_db place_db;
3989	u32 reserved8;
3990	u32 rem_rcv_len;
3991#if defined(__BIG_ENDIAN)
3992	u16 hdr_itt;
3993	u16 iscsi_conn_id;
3994#elif defined(__LITTLE_ENDIAN)
3995	u16 iscsi_conn_id;
3996	u16 hdr_itt;
3997#endif
3998	u32 nal_bytes;
3999#if defined(__BIG_ENDIAN)
4000	u8 hdr_second_byte_union;
4001	u8 bitfield_0;
4002#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
4003#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
4004#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
4005#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
4006#define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2)
4007#define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2
4008#define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3)
4009#define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3
4010	u8 task_pdu_cache_index;
4011	u8 task_pbe_cache_index;
4012#elif defined(__LITTLE_ENDIAN)
4013	u8 task_pbe_cache_index;
4014	u8 task_pdu_cache_index;
4015	u8 bitfield_0;
4016#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU (0x1<<0)
4017#define USTORM_ISCSI_ST_CONTEXT_BMIDDLEOFPDU_SHIFT 0
4018#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE (0x1<<1)
4019#define USTORM_ISCSI_ST_CONTEXT_BFENCECQE_SHIFT 1
4020#define USTORM_ISCSI_ST_CONTEXT_BRESETCRC (0x1<<2)
4021#define USTORM_ISCSI_ST_CONTEXT_BRESETCRC_SHIFT 2
4022#define USTORM_ISCSI_ST_CONTEXT_RESERVED1 (0x1F<<3)
4023#define USTORM_ISCSI_ST_CONTEXT_RESERVED1_SHIFT 3
4024	u8 hdr_second_byte_union;
4025#endif
4026#if defined(__BIG_ENDIAN)
4027	u16 reserved3;
4028	u8 reserved2;
4029	u8 acDecrement;
4030#elif defined(__LITTLE_ENDIAN)
4031	u8 acDecrement;
4032	u8 reserved2;
4033	u16 reserved3;
4034#endif
4035	u32 task_stat;
4036#if defined(__BIG_ENDIAN)
4037	u8 hdr_opcode;
4038	u8 num_cqs;
4039	u16 reserved5;
4040#elif defined(__LITTLE_ENDIAN)
4041	u16 reserved5;
4042	u8 num_cqs;
4043	u8 hdr_opcode;
4044#endif
4045	u32 negotiated_rx;
4046#define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH (0xFFFFFF<<0)
4047#define USTORM_ISCSI_ST_CONTEXT_MAX_RECV_PDU_LENGTH_SHIFT 0
4048#define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS (0xFF<<24)
4049#define USTORM_ISCSI_ST_CONTEXT_MAX_OUTSTANDING_R2TS_SHIFT 24
4050	u32 negotiated_rx_and_flags;
4051#define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH (0xFFFFFF<<0)
4052#define USTORM_ISCSI_ST_CONTEXT_MAX_BURST_LENGTH_SHIFT 0
4053#define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED (0x1<<24)
4054#define USTORM_ISCSI_ST_CONTEXT_B_CQE_POSTED_OR_HEADER_CACHED_SHIFT 24
4055#define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN (0x1<<25)
4056#define USTORM_ISCSI_ST_CONTEXT_B_HDR_DIGEST_EN_SHIFT 25
4057#define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN (0x1<<26)
4058#define USTORM_ISCSI_ST_CONTEXT_B_DATA_DIGEST_EN_SHIFT 26
4059#define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR (0x1<<27)
4060#define USTORM_ISCSI_ST_CONTEXT_B_PROTOCOL_ERROR_SHIFT 27
4061#define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID (0x1<<28)
4062#define USTORM_ISCSI_ST_CONTEXT_B_TASK_VALID_SHIFT 28
4063#define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE (0x3<<29)
4064#define USTORM_ISCSI_ST_CONTEXT_TASK_TYPE_SHIFT 29
4065#define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED (0x1<<31)
4066#define USTORM_ISCSI_ST_CONTEXT_B_ALL_DATA_ACKED_SHIFT 31
4067};
4068
4069/*
4070 * TCP context region, shared in TOE, RDMA and ISCSI
4071 */
4072struct tstorm_tcp_st_context_section {
4073	u32 flags1;
4074#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT (0xFFFFFF<<0)
4075#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_SRTT_SHIFT 0
4076#define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID (0x1<<24)
4077#define TSTORM_TCP_ST_CONTEXT_SECTION_PAWS_INVALID_SHIFT 24
4078#define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS (0x1<<25)
4079#define TSTORM_TCP_ST_CONTEXT_SECTION_TIMESTAMP_EXISTS_SHIFT 25
4080#define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0 (0x1<<26)
4081#define TSTORM_TCP_ST_CONTEXT_SECTION_RESERVED0_SHIFT 26
4082#define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD (0x1<<27)
4083#define TSTORM_TCP_ST_CONTEXT_SECTION_STOP_RX_PAYLOAD_SHIFT 27
4084#define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED (0x1<<28)
4085#define TSTORM_TCP_ST_CONTEXT_SECTION_KA_ENABLED_SHIFT 28
4086#define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE (0x1<<29)
4087#define TSTORM_TCP_ST_CONTEXT_SECTION_FIRST_RTO_ESTIMATE_SHIFT 29
4088#define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN (0x1<<30)
4089#define TSTORM_TCP_ST_CONTEXT_SECTION_MAX_SEG_RETRANSMIT_EN_SHIFT 30
4090#define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN (0x1<<31)
4091#define TSTORM_TCP_ST_CONTEXT_SECTION_LAST_ISLE_HAS_FIN_SHIFT 31
4092	u32 flags2;
4093#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION (0xFFFFFF<<0)
4094#define TSTORM_TCP_ST_CONTEXT_SECTION_RTT_VARIATION_SHIFT 0
4095#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN (0x1<<24)
4096#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_EN_SHIFT 24
4097#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN (0x1<<25)
4098#define TSTORM_TCP_ST_CONTEXT_SECTION_DA_COUNTER_EN_SHIFT 25
4099#define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT (0x1<<26)
4100#define __TSTORM_TCP_ST_CONTEXT_SECTION_KA_PROBE_SENT_SHIFT 26
4101#define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT (0x1<<27)
4102#define __TSTORM_TCP_ST_CONTEXT_SECTION_PERSIST_PROBE_SENT_SHIFT 27
4103#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<28)
4104#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 28
4105#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<29)
4106#define TSTORM_TCP_ST_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 29
4107#define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK (0x1<<30)
4108#define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_RST_ATTACK_SHIFT 30
4109#define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK (0x1<<31)
4110#define __TSTORM_TCP_ST_CONTEXT_SECTION_IN_WINDOW_SYN_ATTACK_SHIFT 31
4111#if defined(__BIG_ENDIAN)
4112	u16 mss;
4113	u8 tcp_sm_state;
4114	u8 rto_exp;
4115#elif defined(__LITTLE_ENDIAN)
4116	u8 rto_exp;
4117	u8 tcp_sm_state;
4118	u16 mss;
4119#endif
4120	u32 rcv_nxt;
4121	u32 timestamp_recent;
4122	u32 timestamp_recent_time;
4123	u32 cwnd;
4124	u32 ss_thresh;
4125	u32 cwnd_accum;
4126	u32 prev_seg_seq;
4127	u32 expected_rel_seq;
4128	u32 recover;
4129#if defined(__BIG_ENDIAN)
4130	u8 retransmit_count;
4131	u8 ka_max_probe_count;
4132	u8 persist_probe_count;
4133	u8 ka_probe_count;
4134#elif defined(__LITTLE_ENDIAN)
4135	u8 ka_probe_count;
4136	u8 persist_probe_count;
4137	u8 ka_max_probe_count;
4138	u8 retransmit_count;
4139#endif
4140#if defined(__BIG_ENDIAN)
4141	u8 statistics_counter_id;
4142	u8 ooo_support_mode;
4143	u8 snd_wnd_scale;
4144	u8 dup_ack_count;
4145#elif defined(__LITTLE_ENDIAN)
4146	u8 dup_ack_count;
4147	u8 snd_wnd_scale;
4148	u8 ooo_support_mode;
4149	u8 statistics_counter_id;
4150#endif
4151	u32 retransmit_start_time;
4152	u32 ka_timeout;
4153	u32 ka_interval;
4154	u32 isle_start_seq;
4155	u32 isle_end_seq;
4156#if defined(__BIG_ENDIAN)
4157	u16 second_isle_address;
4158	u16 recent_seg_wnd;
4159#elif defined(__LITTLE_ENDIAN)
4160	u16 recent_seg_wnd;
4161	u16 second_isle_address;
4162#endif
4163#if defined(__BIG_ENDIAN)
4164	u8 max_isles_ever_happened;
4165	u8 isles_number;
4166	u16 last_isle_address;
4167#elif defined(__LITTLE_ENDIAN)
4168	u16 last_isle_address;
4169	u8 isles_number;
4170	u8 max_isles_ever_happened;
4171#endif
4172	u32 max_rt_time;
4173#if defined(__BIG_ENDIAN)
4174	u16 lsb_mac_address;
4175	u16 vlan_id;
4176#elif defined(__LITTLE_ENDIAN)
4177	u16 vlan_id;
4178	u16 lsb_mac_address;
4179#endif
4180#if defined(__BIG_ENDIAN)
4181	u16 msb_mac_address;
4182	u16 mid_mac_address;
4183#elif defined(__LITTLE_ENDIAN)
4184	u16 mid_mac_address;
4185	u16 msb_mac_address;
4186#endif
4187	u32 rightmost_received_seq;
4188};
4189
4190/*
4191 * Termination variables
4192 */
4193struct iscsi_term_vars {
4194	u8 BitMap;
4195#define ISCSI_TERM_VARS_TCP_STATE (0xF<<0)
4196#define ISCSI_TERM_VARS_TCP_STATE_SHIFT 0
4197#define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4)
4198#define ISCSI_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4
4199#define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5)
4200#define ISCSI_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5
4201#define ISCSI_TERM_VARS_TERM_ON_CHIP (0x1<<6)
4202#define ISCSI_TERM_VARS_TERM_ON_CHIP_SHIFT 6
4203#define ISCSI_TERM_VARS_RSRV (0x1<<7)
4204#define ISCSI_TERM_VARS_RSRV_SHIFT 7
4205};
4206
4207/*
4208 * iSCSI context region, used only in iSCSI
4209 */
4210struct tstorm_iscsi_st_context_section {
4211	u32 nalPayload;
4212	u32 b2nh;
4213#if defined(__BIG_ENDIAN)
4214	u16 rq_cons;
4215	u8 flags;
4216#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
4217#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
4218#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
4219#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
4220#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
4221#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
4222#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
4223#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
4224#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
4225#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
4226#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5)
4227#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5
4228#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7)
4229#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7
4230	u8 hdr_bytes_2_fetch;
4231#elif defined(__LITTLE_ENDIAN)
4232	u8 hdr_bytes_2_fetch;
4233	u8 flags;
4234#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN (0x1<<0)
4235#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_HDR_DIGEST_EN_SHIFT 0
4236#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN (0x1<<1)
4237#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DATA_DIGEST_EN_SHIFT 1
4238#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER (0x1<<2)
4239#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_PARTIAL_HEADER_SHIFT 2
4240#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE (0x1<<3)
4241#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_FULL_FEATURE_SHIFT 3
4242#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS (0x1<<4)
4243#define TSTORM_ISCSI_ST_CONTEXT_SECTION_B_DROP_ALL_PDUS_SHIFT 4
4244#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN (0x3<<5)
4245#define TSTORM_ISCSI_ST_CONTEXT_SECTION_NALLEN_SHIFT 5
4246#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0 (0x1<<7)
4247#define TSTORM_ISCSI_ST_CONTEXT_SECTION_RSRV0_SHIFT 7
4248	u16 rq_cons;
4249#endif
4250	struct regpair rq_db_phy_addr;
4251#if defined(__BIG_ENDIAN)
4252	struct iscsi_term_vars term_vars;
4253	u8 rsrv1;
4254	u16 iscsi_conn_id;
4255#elif defined(__LITTLE_ENDIAN)
4256	u16 iscsi_conn_id;
4257	u8 rsrv1;
4258	struct iscsi_term_vars term_vars;
4259#endif
4260	u32 process_nxt;
4261};
4262
4263/*
4264 * The iSCSI non-aggregative context of Tstorm
4265 */
4266struct tstorm_iscsi_st_context {
4267	struct tstorm_tcp_st_context_section tcp;
4268	struct tstorm_iscsi_st_context_section iscsi;
4269};
4270
4271/*
4272 * Ethernet context section, shared in TOE, RDMA and ISCSI
4273 */
4274struct xstorm_eth_context_section {
4275#if defined(__BIG_ENDIAN)
4276	u8 remote_addr_4;
4277	u8 remote_addr_5;
4278	u8 local_addr_0;
4279	u8 local_addr_1;
4280#elif defined(__LITTLE_ENDIAN)
4281	u8 local_addr_1;
4282	u8 local_addr_0;
4283	u8 remote_addr_5;
4284	u8 remote_addr_4;
4285#endif
4286#if defined(__BIG_ENDIAN)
4287	u8 remote_addr_0;
4288	u8 remote_addr_1;
4289	u8 remote_addr_2;
4290	u8 remote_addr_3;
4291#elif defined(__LITTLE_ENDIAN)
4292	u8 remote_addr_3;
4293	u8 remote_addr_2;
4294	u8 remote_addr_1;
4295	u8 remote_addr_0;
4296#endif
4297#if defined(__BIG_ENDIAN)
4298	u16 reserved_vlan_type;
4299	u16 params;
4300#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
4301#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
4302#define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
4303#define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
4304#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
4305#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
4306#elif defined(__LITTLE_ENDIAN)
4307	u16 params;
4308#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID (0xFFF<<0)
4309#define XSTORM_ETH_CONTEXT_SECTION_VLAN_ID_SHIFT 0
4310#define XSTORM_ETH_CONTEXT_SECTION_CFI (0x1<<12)
4311#define XSTORM_ETH_CONTEXT_SECTION_CFI_SHIFT 12
4312#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY (0x7<<13)
4313#define XSTORM_ETH_CONTEXT_SECTION_PRIORITY_SHIFT 13
4314	u16 reserved_vlan_type;
4315#endif
4316#if defined(__BIG_ENDIAN)
4317	u8 local_addr_2;
4318	u8 local_addr_3;
4319	u8 local_addr_4;
4320	u8 local_addr_5;
4321#elif defined(__LITTLE_ENDIAN)
4322	u8 local_addr_5;
4323	u8 local_addr_4;
4324	u8 local_addr_3;
4325	u8 local_addr_2;
4326#endif
4327};
4328
4329/*
4330 * IpV4 context section, shared in TOE, RDMA and ISCSI
4331 */
4332struct xstorm_ip_v4_context_section {
4333#if defined(__BIG_ENDIAN)
4334	u16 __pbf_hdr_cmd_rsvd_id;
4335	u16 __pbf_hdr_cmd_rsvd_flags_offset;
4336#elif defined(__LITTLE_ENDIAN)
4337	u16 __pbf_hdr_cmd_rsvd_flags_offset;
4338	u16 __pbf_hdr_cmd_rsvd_id;
4339#endif
4340#if defined(__BIG_ENDIAN)
4341	u8 __pbf_hdr_cmd_rsvd_ver_ihl;
4342	u8 tos;
4343	u16 __pbf_hdr_cmd_rsvd_length;
4344#elif defined(__LITTLE_ENDIAN)
4345	u16 __pbf_hdr_cmd_rsvd_length;
4346	u8 tos;
4347	u8 __pbf_hdr_cmd_rsvd_ver_ihl;
4348#endif
4349	u32 ip_local_addr;
4350#if defined(__BIG_ENDIAN)
4351	u8 ttl;
4352	u8 __pbf_hdr_cmd_rsvd_protocol;
4353	u16 __pbf_hdr_cmd_rsvd_csum;
4354#elif defined(__LITTLE_ENDIAN)
4355	u16 __pbf_hdr_cmd_rsvd_csum;
4356	u8 __pbf_hdr_cmd_rsvd_protocol;
4357	u8 ttl;
4358#endif
4359	u32 __pbf_hdr_cmd_rsvd_1;
4360	u32 ip_remote_addr;
4361};
4362
4363/*
4364 * context section, shared in TOE, RDMA and ISCSI
4365 */
4366struct xstorm_padded_ip_v4_context_section {
4367	struct xstorm_ip_v4_context_section ip_v4;
4368	u32 reserved1[4];
4369};
4370
4371/*
4372 * IpV6 context section, shared in TOE, RDMA and ISCSI
4373 */
4374struct xstorm_ip_v6_context_section {
4375#if defined(__BIG_ENDIAN)
4376	u16 pbf_hdr_cmd_rsvd_payload_len;
4377	u8 pbf_hdr_cmd_rsvd_nxt_hdr;
4378	u8 hop_limit;
4379#elif defined(__LITTLE_ENDIAN)
4380	u8 hop_limit;
4381	u8 pbf_hdr_cmd_rsvd_nxt_hdr;
4382	u16 pbf_hdr_cmd_rsvd_payload_len;
4383#endif
4384	u32 priority_flow_label;
4385#define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL (0xFFFFF<<0)
4386#define XSTORM_IP_V6_CONTEXT_SECTION_FLOW_LABEL_SHIFT 0
4387#define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS (0xFF<<20)
4388#define XSTORM_IP_V6_CONTEXT_SECTION_TRAFFIC_CLASS_SHIFT 20
4389#define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER (0xF<<28)
4390#define XSTORM_IP_V6_CONTEXT_SECTION_PBF_HDR_CMD_RSVD_VER_SHIFT 28
4391	u32 ip_local_addr_lo_hi;
4392	u32 ip_local_addr_lo_lo;
4393	u32 ip_local_addr_hi_hi;
4394	u32 ip_local_addr_hi_lo;
4395	u32 ip_remote_addr_lo_hi;
4396	u32 ip_remote_addr_lo_lo;
4397	u32 ip_remote_addr_hi_hi;
4398	u32 ip_remote_addr_hi_lo;
4399};
4400
4401union xstorm_ip_context_section_types {
4402	struct xstorm_padded_ip_v4_context_section padded_ip_v4;
4403	struct xstorm_ip_v6_context_section ip_v6;
4404};
4405
4406/*
4407 * TCP context section, shared in TOE, RDMA and ISCSI
4408 */
4409struct xstorm_tcp_context_section {
4410	u32 snd_max;
4411#if defined(__BIG_ENDIAN)
4412	u16 remote_port;
4413	u16 local_port;
4414#elif defined(__LITTLE_ENDIAN)
4415	u16 local_port;
4416	u16 remote_port;
4417#endif
4418#if defined(__BIG_ENDIAN)
4419	u8 original_nagle_1b;
4420	u8 ts_enabled;
4421	u16 tcp_params;
4422#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
4423#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
4424#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
4425#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
4426#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
4427#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
4428#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
4429#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
4430#define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11)
4431#define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11
4432#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
4433#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
4434#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
4435#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
4436#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
4437#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
4438#elif defined(__LITTLE_ENDIAN)
4439	u16 tcp_params;
4440#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE (0xFF<<0)
4441#define XSTORM_TCP_CONTEXT_SECTION_TOTAL_HEADER_SIZE_SHIFT 0
4442#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT (0x1<<8)
4443#define __XSTORM_TCP_CONTEXT_SECTION_ECT_BIT_SHIFT 8
4444#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED (0x1<<9)
4445#define __XSTORM_TCP_CONTEXT_SECTION_ECN_ENABLED_SHIFT 9
4446#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED (0x1<<10)
4447#define XSTORM_TCP_CONTEXT_SECTION_SACK_ENABLED_SHIFT 10
4448#define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV (0x1<<11)
4449#define XSTORM_TCP_CONTEXT_SECTION_SMALL_WIN_ADV_SHIFT 11
4450#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG (0x1<<12)
4451#define XSTORM_TCP_CONTEXT_SECTION_FIN_SENT_FLAG_SHIFT 12
4452#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED (0x1<<13)
4453#define XSTORM_TCP_CONTEXT_SECTION_WINDOW_SATURATED_SHIFT 13
4454#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER (0x3<<14)
4455#define XSTORM_TCP_CONTEXT_SECTION_SLOWPATH_QUEUES_FLUSH_COUNTER_SHIFT 14
4456	u8 ts_enabled;
4457	u8 original_nagle_1b;
4458#endif
4459#if defined(__BIG_ENDIAN)
4460	u16 pseudo_csum;
4461	u16 window_scaling_factor;
4462#elif defined(__LITTLE_ENDIAN)
4463	u16 window_scaling_factor;
4464	u16 pseudo_csum;
4465#endif
4466#if defined(__BIG_ENDIAN)
4467	u16 reserved2;
4468	u8 statistics_counter_id;
4469	u8 statistics_params;
4470#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
4471#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
4472#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
4473#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
4474#define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2)
4475#define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2
4476#elif defined(__LITTLE_ENDIAN)
4477	u8 statistics_params;
4478#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS (0x1<<0)
4479#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L2_STATSTICS_SHIFT 0
4480#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS (0x1<<1)
4481#define XSTORM_TCP_CONTEXT_SECTION_UPDATE_L4_STATSTICS_SHIFT 1
4482#define XSTORM_TCP_CONTEXT_SECTION_RESERVED (0x3F<<2)
4483#define XSTORM_TCP_CONTEXT_SECTION_RESERVED_SHIFT 2
4484	u8 statistics_counter_id;
4485	u16 reserved2;
4486#endif
4487	u32 ts_time_diff;
4488	u32 __next_timer_expir;
4489};
4490
4491/*
4492 * Common context section, shared in TOE, RDMA and ISCSI
4493 */
4494struct xstorm_common_context_section {
4495	struct xstorm_eth_context_section ethernet;
4496	union xstorm_ip_context_section_types ip_union;
4497	struct xstorm_tcp_context_section tcp;
4498#if defined(__BIG_ENDIAN)
4499	u8 __dcb_val;
4500	u8 flags;
4501#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0)
4502#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0
4503#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1)
4504#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1
4505#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4)
4506#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4
4507#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5)
4508#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5
4509	u8 reserved;
4510	u8 ip_version_1b;
4511#elif defined(__LITTLE_ENDIAN)
4512	u8 ip_version_1b;
4513	u8 reserved;
4514	u8 flags;
4515#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED (0x1<<0)
4516#define XSTORM_COMMON_CONTEXT_SECTION_PHYSQ_INITIALIZED_SHIFT 0
4517#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT (0x7<<1)
4518#define XSTORM_COMMON_CONTEXT_SECTION_PBF_PORT_SHIFT 1
4519#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE (0x1<<4)
4520#define XSTORM_COMMON_CONTEXT_SECTION_VLAN_MODE_SHIFT 4
4521#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY (0x7<<5)
4522#define XSTORM_COMMON_CONTEXT_SECTION_ORIGINAL_PRIORITY_SHIFT 5
4523	u8 __dcb_val;
4524#endif
4525};
4526
4527/*
4528 * Flags used in ISCSI context section
4529 */
4530struct xstorm_iscsi_context_flags {
4531	u8 flags;
4532#define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA (0x1<<0)
4533#define XSTORM_ISCSI_CONTEXT_FLAGS_B_IMMEDIATE_DATA_SHIFT 0
4534#define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T (0x1<<1)
4535#define XSTORM_ISCSI_CONTEXT_FLAGS_B_INITIAL_R2T_SHIFT 1
4536#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST (0x1<<2)
4537#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_HEADER_DIGEST_SHIFT 2
4538#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST (0x1<<3)
4539#define XSTORM_ISCSI_CONTEXT_FLAGS_B_EN_DATA_DIGEST_SHIFT 3
4540#define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN (0x1<<4)
4541#define XSTORM_ISCSI_CONTEXT_FLAGS_B_HQ_BD_WRITTEN_SHIFT 4
4542#define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ (0x1<<5)
4543#define XSTORM_ISCSI_CONTEXT_FLAGS_B_LAST_OP_SQ_SHIFT 5
4544#define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT (0x1<<6)
4545#define XSTORM_ISCSI_CONTEXT_FLAGS_B_UPDATE_SND_NXT_SHIFT 6
4546#define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4 (0x1<<7)
4547#define XSTORM_ISCSI_CONTEXT_FLAGS_RESERVED4_SHIFT 7
4548};
4549
4550struct iscsi_task_context_entry_x {
4551	u32 data_out_buffer_offset;
4552	u32 itt;
4553	u32 data_sn;
4554};
4555
4556struct iscsi_task_context_entry_xuc_x_write_only {
4557	u32 tx_r2t_sn;
4558};
4559
4560struct iscsi_task_context_entry_xuc_xu_write_both {
4561	u32 sgl_base_lo;
4562	u32 sgl_base_hi;
4563#if defined(__BIG_ENDIAN)
4564	u8 sgl_size;
4565	u8 sge_index;
4566	u16 sge_offset;
4567#elif defined(__LITTLE_ENDIAN)
4568	u16 sge_offset;
4569	u8 sge_index;
4570	u8 sgl_size;
4571#endif
4572};
4573
4574/*
4575 * iSCSI context section
4576 */
4577struct xstorm_iscsi_context_section {
4578	u32 first_burst_length;
4579	u32 max_send_pdu_length;
4580	struct regpair sq_pbl_base;
4581	struct regpair sq_curr_pbe;
4582	struct regpair hq_pbl_base;
4583	struct regpair hq_curr_pbe_base;
4584	struct regpair r2tq_pbl_base;
4585	struct regpair r2tq_curr_pbe_base;
4586	struct regpair task_pbl_base;
4587#if defined(__BIG_ENDIAN)
4588	u16 data_out_count;
4589	struct xstorm_iscsi_context_flags flags;
4590	u8 task_pbl_cache_idx;
4591#elif defined(__LITTLE_ENDIAN)
4592	u8 task_pbl_cache_idx;
4593	struct xstorm_iscsi_context_flags flags;
4594	u16 data_out_count;
4595#endif
4596	u32 seq_more_2_send;
4597	u32 pdu_more_2_send;
4598	struct iscsi_task_context_entry_x temp_tce_x;
4599	struct iscsi_task_context_entry_xuc_x_write_only temp_tce_x_wr;
4600	struct iscsi_task_context_entry_xuc_xu_write_both temp_tce_xu_wr;
4601	struct regpair lun;
4602	u32 exp_data_transfer_len_ttt;
4603	u32 pdu_data_2_rxmit;
4604	u32 rxmit_bytes_2_dr;
4605#if defined(__BIG_ENDIAN)
4606	u16 rxmit_sge_offset;
4607	u16 hq_rxmit_cons;
4608#elif defined(__LITTLE_ENDIAN)
4609	u16 hq_rxmit_cons;
4610	u16 rxmit_sge_offset;
4611#endif
4612#if defined(__BIG_ENDIAN)
4613	u16 r2tq_cons;
4614	u8 rxmit_flags;
4615#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
4616#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
4617#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
4618#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
4619#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
4620#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
4621#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
4622#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
4623#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
4624#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
4625#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
4626#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
4627#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
4628#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
4629	u8 rxmit_sge_idx;
4630#elif defined(__LITTLE_ENDIAN)
4631	u8 rxmit_sge_idx;
4632	u8 rxmit_flags;
4633#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD (0x1<<0)
4634#define XSTORM_ISCSI_CONTEXT_SECTION_B_NEW_HQ_BD_SHIFT 0
4635#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR (0x1<<1)
4636#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PDU_HDR_SHIFT 1
4637#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU (0x1<<2)
4638#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_END_PDU_SHIFT 2
4639#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR (0x1<<3)
4640#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_DR_SHIFT 3
4641#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR (0x1<<4)
4642#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_START_DR_SHIFT 4
4643#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING (0x3<<5)
4644#define XSTORM_ISCSI_CONTEXT_SECTION_B_RXMIT_PADDING_SHIFT 5
4645#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT (0x1<<7)
4646#define XSTORM_ISCSI_CONTEXT_SECTION_B_ISCSI_CONT_FAST_RXMIT_SHIFT 7
4647	u16 r2tq_cons;
4648#endif
4649	u32 hq_rxmit_tcp_seq;
4650};
4651
4652/*
4653 * Xstorm iSCSI Storm Context
4654 */
4655struct xstorm_iscsi_st_context {
4656	struct xstorm_common_context_section common;
4657	struct xstorm_iscsi_context_section iscsi;
4658};
4659
4660/*
4661 * Iscsi connection context
4662 */
4663struct iscsi_context {
4664	struct ustorm_iscsi_st_context ustorm_st_context;
4665	struct tstorm_iscsi_st_context tstorm_st_context;
4666	struct xstorm_iscsi_ag_context xstorm_ag_context;
4667	struct tstorm_iscsi_ag_context tstorm_ag_context;
4668	struct cstorm_iscsi_ag_context cstorm_ag_context;
4669	struct ustorm_iscsi_ag_context ustorm_ag_context;
4670	struct timers_block_context timers_context;
4671	struct regpair upb_context;
4672	struct xstorm_iscsi_st_context xstorm_st_context;
4673	struct regpair xpb_context;
4674	struct cstorm_iscsi_st_context cstorm_st_context;
4675};
4676
4677
4678/*
4679 * PDU header of an iSCSI DATA-OUT
4680 */
4681struct iscsi_data_pdu_hdr_little_endian {
4682#if defined(__BIG_ENDIAN)
4683	u8 opcode;
4684	u8 op_attr;
4685#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4686#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4687#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
4688#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
4689	u16 rsrv0;
4690#elif defined(__LITTLE_ENDIAN)
4691	u16 rsrv0;
4692	u8 op_attr;
4693#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4694#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4695#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG (0x1<<7)
4696#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_FINAL_FLAG_SHIFT 7
4697	u8 opcode;
4698#endif
4699	u32 data_fields;
4700#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4701#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4702#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4703#define ISCSI_DATA_PDU_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4704	struct regpair lun;
4705	u32 itt;
4706	u32 ttt;
4707	u32 rsrv2;
4708	u32 exp_stat_sn;
4709	u32 rsrv3;
4710	u32 data_sn;
4711	u32 buffer_offset;
4712	u32 rsrv4;
4713};
4714
4715
4716/*
4717 * PDU header of an iSCSI login request
4718 */
4719struct iscsi_login_req_hdr_little_endian {
4720#if defined(__BIG_ENDIAN)
4721	u8 opcode;
4722	u8 op_attr;
4723#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0)
4724#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0
4725#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2)
4726#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2
4727#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4)
4728#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4
4729#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4730#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4731#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7)
4732#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7
4733	u8 version_max;
4734	u8 version_min;
4735#elif defined(__LITTLE_ENDIAN)
4736	u8 version_min;
4737	u8 version_max;
4738	u8 op_attr;
4739#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG (0x3<<0)
4740#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_NSG_SHIFT 0
4741#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG (0x3<<2)
4742#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CSG_SHIFT 2
4743#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0 (0x3<<4)
4744#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_RSRV0_SHIFT 4
4745#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4746#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4747#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT (0x1<<7)
4748#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TRANSIT_SHIFT 7
4749	u8 opcode;
4750#endif
4751	u32 data_fields;
4752#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4753#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4754#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4755#define ISCSI_LOGIN_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4756	u32 isid_lo;
4757#if defined(__BIG_ENDIAN)
4758	u16 isid_hi;
4759	u16 tsih;
4760#elif defined(__LITTLE_ENDIAN)
4761	u16 tsih;
4762	u16 isid_hi;
4763#endif
4764	u32 itt;
4765#if defined(__BIG_ENDIAN)
4766	u16 cid;
4767	u16 rsrv1;
4768#elif defined(__LITTLE_ENDIAN)
4769	u16 rsrv1;
4770	u16 cid;
4771#endif
4772	u32 cmd_sn;
4773	u32 exp_stat_sn;
4774	u32 rsrv2[4];
4775};
4776
4777/*
4778 * PDU header of an iSCSI logout request
4779 */
4780struct iscsi_logout_req_hdr_little_endian {
4781#if defined(__BIG_ENDIAN)
4782	u8 opcode;
4783	u8 op_attr;
4784#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0)
4785#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0
4786#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4787#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4788	u16 rsrv0;
4789#elif defined(__LITTLE_ENDIAN)
4790	u16 rsrv0;
4791	u8 op_attr;
4792#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE (0x7F<<0)
4793#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_REASON_CODE_SHIFT 0
4794#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4795#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4796	u8 opcode;
4797#endif
4798	u32 data_fields;
4799#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4800#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4801#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4802#define ISCSI_LOGOUT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4803	u32 rsrv2[2];
4804	u32 itt;
4805#if defined(__BIG_ENDIAN)
4806	u16 cid;
4807	u16 rsrv1;
4808#elif defined(__LITTLE_ENDIAN)
4809	u16 rsrv1;
4810	u16 cid;
4811#endif
4812	u32 cmd_sn;
4813	u32 exp_stat_sn;
4814	u32 rsrv3[4];
4815};
4816
4817/*
4818 * PDU header of an iSCSI TMF request
4819 */
4820struct iscsi_tmf_req_hdr_little_endian {
4821#if defined(__BIG_ENDIAN)
4822	u8 opcode;
4823	u8 op_attr;
4824#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0)
4825#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0
4826#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4827#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4828	u16 rsrv0;
4829#elif defined(__LITTLE_ENDIAN)
4830	u16 rsrv0;
4831	u8 op_attr;
4832#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION (0x7F<<0)
4833#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_FUNCTION_SHIFT 0
4834#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1 (0x1<<7)
4835#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_RSRV1_1_SHIFT 7
4836	u8 opcode;
4837#endif
4838	u32 data_fields;
4839#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4840#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4841#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4842#define ISCSI_TMF_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4843	struct regpair lun;
4844	u32 itt;
4845	u32 referenced_task_tag;
4846	u32 cmd_sn;
4847	u32 exp_stat_sn;
4848	u32 ref_cmd_sn;
4849	u32 exp_data_sn;
4850	u32 rsrv2[2];
4851};
4852
4853/*
4854 * PDU header of an iSCSI Text request
4855 */
4856struct iscsi_text_req_hdr_little_endian {
4857#if defined(__BIG_ENDIAN)
4858	u8 opcode;
4859	u8 op_attr;
4860#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0)
4861#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4862#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4863#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4864#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7)
4865#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7
4866	u16 rsrv0;
4867#elif defined(__LITTLE_ENDIAN)
4868	u16 rsrv0;
4869	u8 op_attr;
4870#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1 (0x3F<<0)
4871#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4872#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG (0x1<<6)
4873#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_CONTINUE_FLG_SHIFT 6
4874#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL (0x1<<7)
4875#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_FINAL_SHIFT 7
4876	u8 opcode;
4877#endif
4878	u32 data_fields;
4879#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4880#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4881#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4882#define ISCSI_TEXT_REQ_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4883	struct regpair lun;
4884	u32 itt;
4885	u32 ttt;
4886	u32 cmd_sn;
4887	u32 exp_stat_sn;
4888	u32 rsrv3[4];
4889};
4890
4891/*
4892 * PDU header of an iSCSI Nop-Out
4893 */
4894struct iscsi_nop_out_hdr_little_endian {
4895#if defined(__BIG_ENDIAN)
4896	u8 opcode;
4897	u8 op_attr;
4898#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4899#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4900#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7)
4901#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7
4902	u16 rsrv0;
4903#elif defined(__LITTLE_ENDIAN)
4904	u16 rsrv0;
4905	u8 op_attr;
4906#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1 (0x7F<<0)
4907#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV1_SHIFT 0
4908#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1 (0x1<<7)
4909#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_RSRV2_1_SHIFT 7
4910	u8 opcode;
4911#endif
4912	u32 data_fields;
4913#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH (0xFFFFFF<<0)
4914#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_DATA_SEGMENT_LENGTH_SHIFT 0
4915#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH (0xFF<<24)
4916#define ISCSI_NOP_OUT_HDR_LITTLE_ENDIAN_TOTAL_AHS_LENGTH_SHIFT 24
4917	struct regpair lun;
4918	u32 itt;
4919	u32 ttt;
4920	u32 cmd_sn;
4921	u32 exp_stat_sn;
4922	u32 rsrv3[4];
4923};
4924
4925/*
4926 * iscsi pdu headers in little endian form.
4927 */
4928union iscsi_pdu_headers_little_endian {
4929	u32 fullHeaderSize[12];
4930	struct iscsi_cmd_pdu_hdr_little_endian command_pdu_hdr;
4931	struct iscsi_data_pdu_hdr_little_endian data_out_pdu_hdr;
4932	struct iscsi_login_req_hdr_little_endian login_req_pdu_hdr;
4933	struct iscsi_logout_req_hdr_little_endian logout_req_pdu_hdr;
4934	struct iscsi_tmf_req_hdr_little_endian tmf_req_pdu_hdr;
4935	struct iscsi_text_req_hdr_little_endian text_req_pdu_hdr;
4936	struct iscsi_nop_out_hdr_little_endian nop_out_pdu_hdr;
4937};
4938
4939struct iscsi_hq_bd {
4940	union iscsi_pdu_headers_little_endian pdu_header;
4941#if defined(__BIG_ENDIAN)
4942	u16 reserved1;
4943	u16 lcl_cmp_flg;
4944#elif defined(__LITTLE_ENDIAN)
4945	u16 lcl_cmp_flg;
4946	u16 reserved1;
4947#endif
4948	u32 sgl_base_lo;
4949	u32 sgl_base_hi;
4950#if defined(__BIG_ENDIAN)
4951	u8 sgl_size;
4952	u8 sge_index;
4953	u16 sge_offset;
4954#elif defined(__LITTLE_ENDIAN)
4955	u16 sge_offset;
4956	u8 sge_index;
4957	u8 sgl_size;
4958#endif
4959};
4960
4961
4962/*
4963 * CQE data for L2 OOO connection $$KEEP_ENDIANNESS$$
4964 */
4965struct iscsi_l2_ooo_data {
4966	__le32 iscsi_cid;
4967	u8 drop_isle;
4968	u8 drop_size;
4969	u8 ooo_opcode;
4970	u8 ooo_isle;
4971	u8 reserved[8];
4972};
4973
4974
4975
4976
4977
4978
4979struct iscsi_task_context_entry_xuc_c_write_only {
4980	u32 total_data_acked;
4981};
4982
4983struct iscsi_task_context_r2t_table_entry {
4984	u32 ttt;
4985	u32 desired_data_len;
4986};
4987
4988struct iscsi_task_context_entry_xuc_u_write_only {
4989	u32 exp_r2t_sn;
4990	struct iscsi_task_context_r2t_table_entry r2t_table[4];
4991#if defined(__BIG_ENDIAN)
4992	u16 data_in_count;
4993	u8 cq_id;
4994	u8 valid_1b;
4995#elif defined(__LITTLE_ENDIAN)
4996	u8 valid_1b;
4997	u8 cq_id;
4998	u16 data_in_count;
4999#endif
5000};
5001
5002struct iscsi_task_context_entry_xuc {
5003	struct iscsi_task_context_entry_xuc_c_write_only write_c;
5004	u32 exp_data_transfer_len;
5005	struct iscsi_task_context_entry_xuc_x_write_only write_x;
5006	u32 lun_lo;
5007	struct iscsi_task_context_entry_xuc_xu_write_both write_xu;
5008	u32 lun_hi;
5009	struct iscsi_task_context_entry_xuc_u_write_only write_u;
5010};
5011
5012struct iscsi_task_context_entry_u {
5013	u32 exp_r2t_buff_offset;
5014	u32 rem_rcv_len;
5015	u32 exp_data_sn;
5016};
5017
5018struct iscsi_task_context_entry {
5019	struct iscsi_task_context_entry_x tce_x;
5020#if defined(__BIG_ENDIAN)
5021	u16 data_out_count;
5022	u16 rsrv0;
5023#elif defined(__LITTLE_ENDIAN)
5024	u16 rsrv0;
5025	u16 data_out_count;
5026#endif
5027	struct iscsi_task_context_entry_xuc tce_xuc;
5028	struct iscsi_task_context_entry_u tce_u;
5029	u32 rsrv1[7];
5030};
5031
5032
5033
5034
5035
5036
5037
5038
5039struct iscsi_task_context_entry_xuc_x_init_only {
5040	struct regpair lun;
5041	u32 exp_data_transfer_len;
5042};
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060/*
5061 * ipv6 structure
5062 */
5063struct ip_v6_addr {
5064	u32 ip_addr_lo_lo;
5065	u32 ip_addr_lo_hi;
5066	u32 ip_addr_hi_lo;
5067	u32 ip_addr_hi_hi;
5068};
5069
5070
5071
5072/*
5073 * l5cm- connection identification params
5074 */
5075struct l5cm_conn_addr_params {
5076	u32 pmtu;
5077#if defined(__BIG_ENDIAN)
5078	u8 remote_addr_3;
5079	u8 remote_addr_2;
5080	u8 remote_addr_1;
5081	u8 remote_addr_0;
5082#elif defined(__LITTLE_ENDIAN)
5083	u8 remote_addr_0;
5084	u8 remote_addr_1;
5085	u8 remote_addr_2;
5086	u8 remote_addr_3;
5087#endif
5088#if defined(__BIG_ENDIAN)
5089	u16 params;
5090#define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
5091#define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
5092#define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
5093#define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
5094	u8 remote_addr_5;
5095	u8 remote_addr_4;
5096#elif defined(__LITTLE_ENDIAN)
5097	u8 remote_addr_4;
5098	u8 remote_addr_5;
5099	u16 params;
5100#define L5CM_CONN_ADDR_PARAMS_IP_VERSION (0x1<<0)
5101#define L5CM_CONN_ADDR_PARAMS_IP_VERSION_SHIFT 0
5102#define L5CM_CONN_ADDR_PARAMS_RSRV (0x7FFF<<1)
5103#define L5CM_CONN_ADDR_PARAMS_RSRV_SHIFT 1
5104#endif
5105	struct ip_v6_addr local_ip_addr;
5106	struct ip_v6_addr remote_ip_addr;
5107	u32 ipv6_flow_label_20b;
5108	u32 reserved1;
5109#if defined(__BIG_ENDIAN)
5110	u16 remote_tcp_port;
5111	u16 local_tcp_port;
5112#elif defined(__LITTLE_ENDIAN)
5113	u16 local_tcp_port;
5114	u16 remote_tcp_port;
5115#endif
5116};
5117
5118/*
5119 * l5cm-xstorm connection buffer
5120 */
5121struct l5cm_xstorm_conn_buffer {
5122#if defined(__BIG_ENDIAN)
5123	u16 rsrv1;
5124	u16 params;
5125#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
5126#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
5127#define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5128#define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
5129#elif defined(__LITTLE_ENDIAN)
5130	u16 params;
5131#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE (0x1<<0)
5132#define L5CM_XSTORM_CONN_BUFFER_NAGLE_ENABLE_SHIFT 0
5133#define L5CM_XSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5134#define L5CM_XSTORM_CONN_BUFFER_RSRV_SHIFT 1
5135	u16 rsrv1;
5136#endif
5137#if defined(__BIG_ENDIAN)
5138	u16 mss;
5139	u16 pseudo_header_checksum;
5140#elif defined(__LITTLE_ENDIAN)
5141	u16 pseudo_header_checksum;
5142	u16 mss;
5143#endif
5144	u32 rcv_buf;
5145	u32 rsrv2;
5146	struct regpair context_addr;
5147};
5148
5149/*
5150 * l5cm-tstorm connection buffer
5151 */
5152struct l5cm_tstorm_conn_buffer {
5153	u32 rsrv1[2];
5154#if defined(__BIG_ENDIAN)
5155	u16 params;
5156#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
5157#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
5158#define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5159#define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
5160	u8 ka_max_probe_count;
5161	u8 ka_enable;
5162#elif defined(__LITTLE_ENDIAN)
5163	u8 ka_enable;
5164	u8 ka_max_probe_count;
5165	u16 params;
5166#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE (0x1<<0)
5167#define L5CM_TSTORM_CONN_BUFFER_DELAYED_ACK_ENABLE_SHIFT 0
5168#define L5CM_TSTORM_CONN_BUFFER_RSRV (0x7FFF<<1)
5169#define L5CM_TSTORM_CONN_BUFFER_RSRV_SHIFT 1
5170#endif
5171	u32 ka_timeout;
5172	u32 ka_interval;
5173	u32 max_rt_time;
5174};
5175
5176/*
5177 * l5cm connection buffer for active side
5178 */
5179struct l5cm_active_conn_buffer {
5180	struct l5cm_conn_addr_params conn_addr_buf;
5181	struct l5cm_xstorm_conn_buffer xstorm_conn_buffer;
5182	struct l5cm_tstorm_conn_buffer tstorm_conn_buffer;
5183};
5184
5185
5186
5187/*
5188 * The l5cm opaque buffer passed in add new connection ramrod passive side
5189 */
5190struct l5cm_hash_input_string {
5191	u32 __opaque1;
5192#if defined(__BIG_ENDIAN)
5193	u16 __opaque3;
5194	u16 __opaque2;
5195#elif defined(__LITTLE_ENDIAN)
5196	u16 __opaque2;
5197	u16 __opaque3;
5198#endif
5199	struct ip_v6_addr __opaque4;
5200	struct ip_v6_addr __opaque5;
5201	u32 __opaque6;
5202	u32 __opaque7[5];
5203};
5204
5205
5206/*
5207 * syn cookie component
5208 */
5209struct l5cm_syn_cookie_comp {
5210	u32 __opaque;
5211};
5212
5213/*
5214 * data related to listeners of a TCP port
5215 */
5216struct l5cm_port_listener_data {
5217	u8 params;
5218#define L5CM_PORT_LISTENER_DATA_ENABLE (0x1<<0)
5219#define L5CM_PORT_LISTENER_DATA_ENABLE_SHIFT 0
5220#define L5CM_PORT_LISTENER_DATA_IP_INDEX (0xF<<1)
5221#define L5CM_PORT_LISTENER_DATA_IP_INDEX_SHIFT 1
5222#define L5CM_PORT_LISTENER_DATA_NET_FILTER (0x1<<5)
5223#define L5CM_PORT_LISTENER_DATA_NET_FILTER_SHIFT 5
5224#define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE (0x1<<6)
5225#define L5CM_PORT_LISTENER_DATA_DEFFERED_MODE_SHIFT 6
5226#define L5CM_PORT_LISTENER_DATA_MPA_MODE (0x1<<7)
5227#define L5CM_PORT_LISTENER_DATA_MPA_MODE_SHIFT 7
5228};
5229
5230/*
5231 * Opaque structure passed from U to X when final ack arrives
5232 */
5233struct l5cm_opaque_buf {
5234	u32 __opaque1;
5235	u32 __opaque2;
5236	u32 __opaque3;
5237	u32 __opaque4;
5238	struct l5cm_syn_cookie_comp __opaque5;
5239#if defined(__BIG_ENDIAN)
5240	u16 rsrv2;
5241	u8 rsrv;
5242	struct l5cm_port_listener_data __opaque6;
5243#elif defined(__LITTLE_ENDIAN)
5244	struct l5cm_port_listener_data __opaque6;
5245	u8 rsrv;
5246	u16 rsrv2;
5247#endif
5248};
5249
5250
5251/*
5252 * l5cm slow path element
5253 */
5254struct l5cm_packet_size {
5255	u32 size;
5256	u32 rsrv;
5257};
5258
5259
5260/*
5261 * The final-ack union structure in PCS entry after final ack arrived
5262 */
5263struct l5cm_pcse_ack {
5264	struct l5cm_xstorm_conn_buffer tx_socket_params;
5265	struct l5cm_opaque_buf opaque_buf;
5266	struct l5cm_tstorm_conn_buffer rx_socket_params;
5267};
5268
5269
5270/*
5271 * The syn union structure in PCS entry after syn arrived
5272 */
5273struct l5cm_pcse_syn {
5274	struct l5cm_opaque_buf opaque_buf;
5275	u32 rsrv[12];
5276};
5277
5278
5279/*
5280 * pcs entry data for passive connections
5281 */
5282struct l5cm_pcs_attributes {
5283#if defined(__BIG_ENDIAN)
5284	u16 pcs_id;
5285	u8 status;
5286	u8 flags;
5287#define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0)
5288#define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0
5289#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1)
5290#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1
5291#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2)
5292#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2
5293#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3)
5294#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3
5295#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4)
5296#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4
5297#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5)
5298#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5
5299#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6)
5300#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6
5301#define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7)
5302#define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7
5303#elif defined(__LITTLE_ENDIAN)
5304	u8 flags;
5305#define L5CM_PCS_ATTRIBUTES_NET_FILTER (0x1<<0)
5306#define L5CM_PCS_ATTRIBUTES_NET_FILTER_SHIFT 0
5307#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH (0x1<<1)
5308#define L5CM_PCS_ATTRIBUTES_CALCULATE_HASH_SHIFT 1
5309#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT (0x1<<2)
5310#define L5CM_PCS_ATTRIBUTES_COMPARE_HASH_RESULT_SHIFT 2
5311#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT (0x1<<3)
5312#define L5CM_PCS_ATTRIBUTES_QUERY_ULP_ACCEPT_SHIFT 3
5313#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC (0x1<<4)
5314#define L5CM_PCS_ATTRIBUTES_FIND_DEST_MAC_SHIFT 4
5315#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD (0x1<<5)
5316#define L5CM_PCS_ATTRIBUTES_L4_OFFLOAD_SHIFT 5
5317#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET (0x1<<6)
5318#define L5CM_PCS_ATTRIBUTES_FORWARD_PACKET_SHIFT 6
5319#define L5CM_PCS_ATTRIBUTES_RSRV (0x1<<7)
5320#define L5CM_PCS_ATTRIBUTES_RSRV_SHIFT 7
5321	u8 status;
5322	u16 pcs_id;
5323#endif
5324};
5325
5326
5327union l5cm_seg_params {
5328	struct l5cm_pcse_syn syn_seg_params;
5329	struct l5cm_pcse_ack ack_seg_params;
5330};
5331
5332/*
5333 * pcs entry data for passive connections
5334 */
5335struct l5cm_pcs_hdr {
5336	struct l5cm_hash_input_string hash_input_string;
5337	struct l5cm_conn_addr_params conn_addr_buf;
5338	u32 cid;
5339	u32 hash_result;
5340	union l5cm_seg_params seg_params;
5341	struct l5cm_pcs_attributes att;
5342#if defined(__BIG_ENDIAN)
5343	u16 rsrv;
5344	u16 rx_seg_size;
5345#elif defined(__LITTLE_ENDIAN)
5346	u16 rx_seg_size;
5347	u16 rsrv;
5348#endif
5349};
5350
5351/*
5352 * pcs entry for passive connections
5353 */
5354struct l5cm_pcs_entry {
5355	struct l5cm_pcs_hdr hdr;
5356	u8 rx_segment[1516];
5357};
5358
5359
5360
5361
5362/*
5363 * l5cm connection parameters
5364 */
5365union l5cm_reduce_param_union {
5366	u32 opaque1;
5367	u32 opaque2;
5368};
5369
5370/*
5371 * l5cm connection parameters
5372 */
5373struct l5cm_reduce_conn {
5374	union l5cm_reduce_param_union opaque1;
5375	u32 opaque2;
5376};
5377
5378/*
5379 * l5cm slow path element
5380 */
5381union l5cm_specific_data {
5382	u8 protocol_data[8];
5383	struct regpair phy_address;
5384	struct l5cm_packet_size packet_size;
5385	struct l5cm_reduce_conn reduced_conn;
5386};
5387
5388/*
5389 * l5 slow path element
5390 */
5391struct l5cm_spe {
5392	struct spe_hdr hdr;
5393	union l5cm_specific_data data;
5394};
5395
5396
5397
5398
5399/*
5400 * Termination variables
5401 */
5402struct l5cm_term_vars {
5403	u8 BitMap;
5404#define L5CM_TERM_VARS_TCP_STATE (0xF<<0)
5405#define L5CM_TERM_VARS_TCP_STATE_SHIFT 0
5406#define L5CM_TERM_VARS_FIN_RECEIVED_SBIT (0x1<<4)
5407#define L5CM_TERM_VARS_FIN_RECEIVED_SBIT_SHIFT 4
5408#define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT (0x1<<5)
5409#define L5CM_TERM_VARS_ACK_ON_FIN_RECEIVED_SBIT_SHIFT 5
5410#define L5CM_TERM_VARS_TERM_ON_CHIP (0x1<<6)
5411#define L5CM_TERM_VARS_TERM_ON_CHIP_SHIFT 6
5412#define L5CM_TERM_VARS_RSRV (0x1<<7)
5413#define L5CM_TERM_VARS_RSRV_SHIFT 7
5414};
5415
5416
5417
5418
5419/*
5420 * Tstorm Tcp flags
5421 */
5422struct tstorm_l5cm_tcp_flags {
5423	u16 flags;
5424#define TSTORM_L5CM_TCP_FLAGS_VLAN_ID (0xFFF<<0)
5425#define TSTORM_L5CM_TCP_FLAGS_VLAN_ID_SHIFT 0
5426#define TSTORM_L5CM_TCP_FLAGS_RSRV0 (0x1<<12)
5427#define TSTORM_L5CM_TCP_FLAGS_RSRV0_SHIFT 12
5428#define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<13)
5429#define TSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 13
5430#define TSTORM_L5CM_TCP_FLAGS_RSRV1 (0x3<<14)
5431#define TSTORM_L5CM_TCP_FLAGS_RSRV1_SHIFT 14
5432};
5433
5434
5435/*
5436 * Xstorm Tcp flags
5437 */
5438struct xstorm_l5cm_tcp_flags {
5439	u8 flags;
5440#define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED (0x1<<0)
5441#define XSTORM_L5CM_TCP_FLAGS_ENC_ENABLED_SHIFT 0
5442#define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED (0x1<<1)
5443#define XSTORM_L5CM_TCP_FLAGS_TS_ENABLED_SHIFT 1
5444#define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN (0x1<<2)
5445#define XSTORM_L5CM_TCP_FLAGS_WND_SCL_EN_SHIFT 2
5446#define XSTORM_L5CM_TCP_FLAGS_RSRV (0x1F<<3)
5447#define XSTORM_L5CM_TCP_FLAGS_RSRV_SHIFT 3
5448};
5449
5450
5451
5452/*
5453 * Out-of-order states
5454 */
5455enum tcp_ooo_event {
5456	TCP_EVENT_ADD_PEN = 0,
5457	TCP_EVENT_ADD_NEW_ISLE = 1,
5458	TCP_EVENT_ADD_ISLE_RIGHT = 2,
5459	TCP_EVENT_ADD_ISLE_LEFT = 3,
5460	TCP_EVENT_JOIN = 4,
5461	TCP_EVENT_NOP = 5,
5462	MAX_TCP_OOO_EVENT
5463};
5464
5465
5466/*
5467 * OOO support modes
5468 */
5469enum tcp_tstorm_ooo {
5470	TCP_TSTORM_OOO_DROP_AND_PROC_ACK = 0,
5471	TCP_TSTORM_OOO_SEND_PURE_ACK = 1,
5472	TCP_TSTORM_OOO_SUPPORTED = 2,
5473	MAX_TCP_TSTORM_OOO
5474};
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484#endif /* __5710_HSI_CNIC_LE__ */