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