9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * CDDL HEADER START
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The contents of this file are subject to the terms of the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Common Development and Distribution License (the "License").
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * You may not use this file except in compliance with the License.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * or http://www.opensolaris.org/os/licensing.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * See the License for the specific language governing permissions
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and limitations under the License.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * When distributing Covered Code, include this CDDL HEADER in each
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * If applicable, add the following below this CDDL HEADER, with the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * fields enclosed by brackets "[]" replaced with your own identifying
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information: Portions Copyright [yyyy] [name of copyright owner]
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * CDDL HEADER END
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifndef _SYS_IB_ADAPTERS_HERMON_HW_H
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define _SYS_IB_ADAPTERS_HERMON_HW_H
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw.h
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Contains all the structure definitions and #defines for all Hermon
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hardware resources and registers (as defined by the Hermon register
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * specification). Wherever possible, the names in the Hermon spec
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * have been preserved in the structure and field names below.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#include <sys/types.h>
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#include <sys/conf.h>
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#include <sys/ddi.h>
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#include <sys/sunddi.h>
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef __cplusplus
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern "C" {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * PCI IDs for supported chipsets
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define PCI_VENID_MLX 0x15b3
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define PCI_DEVID_HERMON_SDR 0x6340 /* Mellanox MT25208-SDR PCIe Gen1 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define PCI_DEVID_HERMON_DDR 0x634A /* Mellanox MT25208-DDR PCIe Gen1 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define PCI_DEVID_HERMON_DDRG2 0x6732 /* Mellanox MT25208-DDR PCIe Gen2 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define PCI_DEVID_HERMON_QDRG2 0x673C /* Mellanox MT25208-QDR PCIe Gen2 */
13cc0a0b8d667c14344b4ff49cc47350cd9ef182Bill Taylor#define PCI_DEVID_HERMON_QDRG2V 0x6746 /* Mellanox MT25208-QDR PCIe Gen2 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define PCI_DEVID_HERMON_MAINT 0x0191 /* Maintenance/Mem Controller Mode */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Native page size of the adapter
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PAGESIZE 0x1000 /* 4Kb */
c7facc54c4abed9e554ff80225311e6b7048d3c9Bill Taylor#define HERMON_PAGEOFFSET (HERMON_PAGESIZE - 1)
c7facc54c4abed9e554ff80225311e6b7048d3c9Bill Taylor#define HERMON_PAGEMASK (~HERMON_PAGEOFFSET)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PAGESHIFT 0xC /* 12 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Offsets into the CMD BAR (BAR 0) for many of the more interesting hardware
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * registers. These registers include the HCR (more below), and the software
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * reset register (SW_RESET).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CMD_HCR_OFFSET 0x80680 /* PRM */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CMD_SW_RESET_OFFSET 0xF0010 /* PRM */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CMD_SW_SEMAPHORE_OFFSET 0xF03FC /* PRM */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CMD_OFFSET_MASK 0xFFFFF /* per MLX instruction */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Ownership flags used to define hardware or software ownership for
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * various Hermon resources
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_OWNER 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_SW_OWNER 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Determines whether or not virtual-to-physical address translation is
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * required. Several of the Hermon hardware structures can be optionally
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * accessed by Hermon without going through the TPT address translation
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * tables.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_VA2PA_XLAT_ENABLED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_VA2PA_XLAT_DISABLED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HCA Command Register (HCR)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The HCR command interface provides privileged access to the HCA in
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * order to query, configure and modify HCA execution. It is the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * primary mechanism through which mailboxes may be posted to Hermon
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * firmware. To use this interface software fills the HCR with pointers
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * to input and output mailboxes. Some commands support immediate
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * parameters, however, and for these commands the HCR will contain the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * input or output parameters. Command execution completion can be
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * detected either by the software polling the HCR or by waiting for a
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * command completion event.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_hcr_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t in_param0;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t in_param1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t input_modifier;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t out_param0;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t out_param1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t token;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmd;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_TOKEN_MASK 0xFFFF0000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_TOKEN_SHIFT 16
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_STATUS_MASK 0xFF000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_GO_MASK 0x00800000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_E_MASK 0x00400000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_T_MASK 0x00200000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_OPMOD_MASK 0x0000F000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_OPCODE_MASK 0x00000FFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_STATUS_SHFT 24
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_GO_SHFT 23
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_E_SHFT 22
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_T_SHFT 21
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HCR_CMD_OPMOD_SHFT 12
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * Arbel/tavor "QUERY_DEV_LIM" == Hermon "QUERY_DEV_CAP" - Same hex code
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * same function as tavor/arbel QUERY_DEV_LIM, just renamed (whatever).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The QUERY_DEV_LIM command returns the device limits and capabilities
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * supported by the Hermon device. This command must be run before
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * running the INIT_HCA command (below) in order to determine the maximum
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * capabilities of the device and which optional features are supported.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_querydevlim_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_scqs :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_scqs :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_srq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_srq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_qp :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_qp :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_qp_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_srq_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_eq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_eq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_dmpt :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_eq_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_cq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_cq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_cq_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_mtt :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_dmpt :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_mrw_sz :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_mtt :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_ra_glob :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_rss_tbl_sz :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rss_toep :1; /* rss toeplitz hashing */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rss_xor :1; /* rss xor hashing */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_gso_sz :5; /* Lge Send Offload */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11; /* new w/ 0.35, RSS info */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_ra_res_qp :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_ra_req_qp :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_ports :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :12;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ca_ack_delay :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cqmep :3; /* cq moderation policies */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mod_wr_srq :1; /* resize SRQ supported */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :31;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t stat_rate_sup :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_msg :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rc :1; /* 0x44 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t uc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ud :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t xrc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rcm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fcoib :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ipoib_cksm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pkey_v :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qkey_v :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vmm :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dpdp :1; /* dual port diff protocol */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t raw_etype :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t raw_ipv4 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t blh :1; /* big LSO header, bit in WQE */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mem_win :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t apm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atomic :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t raw_multi :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t avp :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ud_multi :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t udm_ipv4 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dif :1; /* DIF supported */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pg_on_demand :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t router :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t l2mc :1; /* lev 2 enet multicast */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ud_swp :1; /* sw parse for UD xport */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ipv6_ex :1; /* offload w/ IPV6 ext hdrs */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t lle :1; /* low latency enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe_t11 :1; /* fcoenet T11 frame support */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0x40 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_uc_lb :1; /* enet unicast loopback */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hdr_split :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hdr_lookahead :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rss_udp :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_bf_page :6; /* 0x4c */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_bf_req_ppg :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_bf_reg_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blu_flm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_pg_sz :8; /* 0x48 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_uar_sz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_uar :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_desc_sz_rq :16; /* 0x54 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_sg_rq :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_desc_sz_sq :16; /* 0x50 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_sg_sq :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd_fcoib; /* 0x5C */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1; /* 0x58 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fexch_base_mpt :7; /* FC exch base mpt num */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcp_ud_base_qp :16; /* RC UD base qp num */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fexch_base_qp :8; /* FC exch base qp num */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_xrcd :5; /* 0x64 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t num_rsvd_xrcds :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_pd :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_pd :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_mcg :8; /* 0x60 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_mcg :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_qp_mcg :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv2[6];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t altc_entry_sz :16; /* 0x84 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t aux_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qpc_entry_sz :16; /* 0x80 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rdmardc_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cmpt_entry_sz :16; /* 0x8C */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cqc_entry_sz :16; /* 0x88 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eqc_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t bmme :1; /* 0x94 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t win_type :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mps :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bl :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t zb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t local_inv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t remote_inv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t win_type2 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reserved_lkey :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fast_reg_wr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmpt_entry_sz :16; /* 0x90 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsv_lkey;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0xA0 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t max_icm_size;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv3[22];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_querydevlim_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_srq_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_qp_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_qp :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_qp :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_srq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_srq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_scqs :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_scqs :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_cq_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_cq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_cq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_eq_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_dmpt :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_eq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_eq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_mtt :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_mrw_sz :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rsvd_dmpt :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_mtt :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_ra_req_qp :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_ra_res_qp :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11; /* new w/ 0.35, RSS info */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_gso_sz :5; /* Lge Send Offload */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rss_xor :1; /* rss xor hashing */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rss_toep :1; /* rss toeplitz hashing */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_rss_tbl_sz :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_ra_glob :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :31;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mod_wr_srq :1; /* resize SRQ supported */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cqmep :3; /* cq moderation policies */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ca_ack_delay :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :12;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_ports :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_msg :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t stat_rate_sup :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16; /* 0x40 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rss_udp :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hdr_lookahead :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hdr_split :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_uc_lb :1; /* enet unicast loopback */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0x44 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe_t11 :1; /* fcoenet T11 frame support */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t lle :1; /* low latency enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ipv6_ex :1; /* offload w/ IPV6 ext hdrs */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ud_swp :1; /* sw parse for UD xport */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t l2mc :1; /* lev 2 enet multicast */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t router :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pg_on_demand :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dif :1; /* DIF supported */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t udm_ipv4 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ud_multi :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t avp :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t raw_multi :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atomic :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t apm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mem_win :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t blh :1; /* big LSO header, bit in WQE */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t raw_ipv4 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t raw_etype :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dpdp :1; /* dual port diff protocol */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vmm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qkey_v :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pkey_v :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ipoib_cksm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fcoib :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rcm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t xrc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ud :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t uc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t num_rsvd_uar :4; /* 0x48 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_uar_sz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_pg_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t blu_flm :1; /* 0x4c */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_bf_reg_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_bf_req_ppg :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_bf_page :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8; /* 0x50 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_sg_sq :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_desc_sz_sq :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8; /* 0x54 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_sg_rq :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_desc_sz_rq :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0x58 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fexch_base_qp :8; /* FC exch base qp num */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcp_ud_base_qp :16; /* RC UD base qp num */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fexch_base_mpt :7; /* FC exch base mpt num */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd_fcoib; /* 0x5C */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8; /* 0x60 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_qp_mcg :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rsvd_mcg :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_mcg :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t num_rsvd_pd :4; /* 0x64 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_pd :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t num_rsvd_xrcds :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_xrcd :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv2[6];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rdmardc_entry_sz :16; /* 0x80 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpc_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t aux_entry_sz :16; /* 0x84 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t altc_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eqc_entry_sz :16; /* 0x88 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqc_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t srq_entry_sz :16; /* 0x8C */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmpt_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mtt_entry_sz :16; /* 0x90 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dmpt_entry_sz :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :20; /* 0x94 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fast_reg_wr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reserved_lkey :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t win_type2 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t remote_inv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t local_inv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t zb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bl :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mps :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t win_type :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bmme :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsv_lkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t max_icm_size;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0xA0 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv3[22];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon "QUERY_FW" command
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The QUERY_FW command retrieves the firmware revision and the Command
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Interface revision. The command also returns the HCA attached local
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * memory area (DDR) which is used by the firmware. Below we also
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * include some defines which are used to enforce a minimum firmware
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * version check (see hermon_fw_version_check() for more details).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_queryfw_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_rev_minor :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_rev_subminor :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_rev_major :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_pages :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_cmd :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :23;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbg_trace :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmd_intf_rev :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_day :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_month :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_year :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ccq :1; /* currently not def'd */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_sec :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_min :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_hour :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t clr_intr_offs;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t clr_int_bar :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t error_buf_addr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t err_buf_bar :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t error_buf_sz;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t vf_com_ch_addr;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :30;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vf_com_ch_bar :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv2[44];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_queryfw_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_pages :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_rev_major :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_rev_subminor :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_rev_minor :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmd_intf_rev :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbg_trace :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :23;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_cmd :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_hour :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_min :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_sec :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ccq :1; /* currently not def'd */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_year :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fw_month :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fw_day :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t clr_intr_offs;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t clr_int_bar :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t error_buf_addr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t error_buf_sz;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t err_buf_bar :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t vf_com_ch_addr;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vf_com_ch_bar :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :30;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv2[44];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor * 2.6.000 is critical for some performance features, e.g., Reserved_Lkey,
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor * and 2.7.000 is needed for FRWR and FCoIB. Requiring 2.6.000 now so that
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor * existing customers get the performance, but are not required to upgrade
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor * to the latest. Less than 2.6.000 will cause the driver to attach in
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor * maintenance mode, and throw an FMA event about upgrading the firmware.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor#define HERMON_FW_VER_MAJOR 0x0002
5a047af5b368c7ae4914da7d7ad5d0bb7797464cBill Taylor#define HERMON_FW_VER_MINOR 0x0006
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FW_VER_SUBMINOR 0x0000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon "QUERY_ADAPTER" command
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The QUERY_ADAPTER command retrieves adapter specific parameters. The
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * command also retrieves the PCI(X) interrupt pin routing for each of
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the INTx# pins supported by the device. This information is used by
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the driver during interrupt processing in order to clear the appropriate
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * interrupt bit.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_queryadapter_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t inta_pin :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vsd_vend_id :16; /* added v35 hermon */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vsd[52];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t psid[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_queryadapter_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t inta_pin :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vsd_vend_id :16; /* added v35 hermon */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vsd[52];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t psid[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_REV_A0 0xA0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_REV_A1 0xA1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Virtual physical mapping structure for: MAP_FA, MAP_ICM_AUX, and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * MAP_ICM commands.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_vpm_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :12;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vaddr_l :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2sz :5; /* in 4KB pages */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t paddr_l :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t paddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_vpm_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vaddr_h;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vaddr_l :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :12;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t paddr_h;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t paddr_l :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2sz :5; /* in 4KB pages */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon "INIT_HCA" and "QUERY_HCA" commands
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The INIT_HCA command configures all HCA resources in HCA attached local
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * memory and some system relevant information. The same mailbox output
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * format is used by the QUERY_HCA command. All parameters, which are
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * specifically the output of the QUERY_HCA command are marked as
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "QUERY_HCA only". These parameters are not configurable through the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * INIT_HCA command, but can be retrieved as read-only through the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * QUERY_HCA command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Below we first define several structures which help make up the whole
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * of the INIT_HCA/QUERY_HCA command. These are:
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_qp_ee_cq_eq_rdb_t for "QPC/EEC/CQC/EQC/RDB Parameters",
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_udav_mem_param_t for "Memory Access Parameters for UDAV Table",
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_multicast_param_t for "Multicast Support Parameters",
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_tpt_param_t for "Translation and Protection Table Parameters",
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and hermon_uar_param_t for Hermon "UAR Parameters".
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * need to consider removing any ref to "ee", hermon doesn't support
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * ee/rd stuff, and they've taken away the pretense
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_qp_ee_cq_eq_rdb_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_qp :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_srq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srqc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srqc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_cq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv2[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t altc_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv3[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t auxc_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv4[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_eq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eqc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eqc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsv5[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_rdmardc :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rdmardc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rdmardc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv6[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_qp_ee_cq_eq_rdb_t;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_qp_ee_cq_eq_rdb_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_qp :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srqc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srqc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_srq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_cq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv2[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t altc_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv3[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t auxc_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv4[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eqc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eqc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_eq :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsv5[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rdmardc_baseaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rdmardc_baseaddr_l :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_num_rdmardc :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv6[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_qp_ee_cq_eq_rdb_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_multicast_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mc_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_mc_tbl_hash_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_mc_tbl_ent :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_mc_tbl_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :19;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mc_hash_fn :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_multicast_param_t;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_multicast_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mc_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_mc_tbl_ent :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :27;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_mc_tbl_hash_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mc_hash_fn :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :19;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_mc_tbl_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_multicast_param_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MCG_DEFAULT_HASH_FN 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_tpt_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t dmpt_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_dmpt_sz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pgfault_rnr_to :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :19;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mtt_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t cmpt_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_tpt_param_t;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_tpt_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t dmpt_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :19;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pgfault_rnr_to :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_dmpt_sz :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mtt_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t cmpt_baseaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_tpt_param_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_uar_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsvd0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t uar_pg_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_uars :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t resvd1[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_uar_param_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_uar_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsvd0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_uars :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t uar_pg_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t resvd1[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_uar_param_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * NEW for Hermon
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * QP Allocation Params
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * NOTE: as of PRM v0.50 no longer needed (ccq not supported
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * leave structure here, just in case ccq comes back )
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * but adjust the overall structure
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * not to use it
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_qp_alloc_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ccq_base :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2ccqs :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ccq_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsvd[6]; /* but 0x14 def'd for fibre channel */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_qp_alloc_param_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_qp_alloc_param_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ccq_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2ccqs :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ccq_base :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsvd[6]; /* but 0x14 def'd for fibre channel */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_qp_alloc_param_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_initqueryhca_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t version :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :13;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_cacheline :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t hca_core_clock :16; /* QUERY_HCA only */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t udav_port_chk :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t big_endian :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qos :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t chsum_en :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cqpm_short_pkt_lim :14; /* short pkt limit for qpm */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cqmp :2; /* cq moderation policy */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t router_qp :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ipr2 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ipr1 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t router_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_qp_ee_cq_eq_rdb_t context;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv2[8];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor hermon_multicast_param_t multi;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv3[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_tpt_param_t tpt;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv4[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_uar_param_t uar;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv5[36];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor hermon_multicast_param_t enet_multi;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv6[24]; /* to 0x24C */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe_t11 :1; /* fcoe t11 frame enable */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :31;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv7[42]; /* 0x254 - 0x2FC */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_initqueryhca_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t version :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t hca_core_clock :16; /* QUERY_HCA only */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_cacheline :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :13;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t router_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ipr1 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ipr2 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t router_qp :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cqmp :2; /* cq moderation policy */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cqpm_short_pkt_lim :14; /* short pkt limit for qpm */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t chsum_en :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qos :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t big_endian :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t udav_port_chk :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_qp_ee_cq_eq_rdb_t context;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv2[8];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor hermon_multicast_param_t multi;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv3[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_tpt_param_t tpt;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv4[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_uar_param_t uar;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv5[36];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor hermon_multicast_param_t enet_multi;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv6[24]; /* to 0x24C */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :31;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe_t11 :1; /* fcoe t11 frame enable */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv7[42]; /* 0x254 - 0x2FC */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_UDAV_PROTECT_DISABLED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_UDAV_PROTECT_ENABLED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_UDAV_PORTCHK_DISABLED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_UDAV_PORTCHK_ENABLED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon "INIT_IB"/"INIT_PORT" command
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The INIT_IB/INIT_PORT command enables the physical layer of an IB port.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * It provides control over the IB port attributes. The capabilities
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * requested here should not exceed the device limits, as retrieved by
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the QUERY_DEV_LIM/CAP command (above). To query information about the IB
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * port or node, the driver may submit GetPortInfo or GetNodeInfo MADs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * through the Hermon MAD_IFC command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Changed name to initport, but operates similar to initib - but as of
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * PRM v0.35c the initport just does that, and the params set previously
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * by initib are now set in SET_PORT
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON query_port and set_port commands. QUERY_PORT is new for hermon,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * doing some of what used to be done in the QUERY_DEV_CAP command. It is
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * introduced in PRM v0.35 and will need to be added to the list of
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * supported HCA commands
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * SET_PORT is similar to the SET_IB command from tavor and arbel. Here,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * tho, it's more extensive and will be easier to deal with I suspect by
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * making it a structure and filling it in and then doing the copy to the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * mailbox (instead of just writing the minimal information to the mailbox
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * directly as was done for the previous HCAs).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * PRM 0.4X and 0.50 changed the query_port to integrate the ethernet
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * stuff as well, so this is a signficant change to the structure
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_query_port_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0x04 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_pkey :4; /* pkey table size */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_gid :4; /* max gids / port */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ib_port_wid :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * Enet link speed - 0x0 10Gb XAUI, 0x01 10Gb XFI,
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * 0x02 1Gb, 0xF other
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_link_spd :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * IB Link speed - bit 0 SDR, bit1 DDR, Bit 2 QDR
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ib_link_spd :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0x00 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_mtu :16; /* in bytes */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * IB MTU - 0x0 rsvd, 0x1=256, 0x2=512, 0x3=1024, 0x4=2048, 0x5=4096
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ib_mtu :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * for next two if link down
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * -> what port supports, if up
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * -> what port is running
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ib_link :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_link :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vpi :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t link_up :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32; /* 0x0C */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* max vl's supported (not incl vl_15) */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_vl :4; /* 0x08 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_mac :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_vlan :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd1[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_query_port_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0x00 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t link_up :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vpi :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * for next two if link down
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * -> what port supports, if up
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * -> what port is running
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_link :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ib_link :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * IB MTU - 0x0 rsvd, 0x1=256, 0x2=512, 0x3=1024, 0x4=2048, 0x5=4096
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ib_mtu :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_mtu :16; /* in bytes */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* 0x04 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * IB Link speed - bit 0 SDR, bit1 DDR, Bit 2 QDR
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ib_link_spd :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * Enet link speed - 0x0 10Gb XAUI, 0x01 10Gb XFI,
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * 0x02 1Gb, 0xF other
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t eth_link_spd :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ib_port_wid :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_gid :4; /* max gids / port */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_max_pkey :4; /* pkey table size */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16; /* 0x08 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_vlan :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_max_mac :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* max vl's supported (not incl vl_15) */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_vl :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32; /* 0x0C */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd1[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * the following structure is used for IB set port
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * others following are for ethernet set port
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_OPMOD_SETPORT_IB 0x0
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_OPMOD_SETPORT_EN 0x1
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_OPMOD_SETPORT_EXT 0x2
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_set_port_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cap_mask;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rqk :1; /* reset qkey violation cntr */
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t rcm :1; /* reset capability mask */
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t :2;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t vl_cap :4;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t :4;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t mtu_cap :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t g0 :1; /* set port GUID0 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ng :1; /* set node GUID (all ports) */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sig :1; /* set sys image */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mg :1; /* change GID table */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mp :1; /* change pkey table size */
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t mvc :1; /* change vl_cap */
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t mmc :1; /* change mtu_cap */
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t sys_img_guid;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t guid0;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t node_guid;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ingress_sniff_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ingress_sniff_mode :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t egress_sniff_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t egress_sniff_mode :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_gid :16; /* valid if noted above */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_pkey :16; /* valid if noted above */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrd0[500];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_set_port_s {
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t :9;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t mmc :1; /* change mtu_cap */
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t mvc :1; /* change vl_cap */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mp :1; /* change pkey table size */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mg :1; /* change GID table size */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sig :1; /* set sys image GUID */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ng :1; /* set node GUID (all ports) */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t g0 :1; /* set port GUID0 */
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t mtu_cap :4;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t :4;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t vl_cap :4;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t :2;
71be8d8f808a6f8b1a1bbb502fb01c7ccdb8512dBill Taylor uint32_t rcm :1; /* reset capability mask */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rqk :1; /* reset qkey violation cntr */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cap_mask;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t sys_img_guid;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t guid0;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t node_guid;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t egress_sniff_mode :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t egress_sniff_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ingress_sniff_mode :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ingress_sniff_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_pkey :16; /* valid if noted above */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_gid :16; /* valid if noted above */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrd0[500];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * structures for ethernet setport
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * Which structure is used depends on low-16 of opmod
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * Low 8 == port number, 15:8 == selector
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * Or the following with port number
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_ENET_OPMOD_SELECT_GEN 0x0000 /* general params */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_ENET_OPMOD_SELECT_RQN 0x0100 /* rcv qpn calc */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_ENET_OPMOD_SELECT_MAC 0x0200 /* MAC table conf */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_ENET_OPMOD_SELECT_VLAN 0x0300 /* VLAN table conf */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_ENET_OPMOD_SELECT_PRIO 0x0400 /* Priority table */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_ENET_OPMOD_SELECT_GID 0x0500 /* GID Table */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * set port for enthernet, general parameters
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * Which structure
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mtu :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t v_mtu :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t v_pprx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t v_pptx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :29;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pfcrx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pprx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pfctx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pptx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd0[4];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :29;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t v_pptx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t v_pprx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t v_mtu :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mtu :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pptx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pfctx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pprx :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pfcrx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd0[4];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* set_port for enet, RX QPM calculations Parameters */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_rqpn_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_p :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_v :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_m :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t base_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_miss_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t intra_vlan_miss :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t no_vlan_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t intra_no_vlan :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_miss_idx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t promisc_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t en_uc_promisc :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t no_vlan_prio :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :29;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t def_mcast_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mc_by_vlan :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mc_promisc_mode :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd0[4];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_rqpn_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t base_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_m :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_v :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_p :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_miss_idx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t intra_no_vlan :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t no_vlan_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t intra_vlan_miss :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_miss_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :29;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t no_vlan_prio :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t en_uc_promisc :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t promisc_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mc_promisc_mode :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mc_by_vlan :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t def_mcast_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd0[4];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_mact_entry_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_valid :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_mact_entry_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_valid :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* set_port for enet, MAC Table Configuration */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_mact_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor struct hermon_hw_set_port_mact_entry_s mtable[128];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_mact_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor struct hermon_hw_set_port_mact_entry_s mtable[128];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* set_port for enet, VLAN Table Configuration */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_vlant_entry_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_id :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :18;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t intra :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t valid :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_vlant_entry_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t valid :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t intra :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :18;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_id :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_vlant_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[2];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor struct hermon_hw_set_port_vlant_entry_s table[126];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_vlant_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[2];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor struct hermon_hw_set_port_vlant_entry_s table[126];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* set_port for enet, Priority table Parameters */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_priot_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio0 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio1 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio2 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio3 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio4 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio5 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio6 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio7 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[2];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_en_priot_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio7 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio6 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio5 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio4 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio3 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio2 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio1 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t prio0 :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* note: GID table is same BIG or LITTLE ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_port_gidtable_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t gid[128];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_conf_int_mod_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t int_vect :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t min_delay :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_conf_int_mod_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t min_delay :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t int_vect :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Memory Protection Table (MPT) entries
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The Memory Protection Table (MPT) contains the information associated
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * with all the regions and windows. The MPT table resides in a virtually-
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * contiguous area in ICM, and the memory key (R_Key or L_Key) is used to
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * calculate the physical address for accessing the entries in the table.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The SW2HW_MPT command transfers ownership of an MPT entry from software
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * to hardware. The command takes the MPT entry from the input mailbox and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * stores it in the MPT in the hardware. The command will fail if the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * requested MPT entry is already owned by the hardware or if the MPT index
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * given in the command is inconsistent with the MPT entry memory key.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The QUERY_MPT command retrieves a snapshot of an MPT entry. The command
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * takes the current state of an MPT entry from the hardware and stores it
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * in the output mailbox. The command will fail if the requested MPT entry
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * is already owned by software.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Finally, the HW2SW_MPT command transfers ownership of an MPT entry from
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the hardware to the software. The command takes the MPT entry from the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hardware, invalidates it, and stores it in the output mailbox. The
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * command will fail if the requested entry is already owned by software.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The command will also fail if the MPT entry in question is a Memory
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Region which has Memory Windows currently bound to it.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following structure is used in the SW2HW_MPT, QUERY_MPT, and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HW2SW_MPT commands, and ONLY for the dMPT - for data.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_dmpt_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bnd_qp :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpn :24; /* dw 1, byte 4-7 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reg_win :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t phys_addr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atomic :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t en_bind :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_req :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_xlat :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t no_snoop :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t status :4; /* dw 0, byte 0-3 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ren_inval :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t en_inval :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t net_cache :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fast_reg_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_acc_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t w_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t m_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1; /* dw 2, byte 0xc-f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mem_key;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t start_addr; /* dw 4-5, byte 0x10-17 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t reg_win_len; /* dw 6-7, byte 0x18-1f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t win_cnt :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8; /* dw 9, byte 0x24-27 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lkey; /* dw 8, byte 0x20-23 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_h :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24; /* dw 11, byte 0x2c-2f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_rep :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :17;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blk_mode :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t len_b64 :1; /* bit 64 of length */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fbo_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8; /* dw 10, byte 0x28-2b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_size; /* dw 13, byte 0x34-37 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_l :29; /* dw 12, byte 0x30-33 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_fbo :21;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11; /* dw 15, byte 0x3c-3f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t entity_sz :21;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11; /* dw 14, byte 0x38-3b */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_m_atag :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16; /* dw 17, 0x44-47 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_a_msk :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_v_msk :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_rep :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dif_err :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5; /* dw 16, 0x40-43 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_w_atag :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16; /* dw 19, 0x4c-4f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_m_rtagb; /* dw 18, 0x48-4b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_w_rtagb; /* dw 20, 0x50-53 */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[10];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_dmpt_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t status :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t no_snoop :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_xlat :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_req :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t en_bind :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atomic :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t phys_addr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reg_win :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8; /* dw 0, byte 0x0-3 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bnd_qp :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7; /* dw 1, byte 0x4-7 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mem_key; /* dw 2, byte 0x8-b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t m_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t w_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_acc_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fast_reg_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t net_cache :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t en_inval :1;
c7facc54c4abed9e554ff80225311e6b7048d3c9Bill Taylor uint32_t ren_inval :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24; /* dw 3, byte 0xc-f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t start_addr; /* dw 4-5, byte 0x10-17 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t reg_win_len; /* dw 6-7, byte 0x18-1f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lkey; /* dw 8, bytd 0x20-23 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t win_cnt :24; /* dw 9, byte 0x24-27 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fbo_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t len_b64 :1; /* bit 64 of length */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blk_mode :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :17;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_rep :4; /* dw 10, byte 0x28-2b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_h :8; /* dw 11, byte 0x2c-2f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_l :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3; /* dw 12, byte 0x30-33 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_size; /* dw 13, byte 0x34-37 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t entity_sz :21; /* dw 14, byte 0x38-3b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_fbo :21; /* dw 15, byte 0x3c-3f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_err :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_rep :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_v_msk :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_a_msk :16; /* dw 16, 0x40-43 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_m_atag :16; /* dw 17, 0x44-47 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_m_rtagb; /* dw 18, 0x48-4b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_w_atag :16; /* dw 19, 0x4c-4f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dif_w_rtagb; /* dw 20, 0x50-53 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[10];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following structure is for the CMPTs. This is NEVER actually built and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * passed to the hardware - we use it to track information needed for the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * context entries, and to facilitate the alloc tracking. It differs from
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the dMPT sturcture above in that it does not have/need the "dif" stuff.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_cmpt_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bnd_qp :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpn :24; /* dw 1, byte 4-7 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reg_win :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t phys_addr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atomic :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t en_bind :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_req :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_xlat :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t no_snoop :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t status :4; /* dw 0, byte 0-3 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ren_inval :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t en_inval :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t net_cache :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fast_reg_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_acc_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t w_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t m_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1; /* dw 2, byte 0xc-f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mem_key;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t start_addr; /* dw 4-5, byte 0x10-17 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t reg_win_len; /* dw 6-7, byte 0x18-1f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t win_cnt :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8; /* dw 9, byte 0x24-27 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lkey; /* dw 8, byte 0x20-23 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_h :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24; /* dw 11, byte 0x2c-2f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_rep :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :17;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blk_mode :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t len_b64 :1; /* bit 64 of length */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fbo_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8; /* dw 10, byte 0x28-2b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_size; /* dw 13, byte 0x34-37 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_l :29; /* dw 12, byte 0x30-33 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mtt_fbo :21;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11; /* dw 15, byte 0x3c-3f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t entity_sz :21;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11; /* dw 14, byte 0x38-3b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_cmpt_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t status :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t no_snoop :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_xlat :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t atc_req :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t en_bind :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t atomic :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t phys_addr :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t reg_win :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8; /* dw 0, byte 0x0-3 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t bnd_qp :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7; /* dw 1, byte 0x4-7 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mem_key; /* dw 2, byte 0x8-b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t m_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t w_dif :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_acc_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fast_reg_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t net_cache :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t en_inval :1;
c7facc54c4abed9e554ff80225311e6b7048d3c9Bill Taylor uint32_t ren_inval :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24; /* dw 3, byte 0xc-f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t start_addr; /* dw 4-5, byte 0x10-17 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t reg_win_len; /* dw 6-7, byte 0x18-1f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lkey; /* dw 8, bytd 0x20-23 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t win_cnt :24; /* dw 9, byte 0x24-27 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fbo_en :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t len_b64 :1; /* bit 64 of length */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blk_mode :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :17;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mtt_rep :4; /* dw 10, byte 0x28-2b */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_h :8; /* dw 11, byte 0x2c-2f */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_addr_l :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3; /* dw 12, byte 0x30-33 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_size; /* dw 13, byte 0x34-37 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t entity_sz :21; /* dw 14, byte 0x38-3b */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :11; /* dw 15, byte 0x3c-3f */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mtt_fbo :21;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MEM_CYCLE_GENERATE 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_IO_CYCLE_GENERATE 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MPT_IS_WINDOW 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MPT_IS_REGION 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MPT_DEFAULT_VERSION 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_UNLIMITED_WIN_BIND 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PHYSADDR_ENABLED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PHYSADDR_DISABLED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Memory Translation Table (MTT) entries
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * After accessing the MPT table (above) and validating the access rights
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * to the region/window, Hermon address translation moves to the next step
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * where it translates the virtual address to a physical address. This
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * translation is performed using the Memory Translation Table entries
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * (MTT). Note: The MTT in hardware is organized into segments and each
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * segment contains multiple address translation pages (MTT entries).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Each memory region (MPT above) points to the first segment in the MTT
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * that corresponds to that region.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mtt_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t present :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ptag_l :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ptag_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG_ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mtt_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ptag_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ptag_l :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t present :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MTT_ENTRY_NOTPRESENT 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MTT_ENTRY_PRESENT 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Event Queue Context Table (EQC) entries
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon supports 512 Event Queues, and the status of Event Queues is stored
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * in the Event Queue Context (EQC) table. The EQC table is a virtually-
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * contiguous memory structure in the ICM. Each EQC
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * table entry contains Event Queue status and information required by
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the hardware in order to access the event queue.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * NOTE that in Hermon (as opposed to earlier HCAs),
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * you have to allocate ICM for 2**32 (or about 16 M), even though
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * it doesn't support that many. See PRM v35. Also, some set of them
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * will be available for each domain in a virtual environment, needing to
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * rething the allocation and usage model for EQs - in the future.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following structure is used in the SW2HW_EQ, QUERY_EQ, and HW2SW_EQ
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * commands.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The SW2HW_EQ command transfers ownership of an EQ context from software
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * to hardware. The command takes the EQC entry from the input mailbox and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * stores it in the EQC in the hardware. The command will fail if the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * requested EQC entry is already owned by the hardware. NOTE: the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * initialization of the cMPT for the EQC occurs implicitly as a result
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * of executing this command, and MR has/had to be adjusted for it.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The QUERY_EQ command retrieves a snapshot of an EQC entry. The command
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * stores the snapshot in the output mailbox. The EQC state and its values
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * are not affected by the QUERY_EQ command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Finally, the HW2SW_EQ command transfers ownership of an EQC entry from
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the hardware to the software. The command takes the EQC entry from the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hardware and stores it in the output mailbox. The EQC entry will be
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * invalidated as a result of the command. It is the responsibility of the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * software to unmap all the events, which might have been previously
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * mapped to the EQ, prior to issuing the HW2SW_EQ command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_eqc_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t overrun_ignore :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ev_coalesc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t status :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_eq_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pg_offs :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t intr :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :22;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eq_max_cnt :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eq_period :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6; /* in 4K pages */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t prod_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cons_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rsrv1[2]; /* force it to 8b alignment */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_eqc_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t status :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ev_coalesc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t overrun_ignore :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pg_offs :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_eq_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eq_period :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t eq_max_cnt :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :22;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t intr :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6; /* in 4K pages */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cons_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t prod_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rsrv1[2]; /* force it to 8b alignment */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQ_STATUS_OK 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQ_STATUS_OVERFLOW 0x9
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQ_STATUS_WRITE_FAILURE 0xA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQ_ARMED 0x9
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQ_FIRED 0xA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQ_ALWAYS_ARMED 0xB
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Event Queue Entries (EQE)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Each EQE contains enough information for the software to identify the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * source of the event. The following structures are used to define each
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * of the various kinds of events that the Hermon hardware will generate.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note: The hermon_hw_eqe_t below is the generic "Event Queue Entry". All
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * other EQEs differ only in the contents of their "event_data" field.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Below we first define several structures which define the contents of
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the "event_data" fields:
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_cq_t for "Completion Queue Events"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_qp_evt_t for "Queue Pair Events" such as Path Migration
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Succeeded, Path Migration Failed, Communication Established, Send
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Queue Drained, Local WQ Catastrophic Error, Invalid Request Local
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * WQ Error, and Local Access Violation WQ Error.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_cqerr_t for "Completion Queue Error Events"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_portstate_t for "Port State Change Events"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_gpio_t for "GPIO State Change Events"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_cmdcmpl_t for "Command Interface Completion Events"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_operr_t for "Operational and Catastrophic Error Events"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * such as EQ Overflow, Misbehaved UAR page, Internal Parity Error,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Uplink bus error, and DDR data error.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_hw_eqe_pgflt_t for "Not-present Page Fault on WQE or Data
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Buffer Access". (Note: Currently, this event is unsupported).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note also: The following structures are not #define'd with both
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * little-endian and big-endian definitions. This is because their
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * individual fields are not directly accessed except through the macros
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * defined below.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_cq_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[5];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_cq_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_qp_evt_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[5];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_qpevt_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_cqerr_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t syndrome :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[3];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_cqerr_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQERR_OVERFLOW 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQERR_ACCESS_VIOLATION 0x2
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_portstate_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t port :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :28;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[3];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_portstate_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PORT_LINK_ACTIVE 0x4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PORT_LINK_DOWN 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_gpio_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[3];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t gpio_ev0;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t gpio_ev1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_gpio_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_cmdcmpl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t token :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t status :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t out_param0;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t out_param1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_cmdcmpl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_operr_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t error_type :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t data;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_operr_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_ERREVT_EQ_OVERFLOW 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_ERREVT_BAD_UARPG 0x2
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_ERREVT_UPLINK_BUSERR 0x3
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_ERREVT_DDR_DATAERR 0x4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_ERREVT_INTERNAL_PARITY 0x5
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylortypedef struct hermon_hw_eqe_fcerr_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :14;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t port :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fexch :16; /* fexch number */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcsyndrome :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[3];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor} hermon_hw_eqe_fcerr_t;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_ERR_FC_BADIU 0x0
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_ERR_FC_SEQUENCE 0x01
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_eqe_pgflt_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fault_type :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t wqv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t wqe_data :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_loc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t snd_rcv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vaddr_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vaddr_l;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mem_key;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_eqe_pgflt_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_PG_NOTPRESENT 0x8
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_PG_WRACC_VIOL 0xA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_UNSUP_NOTPRESENT 0xE
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_UNSUP_WRACC_VIOL 0xF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_WQE_CAUSED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_DATA_CAUSED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_REMOTE_CAUSED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_LOCAL_CAUSED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_SEND_CAUSED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_RECV_CAUSED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_DESC_CONSUMED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_PGFLT_DESC_NOTCONSUMED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_eqe_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t event_type :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t event_subtype :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor union {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_cq_t eqe_cq;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_qpevt_t eqe_qpevt;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_cqerr_t eqe_cqerr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_portstate_t eqe_portstate;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_gpio_t eqe_gpio;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_cmdcmpl_t eqe_cmdcmpl;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_operr_t eqe_operr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_eqe_pgflt_t eqe_pgflt;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor hermon_hw_eqe_fcerr_t eqe_fcerr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } event_data;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t owner :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_cq event_data.eqe_cq
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_qpevt event_data.eqe_qpevt
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_cqerr event_data.eqe_cqerr
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_portstate event_data.eqe_portstate
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_gpio event_data.eqe_gpio
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_cmdcmpl event_data.eqe_cmdcmpl
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_operr event_data.eqe_operr
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define eqe_pgflt event_data.eqe_pgflt
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define eqe_fcerr event_data.eqe_fcerr
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following macros are used for extracting (and in some cases filling in)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information from EQEs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_CQNUM_MASK 0x00FFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_CQNUM_SHIFT 0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_QPNUM_MASK 0x00FFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_QPNUM_SHIFT 0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_PORTNUM_MASK 0x30
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_PORTNUM_SHIFT 4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_OWNER_MASK 0x00000080
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_OWNER_SHIFT 7
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_EVTTYPE_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(eqe))[1])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_EVTSUBTYPE_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(eqe))[3])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_CQNUM_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((htonl(((uint32_t *)(eqe))[1]) & HERMON_EQE_CQNUM_MASK) >> \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_EQE_CQNUM_SHIFT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_QPNUM_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((htonl(((uint32_t *)(eqe))[1]) & HERMON_EQE_QPNUM_MASK) >> \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_EQE_QPNUM_SHIFT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_PORTNUM_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((((uint8_t *)(eqe))[12]) & HERMON_EQE_PORTNUM_MASK) >> \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_EQE_PORTNUM_SHIFT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_CMDTOKEN_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htons(((uint16_t *)(eqe))[3])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_CMDSTATUS_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(eqe))[0xf])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_CMDOUTP0_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htonl(((uint32_t *)(eqe))[4])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_CMDOUTP1_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htonl(((uint32_t *)(eqe))[5])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_OPERRTYPE_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(eqe))[0xf])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_EQE_OPERRDATA_GET(eq, eqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htonl(((uint32_t *)(eqe))[4])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_EQE_FEXCH_PORTNUM_GET(eq, eqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor (((uint8_t *)(eqe))[5] & 0x3)
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_EQE_FEXCH_FEXCH_GET(eq, eqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor htons(((uint16_t *)(eqe))[3])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_EQE_FEXCH_SYNDROME_GET(eq, eqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor (((uint8_t *)(eqe))[15])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon does ownership of CQ and EQ differently from Arbel & Tavor.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Now, you keep track of the TOTAL number of CQE's or EQE's that have been
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * processed, and the sense of the ownership bit changes each time through.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * That is, if the size of the queue is 16, so 4 bits [3:0] are the index
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * number, then bit [4] is the ownership bit in the count. So you mask that
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * bit and compare it to the owner bit in the entry - if the same, then the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * entry is in SW onwership. Otherwise, it's in hardware and the driver
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * does not consume it.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_EQE_OWNER_IS_SW(eq, eqe, consindx, shift) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((((uint8_t *)(eqe))[0x1f] & HERMON_EQE_OWNER_MASK) == \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor (((consindx) & eq->eq_bufsz) >> (shift)))
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Completion Queue Context Table (CQC) entries
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The CQC table is a virtually-contiguous memory area residing in HCA's
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * ICM. Each CQC table entry contains information
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * required by the hardware to access the completion queue to post
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * completions (CQE).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following structure is used in the SW2HW_CQ, QUERY_CQ, RESIZE_CQ,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and HW2SW_CQ commands.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The SW2HW_CQ command transfers ownership of an CQ context from software
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * to hardware. The command takes the CQC entry from the input mailbox and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * stores it in the CQC in the hardware. The command will fail if the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * requested CQC entry is already owned by the hardware.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The QUERY_CQ command retrieves a snapshot of a CQC entry. The command
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * stores the snapshot in the output mailbox. The CQC state and its values
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * are not affected by the QUERY_CQ command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Finally, the HW2SW_CQ command transfers ownership of a CQC entry from
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the hardware to the software. The command takes the CQC entry from the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hardware and stores it in the output mailbox. The CQC entry will be
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * invalidated as a result of the command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_cqc_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t overrun_ignore :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqe_coalesc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t status :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t usr_page :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_cq_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pg_offs :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t c_eqn :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :23;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_max_cnt :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_period :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t solicit_prod_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t last_notified_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t prod_cntr :24; /* producer counter */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cons_cntr :24; /* consumer counter */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrh;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rsrv1[8]; /* hermon, match DEV_CAP size */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_cqc_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t status :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqe_coalesc :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t overrun_ignore :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pg_offs :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_cq_sz :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t usr_page :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_period :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_max_cnt :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :23;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t c_eqn :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t last_notified_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t solicit_prod_indx :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cons_cntr :24; /* consumer counter */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t prod_cntr :24; /* priducer counter */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrh;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rsrv1[8]; /* hermon, match DEV_CAP size */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_STATUS_OK 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_STATUS_OVERFLOW 0x9
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_STATUS_WRITE_FAILURE 0xA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_DISARMED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_ARMED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_ARMED_SOLICITED 0x4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_FIRED 0xA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Completion Queue Entries (CQE)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Each CQE contains enough information for the software to associate the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * completion with the Work Queue Element (WQE) to which it corresponds.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note: The following structure is not #define'd with both little-endian
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and big-endian definitions. This is because each CQE's individual
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * fields are not directly accessed except through the macros defined below.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_cqe_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dife :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fl :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcrc_sd :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t d2s :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t my_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t immed_rss_val_key;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t grh :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ml_path :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_rqpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sl :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vid :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t slid :16; /* SMAC 47:32 or SLID */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ipoib_status; /* SMAC 31:0 or enet/ipoib/EoIB status */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t byte_cnt;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t wqe_cntr :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t checksum :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t owner :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t send_or_recv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t inline_scatter :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t opcode :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_COMPLETION_RECV 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_COMPLETION_SEND 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_DEFAULT_VERSION 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following macros are used for extracting (and in some cases filling in)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information from CQEs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_QPNUM_MASK 0x00FFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_QPNUM_SHIFT 0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_DQPN_MASK 0x00FFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_DQPN_SHIFT 0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_SL_SHIFT 4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_GRH_MASK 0x80
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_PATHBITS_MASK 0x7F
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_SLID_15_8 0xe
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_SLID_7_0 0xf
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_OPCODE_MASK 0x1F
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_SENDRECV_MASK 0x40
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_SENDRECV_SHIFT 6
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_OWNER_MASK 0x80
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_OWNER_SHIFT 7
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_WQECNTR_15_8 0x18
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_WQECNTR_7_0 0x19
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* Byte offsets for IPoIB Checksum Offload fields */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_CKSUM_15_8 0x1a
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_CKSUM_7_0 0x1b
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_IPOK 0x10 /* byte 0x10 in cqe */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_IPOK_BIT 0x10 /* bitmask for OK bit */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_IS_IPOK(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(cqe))[HERMON_CQE_IPOK] & HERMON_CQE_IPOK_BIT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_CKSUM(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((((uint8_t *)(cqe))[HERMON_CQE_CKSUM_15_8] << 8) | \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(cqe))[HERMON_CQE_CKSUM_7_0]))
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_IPOIB_STATUS(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htonl((((uint32_t *)(cqe)))[4])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_QPNUM_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((htonl((((uint32_t *)(cqe)))[0]) & HERMON_CQE_QPNUM_MASK) >> \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_CQE_QPNUM_SHIFT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_IMM_ETH_PKEY_CRED_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htonl(((uint32_t *)(cqe))[1])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_DQPN_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((htonl(((uint32_t *)(cqe))[2]) & HERMON_CQE_DQPN_MASK) >> \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_CQE_DQPN_SHIFT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_GRH_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(cqe))[8] & HERMON_CQE_GRH_MASK)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_PATHBITS_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(cqe))[8] & HERMON_CQE_PATHBITS_MASK)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_DLID_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((((uint8_t *)(cqe))[HERMON_CQE_SLID_15_8] << 8) | \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(cqe))[HERMON_CQE_SLID_7_0]))
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_SL_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((((uint8_t *)(cqe))[12]) >> HERMON_CQE_SL_SHIFT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_BYTECNT_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htonl(((uint32_t *)(cqe))[5])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_WQECNTR_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((((uint8_t *)(cqe))[HERMON_CQE_WQECNTR_15_8] << 8) | \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(cqe))[HERMON_CQE_WQECNTR_7_0]))
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_ERROR_SYNDROME_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((uint8_t *)(cqe))[27])
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_ERROR_VENDOR_SYNDROME_GET(cq, cqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor (((uint8_t *)(cqe))[26])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_OPCODE_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((((uint8_t *)(cqe))[31]) & HERMON_CQE_OPCODE_MASK)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQE_SENDRECV_GET(cq, cqe) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((((uint8_t *)(cqe))[31]) & HERMON_CQE_SENDRECV_MASK) >> \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_CQE_SENDRECV_SHIFT)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_FEXCH_SEQ_CNT(cq, cqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor HERMON_CQE_CKSUM(cq, cqe)
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_FEXCH_TX_BYTES(cq, cqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor htonl(((uint32_t *)(cqe))[3])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_FEXCH_RX_BYTES(cq, cqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor htonl(((uint32_t *)(cqe))[4])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_FEXCH_SEQ_ID(cq, cqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor (((uint8_t *)(cqe))[8])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_FEXCH_DETAIL(cq, cqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor htonl(((uint32_t *)(cqe))[0])
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_FEXCH_DIFE(cq, cqe) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((((uint8_t *)(cqe))[0]) & 0x80)
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* See Comment above for EQE - ownership of CQE is handled the same */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_CQE_OWNER_IS_SW(cq, cqe, considx, shift, mask) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (((((uint8_t *)(cqe))[31] & HERMON_CQE_OWNER_MASK) >> \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_CQE_OWNER_SHIFT) == \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor (((considx) & (mask)) >> (shift)))
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Shared Receive Queue (SRQ) Context Entry Format
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_srqc_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t xrc_domain :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rq_stride :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srqn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_srq_size :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn_xrc :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t page_offs :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t wqe_cnt :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lwm :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_wqe_cntr :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrl :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrh;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrc0[80]; /* to match DEV_CAP size of 0x80 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_srqc_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_srq_size :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srqn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rq_stride :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t xrc_domain :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t page_offs :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn_xrc :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lwm :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t wqe_cnt :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_wqe_cntr :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrh;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrl :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrc0[80]; /* to match DEV_CAP size of 0x80 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon MOD_STAT_CFG input mailbox structure
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mod_stat_cfg_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_rx_op :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_rx_opt_m :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_tx_op :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_tx_opt_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_pg_sz :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_pg_sz_m :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dife :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dife_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rx_options :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rx_options_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tx_options :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tx_options_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lid :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lid_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t port_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t port_en_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_hi;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :31;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_hi_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_lo;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :31;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_lo_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsvd[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t inbuf_ind_en :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sd_main :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sd_equal :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sd_mux_main :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mux_eq :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sigdet_th :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ob_preemp_pre :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t op_preemp_post :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ob_preemp_main :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ob_preemp :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t serdes_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t reserved[22];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :15;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mod_stat_cfg_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tx_options_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tx_options :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rx_options_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rx_options :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dife_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dife :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_pg_sz_m :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log_pg_sz :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_tx_opt_m :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_tx_op :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_rx_opt_m :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t qdr_rx_op :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :10;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t port_en_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t port_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lid_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lid :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_hi_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :31;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_hi;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_lo_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :31;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guid_lo;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsvd[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t serdes_m :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ob_preemp :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ob_preemp_main :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t op_preemp_post :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ob_preemp_pre :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sigdet_th :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mux_eq :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sd_mux_main :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sd_equal :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sd_main :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t inbuf_ind_en :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t reserved[22]; /* get to new enet stuff */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_m :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :15;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon MOD_STAT_CFG input modifier structure
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * NOTE: this might end up defined ONLY one way,
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * if usage is access via macros
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_msg_in_mod_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t offset :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t port_num :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lane_num :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t link_speed :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t auto_neg :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t auto_neg :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t link_speed :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lane_num :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t port_num :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t offset :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon UD Address Vector (UDAV)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon UDAV are used in conjunction with Unreliable Datagram (UD) send
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * WQEs. Each UD send message contains an address vector in in the datagram
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * segment. The verbs consumer must use special verbs to create and modify
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * address handles, each of which contains a UDAV structure. When posting
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * send WQEs to UD QP, the verbs consumer must supply a valid address
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * handle/UDAV.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_udav_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rlid :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ml_path :7; /* mlid or SMAC idx */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t grh :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portnum :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t force_lb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t flow_label :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tclass :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sl :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t hop_limit :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_stat_rate :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mgid_index :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_l;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_udav_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t force_lb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portnum :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t grh :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ml_path :7; /* mlid or SMAC idx */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rlid :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mgid_index :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_stat_rate :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t hop_limit :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sl :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tclass :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t flow_label :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_l;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_UDAV_MODIFY_MASK0 0xFCFFFFFFFF000000ULL
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_UDAV_MODIFY_MASK1 0xFF80F00000000000ULL
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* UDAV for enthernet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_udav_enet_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t smac_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :9;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pd :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t portnum :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cv :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t force_lb :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t flow_label :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tclass :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sl :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hop_limit :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_stat_rate :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mgid_index :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :9;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_h;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_l;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv[2];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_lo;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_udav_enet_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t force_lb :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cv :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t portnum :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pd :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :9;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t smac_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :9;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mgid_index :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_stat_rate :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hop_limit :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sl :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tclass :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t flow_label :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_h;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_l;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv[2];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_low;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Queue Pair Context Table (QPC) entries
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The QPC table is a virtually-contiguous memory area residing in HCA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * ICM. Each QPC entry is accessed for reads and writes
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * by the HCA while executing work requests on the associated QP.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following structure is used in the RST2INIT_QP, INIT2INIT_QP,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * INIT2RTR_QP, RTR2RTS_QP, RTS2RTS_QP, SQERR2RTS_QP, TOERR_QP, RTS2SQD_QP,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * SQD2RTS_QP, TORST_QP, and QUERY_QP commands.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * With the exception of the QUERY_QP command, each of these commands reads
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * from some portion of the QPC in the input mailbox and modified the QPC
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * stored in the hardware. The QUERY_QP command retrieves a snapshot of a
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * QPC entry. The command stores the snapshot in the output mailbox. The
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * QPC state and its values are not affected by the QUERY_QP command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Below we first define the hermon_hw_addr_path_t or "Hermon Address Path"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * structure. This structure is used to provide address path information
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * (both primary and secondary) for each QP context. Note: Since this
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * structure is _very_ similar to the hermon_hw_udav_t structure above,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * we are able to leverage the similarity with filling in and reading from
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the two types of structures. See hermon_get_addr_path() and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_set_addr_path() in hermon_misc.c for more details.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#if (DATAMODEL_NATIVE == DATAMODEL_LP64)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#pragma pack(4)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_addr_path_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rlid :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mlid :7; /* mlid or SMAC idx */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t grh :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cntr_idx :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pkey_indx :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :22;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1; /* but may be used for enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cv :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t force_lb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t flow_label :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tclass :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_in :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_out :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_in :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_out :1; /* sniff-rcv-egress */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t hop_limit :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_stat_rate :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mgid_index :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t link_type :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ack_timeout :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_l;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8; /* but may be used for enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sp :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fvl :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fsip :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fsm :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_idx :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sched_q :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_lo :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_addr_path_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t force_lb :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cv :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1; /* but may be used for enet */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :22;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pkey_indx :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cntr_idx :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t grh :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mlid :7; /* mlid or SMAC idx */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rlid :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ack_timeout :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t link_type :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mgid_index :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_stat_rate :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t hop_limit :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_out :1; /* sniff-rcv-egress */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_in :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_out :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_in :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tclass :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t flow_label :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_h;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_l;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sched_q :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fsm :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fsip :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fvl :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sp :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8; /* but may be used for enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_lo :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif /* LITTLE ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* The addr path includes RSS fields for RSS QPs */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_rss_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rlid :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mlid :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t grh :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cntr_idx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pkey_indx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :22;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1; /* but may be used for enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cv :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t force_lb :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t flow_label :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tclass :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_in :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_out :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_in :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_out :1; /* sniff-rcv-egress */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hop_limit :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_stat_rate :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mgid_index :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t link_type :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ack_timeout :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_h;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_l;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t base_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_tbl_sz :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8; /* but may be used for enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sp :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fvl :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fsip :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fsm :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sched_q :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tcp_ipv6 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ipv6 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tcp_ipv4 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ipv4 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hash_fn :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :22;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t default_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint8_t rss_key[40];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_rss_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t force_lb :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cv :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1; /* but may be used for enet */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :22;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pkey_indx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cntr_idx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t grh :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mlid :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rlid :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ack_timeout :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t link_type :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mgid_index :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t max_stat_rate :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hop_limit :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_out :1; /* sniff-rcv-egress */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_r_in :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_out :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sniff_s_in :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tclass :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t flow_label :20;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t rgid_l;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sched_q :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_idx :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fsm :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fsip :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fvl :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sp :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8; /* but may be used for enet */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_tbl_sz :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t base_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t default_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :22;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hash_fn :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ipv4 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tcp_ipv4 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ipv6 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tcp_ipv6 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint8_t rss_key[40];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif /* LITTLE ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#if (DATAMODEL_NATIVE == DATAMODEL_LP64)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#pragma pack()
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#if (DATAMODEL_NATIVE == DATAMODEL_LP64)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#pragma pack(4)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_qpc_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pm_state :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rss :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t serv_type :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t usr_page :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rlky :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_sq_stride :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_sq_size :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sq_no_prefetch :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rq_stride :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rq_size :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t msg_max :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtu :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t loc_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_addr_path_t pri_addr_path;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_addr_path_t alt_addr_path;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cur_retry_cnt :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cur_rnr_retry :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fre :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rnr_retry :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t retry_cnt :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sra_max :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ack_req_freq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn_snd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t next_snd_psn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ssn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t last_acked_psn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t next_rcv_psn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t min_rnr_nak :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ric :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t page_offs :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rae :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rwe :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rre :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rra_max :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn_rcv :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t xrcd :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrl :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrh :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_number :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sq_wqe_counter :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rq_wqe_counter :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rmsn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* new w/ hermon */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t base_mkey :24; /* bits 32-8, low 7 m/b 0 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rmc_peers :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rmc_parent_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t header_sep :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t inline_scatter :1; /* m/b 0 for srq */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rmc_enable :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2; /* may use one bit for enet */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mkey_remap :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t exch_base :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t exch_size :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vft_vf_id :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vft_prior :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ve :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t my_fc_id_idx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vft_hop_cnt :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[8];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_qpc_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t state :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t serv_type :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rss :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pm_state :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtu :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t msg_max :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rq_size :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_rq_stride :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sq_no_prefetch :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_sq_size :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log_sq_stride :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rlky :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t usr_page :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t loc_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_addr_path_t pri_addr_path;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_addr_path_t alt_addr_path;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ack_req_freq :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sra_max :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t retry_cnt :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rnr_retry :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fre :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cur_rnr_retry :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cur_retry_cnt :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t next_snd_psn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn_snd :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t last_acked_psn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ssn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rra_max :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rre :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rwe :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rae :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t page_offs :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ric :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t min_rnr_nak :5;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t next_rcv_psn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t xrcd :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn_rcv :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrh :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dbr_addrl :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t srq_number :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rmsn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rq_wqe_counter :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sq_wqe_counter :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* new w/ hermon */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mkey_remap :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2; /* may use one bit for enet */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rmc_enable :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t inline_scatter :1; /* m/b 0 for srq */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t header_sep :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rmc_parent_qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t num_rmc_peers :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t base_mkey :24; /* bits 32-8, low 7 m/b 0 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t log2_pgsz :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrh :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_base_addrl :29;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ve :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vft_prior :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vft_vf_id :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t exch_size :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t exch_base :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vft_hop_cnt :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t my_fc_id_idx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsvd[8];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif /* LITTLE ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#if (DATAMODEL_NATIVE == DATAMODEL_LP64)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#pragma pack()
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_RESET 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_INIT 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_RTR 0x2
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_RTS 0x3
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_SQERR 0x4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_SQD 0x5
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_ERR 0x6
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_SQDRAINING 0x7
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_RC 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_UC 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_UD 0x3
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_QP_FCMND 0x4
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_QP_FEXCH 0x5
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_QP_XRC 0x6
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_MLX 0x7
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_QP_RFCI 0x9
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_PMSTATE_MIGRATED 0x3
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_PMSTATE_ARMED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_PMSTATE_REARM 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_DESC_EVT_DISABLED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_DESC_EVT_ENABLED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_FLIGHT_LIM_UNLIMITED 0xF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_SQ_ALL_SIGNALED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_SQ_WR_SIGNALED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_RQ_ALL_SIGNALED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_RQ_WR_SIGNALED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_SRQ_ENABLED 0x1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_SRQ_DISABLED 0x0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_WQE_BASE_SHIFT 0x6
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Multicast Group Member (MCG)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon MCG are organized in a virtually-contiguous memory table (the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Multicast Group Table) in the ICM. This table is
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * actually comprised of two consecutive tables: the Multicast Group Hash
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Table (MGHT) and the Additional Multicast Group Members Table (AMGM).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Each such entry contains an MGID and a list of QPs that are attached to
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the multicast group. Each such entry may also include an index to an
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Additional Multicast Group Member Table (AMGM) entry. The AMGMs are
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * used to form a linked list of MCG entries that all map to the same hash
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * value. The MCG entry size is configured through the INIT_HCA command.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note: An MCG actually consists of a single hermon_hw_mcg_t and some
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * number of hermon_hw_mcg_qp_list_t (such that the combined structure is a
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * power-of-2).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following structures are used in the READ_MGM and WRITE_MGM commands.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The READ_MGM command reads an MCG entry from the multicast table and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * returns it in the output mailbox. Note: This operation does not affect
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the MCG entry state or values.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The WRITE_MGM command retrieves an MCG entry from the input mailbox and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * stores it in the multicast group table at the index specified in the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * command. Once the command has finished execution, the multicast group
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * table is updated. The old entry contents are lost.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mcg_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t member_cnt :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t protocol :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t next_gid_indx :26;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mgid_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mgid_l;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mcg_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t next_gid_indx :26;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t protocol :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t member_cnt :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mgid_h;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t mgid_l;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_mcg_en_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t member_cnt :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t protocol :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t next_gid_indx :26;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_present :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :31;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_id :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_cfi :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_prior :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_mcg_en_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t next_gid_indx :26;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t protocol :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t member_cnt :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :31;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_present :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_prior :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_cfi :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan_id :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* Multicast Group Member - QP List entries */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mcg_qp_list_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blk_lb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mcg_qp_list_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blk_lb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qpn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MCG_QPN_BLOCK_LB 0x40000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * ETHERNET ONLY Commands
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * The follow are new commands, used only for an Ethernet Port
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_mcast_fltr_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :15;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sfs :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else /* BIG ENDIAN */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_set_mcast_fltr_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sfs :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :15;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mac_lo;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* opmod for set_mcast_fltr */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_SET_MCAST_FLTR_CONF 0x0
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_SET_MCAST_FLTR_DIS 0x1
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_SET_MCAST_FLTR_EN 0x2
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * FC Command structures
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_config_fc_basic_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_p :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_v :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_m :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fexch_base_hi :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rfci_base :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_num_rfci :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fx_base_mpt_lo :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :17;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fx_base_mpt_hi :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe_prom_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv[58];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_config_fc_basic_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fexch_base_hi :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :12;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_m :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_v :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t n_p :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fx_base_mpt_hi :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :17;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fx_base_mpt_lo :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_num_rfci :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rfci_base :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcoe_prom_qpn :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv[58];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_FC_PORT_ENABLE 0x0
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_FC_PORT_DISABLE 0x1
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_FC_CONF_BASIC 0x0000
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_HW_FC_CONF_NPORT 0x0100
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_query_fc_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_max_rfci :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_max_fexch :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_max_nports :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :13;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv[62];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_query_fc_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :13;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_max_nports :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_max_fexch :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t log2_max_rfci :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv[62];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor/* ARM_RQ - limit water mark for srq & rq */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#ifdef _LITTLE_ENDIAN
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_arm_req_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t lwm :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#else
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_arm_req_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t lwm :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#endif
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Structure for getting the peformance counters from the HCA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef _LITTLE_ENDIAN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_sm_perfcntr_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t linkdown :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t linkerrrec :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t symerr :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cntrsel :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portsel :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmdiscard :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcvswrelay :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcvrem :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcv :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vl15drop :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t xsbuffovrun :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t locallinkint :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcconstr :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmconstr :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcdata;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmdata;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcpkts;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmpkts;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reserved;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmwait;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else /* BIG ENDIAN */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_sm_perfcntr_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portsel :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cntrsel :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t symerr :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t linkerrrec :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t linkdown :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcv :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcvrem :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcvswrelay :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmdiscard :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmconstr :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcconstr :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t locallinkint :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t xsbuffovrun :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vl15drop :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmdata;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcdata;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmpkts;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portrcpkts;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t portxmwait;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reserved;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala/*
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala * Structure for getting the extended peformance counters from the HCA
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala */
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala#ifdef _LITTLE_ENDIAN
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummalastruct hermon_hw_sm_extperfcntr_s {
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t rsvd;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t cntrsel :16;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t portsel :8;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t :8;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portxmdata;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portrcdata;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portxmpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portrcpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portunicastxmpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portunicastrcpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portmulticastxmpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portmulticastrcpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala};
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala#else /* BIG ENDIAN */
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummalastruct hermon_hw_sm_extperfcntr_s {
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t :8;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t portsel :8;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t cntrsel :16;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint32_t rsvd;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portxmdata;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portrcdata;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portxmpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portrcpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portunicastxmpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portunicastrcpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portmulticastxmpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala uint64_t portmulticastrcpkts;
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala};
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala#endif
30e01c537fd78d139ff463ccb3ef064e7190f9a8Ramaswamy Tummala
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon User Access Region (UAR)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * JBDB : writeup on the UAR for memfree
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * JBDB : writeup on the structures
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * UAR page
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * DB register
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * DB record
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * UCE
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * [es] and change it even further for hermon
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the whole UAR and doorbell record (dbr) approach is changed again
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * from arbel, and needs commenting
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * -- Tavor comment
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Tavor doorbells are each rung by writing to the doorbell registers that
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * form a User Access Region (UAR). A doorbell is a write-only hardware
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * register which enables passing information from software to hardware
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * with minimum software latency. A write operation from the host software
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * to these doorbell registers passes information about the HCA resources
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and initiates processing of the doorbell data. There are 6 types of
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * doorbells in Tavor.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "Send Doorbell" for synchronizing the attachment of a WQE (or a chain
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * of WQEs) to the send queue.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "RD Send Doorbell" (Same as above, except for RD QPs) is not supported.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "Receive Doorbell" for synchronizing the attachment of a WQE (or a chain
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * of WQEs) to the receive queue.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "CQ Doorbell" for updating the CQ consumer index and requesting
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * completion notifications.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "EQ Doorbell" for updating the EQ consumer index, arming interrupt
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * triggering, and disarming CQ notification requests.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "InfiniBlast" (which would have enabled access to the "InfiniBlast
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * buffer") is not supported.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note: The tavor_hw_uar_t below is the container for all of the various
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * doorbell types. Below we first define several structures which make up
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the contents of those doorbell types.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note also: The following structures are not #define'd with both little-
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * endian and big-endian definitions. This is because each doorbell type
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * is not directly accessed except through a single ddi_put64() operation
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * (see tavor_qp_send_doorbell, tavor_qp_recv_doorbell, tavor_cq_doorbell,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * or tavor_eq_doorbell)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Send doorbell register structure
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_send_db_reg_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t snd_q_num :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_send_db_reg_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QPSNDDB_QPN_SHIFT 0x8
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* Max descriptors per Hermon doorbell */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_QP_MAXDESC_PER_DB 256
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * CQ doorbell register structure
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_cq_db_reg_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmd_sn :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmd :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cqn :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* consumer cntr of last polled completion */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_ci :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_cq_db_reg_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQDB_CMD_SHIFT 0x18 /* dec 24 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQDB_CMDSN_SHIFT 0x1C /* dec 28 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQDB_NOTIFY_CQ 0x02
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQDB_NOTIFY_CQ_SOLICIT 0x01
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* Default value for use in NOTIFY_CQ doorbell */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQDB_DEFAULT_PARAM 0xFFFFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_guest_eq_ci_s { /* guest op eq consumer index */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t armed :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guestos_ci :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_guest_eq_ci_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * UAR page structure, containing all doorbell registers
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_uar_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[4];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_send_db_reg_t send;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv1[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_cq_db_reg_t cq;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv2[502]; /* next is at offset 0x800 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_guest_eq_ci_t g_eq0;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_guest_eq_ci_t g_eq1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_guest_eq_ci_t g_eq2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_hw_guest_eq_ci_t g_eq3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv3[504]; /* end of page */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * QP (RQ, SRQ) doorbell record-specific data
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note that this structure is NOT in ICM, but just kept in host memory
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and managed independently of PRM or other constraints. Also, though
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the qp/srq doorbell need to be only 4 bytes, it is 8 bytes in memory for
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * ease of management. Hermon defines its usage in the QP chapter.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_qp_db_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rcv_wqe_cntr :16; /* wqe_counter */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_qp_db_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * CQ (ARM and SET_CI) doorbell record-specific data
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * See comment above re: QP doorbell. This dbr is 8 bytes long, and its
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * usage is defined in PRM chapter on Completion Queues
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_hw_cq_arm_db_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t update_ci :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* sequence number of the doorbell ring % 4 */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmd_sn :2;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cmd :3; /* command */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_ci :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_hw_cq_db_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_DB_CMD_SOLICTED 0x01
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CQ_DB_CMD_NEXT 0x02
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Blue Flame (BF)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon has the ability to do a low-latency write of successive WQEs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * for the HCA. This utilizes part of the memory area behind the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * same BAR as the UAR page (see above) - half the area is devoted to
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * UAR pages, the other half to BlueFlame (though in fairness, the return
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information from QUERY_DEV_CAP should be consulted _in case_ they ever
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * decide to change it.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * We define the structures to access them below.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Send Work Queue Element (WQE)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * A Hermon Send WQE is built of the following segments, each of which is a
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * multiple of 16 bytes. Note: Each individual WQE may contain only a
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * subset of these segments described below (according to the operation type
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and transport type of the QP).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The first 16 bytes of ever WQE are formed from the "Ctrl" segment.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * This segment contains the address of the next WQE to be executed and the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information required in order to allocate the resources to execute the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * next WQE. The "Ctrl" part of this segment contains the control
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information required to execute the WQE, including the opcode and other
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * control information.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The "Datagram" segment contains address information required in order to
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * form a UD message.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The "Bind" segment contains the parameters required for a Bind Memory
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Window operation.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The "Remote Address" segment is present only in RDMA or Atomic WQEs and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * specifies remote virtual addresses and RKey, respectively. Length of
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the remote access is calculated from the scatter/gather list (for
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * RDMA-write/RDMA-read) or set to eight (for Atomic).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The "Atomic" segment is present only in Atomic WQEs and specifies
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Swap/Add and Compare data.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note: The following structures are not #define'd with both little-endian
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and big-endian definitions. This is because their individual fields are
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * not directly accessed except through macros defined below.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_ctrl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t owner :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t nec :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fceof :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :9;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rr :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t opcode :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cv :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fence :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ds :6; /* WQE size in octowords */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * XRC remote buffer if impl
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * XRC 23:0, or DMAC 47:32& 8 bits of pad
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t xrc_rem_buf :24;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t so :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t fcrc :1; /* fc crc calc */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t tcp_udp :1; /* Checksumming */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ip :1; /* Checksumming */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_gen :2; /* 00=no cqe, 11= gen cqe */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /* s-bit set means solicit bit in last packet */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t s :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t force_lb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor /*
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor * immediate OR invalidation key OR DMAC 31:0 depending
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t immediate :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_srq_wqe_next_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t next_wqe_idx :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsvd[3];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermonw_hw_fcp3_ctrl_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t owner :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t nec :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t opcode :5;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sit :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ds :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t seq_id :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t info :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t ls :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t so :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :3;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t cq_gen :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t param :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_fcp3_init_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t pe :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :23;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t csctl_prior :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t seqid_tx :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mtu :10;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rem_id :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t abort :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t op :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t org :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rem_exch :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t loc_exch_idx :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_fcmd_o_enet_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t stat_rate :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_lo :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_fcmd_o_ib_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t grh :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :7;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rlid :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t stat_rate :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hop_limit :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t sl :4;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t tclass :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t flow_label :20;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_hi;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rgid_lo;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :8;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rqp :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv[3];
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_FENCE_MASK 0x40
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_NOP 0x00
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_SND_INV 0x01
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_RDMAW 0x8
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_RDMAWI 0x9
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_SEND 0xA
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_SENDI 0xB
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_SEND_NOPCODE_INIT_AND_SEND 0xD
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_LSO 0xE
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_RDMAR 0x10
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_ATMCS 0x11
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_ATMFA 0x12
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_ATMCSE 0x14
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_ATMFAE 0x15
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_BIND 0x18
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_FRWR 0x19
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_LCL_INV 0x1B
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_NOPCODE_CONFIG 0x1F /* for ccq only */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_FCP_OPCODE_INIT_AND_SEND 0xD
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_FCP_OPCODE_INIT_FEXCH 0xC
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_SIGNALED_MASK 0x0000000C00000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_SOLICIT_MASK 0x0000000200000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SEND_IMMEDIATE_MASK 0x0000000100000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_ud_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor struct hermon_hw_udav_s ud_addr_v;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :8;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t dest_qp :24;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t qkey :32;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t vlan :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_hi :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dmac_lo :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SENDHDR_UD_AV_MASK 0xFFFFFFFFFFFFFFE0ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SENDHDR_UD_DQPN_MASK 0xFFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_bind_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ae :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rw :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t l_64 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :25;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t win_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t z_base :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :30;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t new_rkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t reg_lkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t addr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t len;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SENDHDR_BIND_ATOM 0x8000000000000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SENDHDR_BIND_WR 0x4000000000000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SENDHDR_BIND_RD 0x2000000000000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_snd_wqe_lso_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mss :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :6;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t hdr_size :10;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_remaddr_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t vaddr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_atomic_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t swap_add;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t compare;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_atomic_ext_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t swap_add;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t compare;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t swapmask;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t cmpmask;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_local_inv_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :6;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t atc_shoot :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :25;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :32;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv0;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :25;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t guest_id :7; /* for atc shootdown */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t p_addrh;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t p_addrl :23;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :9;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_snd_rem_addr_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t rem_vaddr;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rkey;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t rsrv;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_snd_wqe_frwr_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_atomic :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_write :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rem_read :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t loc_write :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t loc_read :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fbo_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t len_64 :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :2;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dif :1; /* FCoIB */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bind_en :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t blk_pg_mode :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mtt_rep :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t mkey; /* swapped w/ addrh relative to arbel */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t pbl_addr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t start_addr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t reg_len; /* w/ len_64 allows 65 bits of length */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t fbo :21;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :11;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t pge_blk_sz :21;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rsrv0[2];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylorstruct hermon_hw_snd_wqe_frwr_ext_s {
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dif_in_mem :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t dif_on_wire :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t valid_ref :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t valid_crc :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t repl_ref_tag :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t repl_app_tag :1;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t :10;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t app_mask :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t wire_app_tag :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mem_app_tag :16;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t wire_ref_tag_base;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t mem_ref_tag_base;
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor};
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon "MLX transport" Work Queue Element (WQE)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The format of the MLX WQE is similar to that of the Send WQE (above)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * with the following exceptions. MLX WQEs are used for sending MADs on
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * special QPs 0 and 1. Everything following the "Next/Ctrl" header
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * (defined below) consists of scatter-gather list entries. The contents
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * of these SGLs (also defined below) will be put on the wire exactly as
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * they appear in the buffers. In addition, the VCRC and the ICRC of each
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * sent packet can be modified by changing values in the following header
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * or in the payload of the packet itself.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_mlx_wqe_nextctrl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t owner :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :23;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t opcode :5; /* is 0x0A (send) for MLX */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :26;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ds :6; /* WQE size in octowords */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :14;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t vl15 :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t slr :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t max_srate :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t sl :4;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :3; /* FCoIB usage */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t icrc :1; /* 1==don't replace icrc fld */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cq_gen :2; /* 00= no cqe, 11==cqe */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t force_lb :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t rlid :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t :16;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_MLXHDR_VL15_MASK 0x0002000000000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_MLXHDR_SLR_MASK 0x0001000000000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_MLXHDR_SRATE_SHIFT 44
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_MLXHDR_SL_SHIFT 40
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_MLXHDR_SIGNALED_MASK 0x0000000800000000ull
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_MLXHDR_RLID_SHIFT 16
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon Receive Work Queue Element (WQE)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Unlike the Send WQE, the Receive WQE is built ONLY of 16-byte segments. A
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * "Next/Ctrl" segment is no longer needed, because of the fixed
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * receive queue stride (RQ.STRIDE). It contains just
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * some number of scatter list entries for the incoming message.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The format of the scatter-gather list entries is shown below. For
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Receive WQEs the "inline_data" field must be cleared (i.e. data segments
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * cannot contain inline data).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorstruct hermon_hw_wqe_sgl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t inline_data :1;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t byte_cnt :31;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lkey;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t addr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor};
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SGL_BYTE_CNT_MASK 0x7FFFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SGL_INLINE_MASK 0x80000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following defines are used when building descriptors for special QP
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * work requests (i.e. MLX transport WQEs). Note: Because Hermon MLX transport
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * requires the driver to build actual IB packet headers, we use these defines
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * for the most common fields in those headers.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_VL15_LVER 0xF0000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_VL0_LVER 0x00000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_IPVER_TC_FLOW 0x60000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_TC_SHIFT 20
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_DEF_PKEY 0xFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_GSI_QKEY 0x80010000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_UDSEND_OPCODE 0x64000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_MLX_DQPN_MASK 0xFFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The following macros are used for building each of the individual
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * segments that can make up a Hermon WQE. Note: We try not to use the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * structures (with their associated bitfields) here, instead opting to
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * build and put 64-bit or 32-bit chunks to the WQEs as appropriate,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * primarily because using the bitfields appears to force more read-modify-
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * write operations.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_UD - Builds Unreliable Datagram Segment
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_REMADDR - Builds Remote Address Segment using
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * RDMA info from the work request
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_RC_ATOMIC_REMADDR - Builds Remote Address Segment
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * for RC Atomic work requests
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_ATOMIC - Builds Atomic Segment using atomic
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * info from the work request
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_BIND - Builds the Bind Memory Window
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Segment using bind info from the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * work request
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_DATA_SEG - Builds the individual Data Segments
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * for Send, Receive, and MLX WQEs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_INLINE - Builds an "inline" Data Segment
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * (primarily for MLX transport)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_INLINE_ICRC - Also builds an "inline" Data Segment
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * (but used primarily in the ICRC
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * portion of MLX transport WQEs)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_LINKNEXT - Links the current WQE to the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * previous one
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_LINKFIRST - Links the first WQE on the current
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * chain to the previous WQE
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_MLX_LRH - Builds the inline LRH header for
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * MLX transport MADs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_MLX_GRH - Builds the inline GRH header for
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * MLX transport MADs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_MLX_BTH - Builds the inline BTH header for
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * MLX transport MADs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_WQE_BUILD_MLX_DETH - Builds the inline DETH header for
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * MLX transport MADs
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_BUILD_UD(qp, ud, ah, dest) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t *udav; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint64_t *)(ud); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor udav = (uint64_t *)(ah)->ah_udav; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = ntohll(udav[0]); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = ntohll(udav[1]); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[2] = ntohll(udav[2]); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[3] = ntohll(udav[3]); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[4] = ntohll((((uint64_t)((dest)->ud_dst_qpn & \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_WQE_SENDHDR_UD_DQPN_MASK) << 32) | \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (dest)->ud_qkey)); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[5] = 0; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_BUILD_LSO(qp, ds, mss, hdr_sz) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *(uint32_t *)(ds) = htonl(((mss) << 16) | hdr_sz);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_BUILD_REMADDR(qp, ra, wr_rdma) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint64_t *)(ra); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonll((wr_rdma)->rdma_raddr); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonll((uint64_t)(wr_rdma)->rdma_rkey << 32); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_RC_ATOMIC_REMADDR(qp, rc, wr) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint64_t *)(rc); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonll((wr)->wr.rc.rcwr.atomic->atom_raddr); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonll((uint64_t)(wr)->wr.rc.rcwr.atomic->atom_rkey << 32); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_ATOMIC(qp, at, wr_atom) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint64_t *)(at); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonll((wr_atom)->atom_arg2); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonll((wr_atom)->atom_arg1); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_BIND(qp, bn, wr_bind) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t bn0_tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ibt_bind_flags_t bind_flags; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint64_t *)(bn); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bind_flags = (wr_bind)->bind_flags; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bn0_tmp = (bind_flags & IBT_WR_BIND_ATOMIC) ? \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_WQE_SENDHDR_BIND_ATOM : 0; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bn0_tmp |= (bind_flags & IBT_WR_BIND_WRITE) ? \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_WQE_SENDHDR_BIND_WR : 0; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bn0_tmp |= (bind_flags & IBT_WR_BIND_READ) ? \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_WQE_SENDHDR_BIND_RD : 0; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonll(bn0_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonll(((uint64_t)(wr_bind)->bind_rkey_out << 32) | \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor (wr_bind)->bind_lkey); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[2] = htonll((wr_bind)->bind_va); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[3] = htonll((wr_bind)->bind_len); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_FRWR(qp, frwr_arg, pmr_arg) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor{ \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ibt_mr_flags_t flags; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ibt_lkey_t lkey; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ibt_wr_reg_pmr_t *pmr = (pmr_arg); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t *frwr64 = (uint64_t *)(frwr_arg); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor flags = pmr->pmr_flags; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((uint32_t *)frwr64)[0] = htonl(0x08000000 | \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((flags & IBT_MR_ENABLE_REMOTE_ATOMIC) ? 0x80000000 : 0) | \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((flags & IBT_MR_ENABLE_REMOTE_WRITE) ? 0x40000000 : 0) | \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((flags & IBT_MR_ENABLE_REMOTE_READ) ? 0x20000000 : 0) | \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((flags & IBT_MR_ENABLE_LOCAL_WRITE) ? 0x10000000 : 0) | \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((flags & IBT_MR_ENABLE_WINDOW_BIND) ? 0x00200000 : 0)); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor lkey = (pmr->pmr_lkey & ~0xff) | pmr->pmr_key; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor pmr->pmr_rkey = pmr->pmr_lkey = lkey; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((uint32_t *)frwr64)[1] = htonl(lkey); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor frwr64[1] = htonll(pmr->pmr_addr_list->p_laddr); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor frwr64[2] = htonll(pmr->pmr_iova); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor frwr64[3] = htonll(pmr->pmr_len); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((uint32_t *)frwr64)[8] = htonl(pmr->pmr_offset); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((uint32_t *)frwr64)[9] = htonl(pmr->pmr_buf_sz); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor frwr64[5] = 0; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor}
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_LI(qp, li_arg, wr_li) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor{ \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint64_t *li64 = (uint64_t *)(void *)(li_arg); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor li64[0] = 0; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((uint32_t *)li64)[2] = htonl((wr_li)->li_rkey); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor ((uint32_t *)li64)[3] = 0; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor li64[2] = 0; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor li64[3] = 0; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor}
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_FCP3_INIT(ds, fctl, cs_pri, seq_id, mtu, \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor dest_id, op, rem_exch, local_exch_idx) \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor{ \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor uint32_t *fc_init; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor fc_init = (uint32_t *)ds; \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor fc_init[1] = htonl((cs_pri) << 24 | (seq_id) << 16 | (mtu)); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor fc_init[2] = htonl((dest_id) << 8 | \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor IBT_FCTL_GET_ABORT_FIELD(fctl) << 6 | (op) << 3 | 0x2); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor fc_init[3] = htonl((rem_exch) << 16 | (local_exch_idx)); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor membar_producer(); /* fc_init[0] is where the stamping is */ \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor fc_init[0] = htonl(((fctl) & IBT_FCTL_PRIO) << 6); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor}
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_DATA_SEG_RECV(ds, sgl) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint64_t *)(ds); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor tmp[0] = htonll((((uint64_t)((sgl)->ds_len & \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_WQE_SGL_BYTE_CNT_MASK) << 32) | (sgl)->ds_key)); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor tmp[1] = htonll((sgl)->ds_va); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_DATA_SEG_SEND(ds, sgl) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((uint64_t *)(ds))[1] = htonll((sgl)->ds_va); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((uint32_t *)(ds))[1] = htonl((sgl)->ds_key); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor membar_producer(); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ((uint32_t *)(ds))[0] = \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor htonl((sgl)->ds_len & HERMON_WQE_SGL_BYTE_CNT_MASK); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_BUILD_INLINE(qp, ds, sz) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *(uint32_t *)(ds) = htonl(HERMON_WQE_SGL_INLINE_MASK | (sz))
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_INLINE_ICRC(qp, ds, sz, icrc) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint32_t *)(ds); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonl(icrc); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor membar_producer(); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor tmp[0] = htonl(HERMON_WQE_SGL_INLINE_MASK | (sz)); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SET_CTRL_SEGMENT(desc, desc_sz, fence, \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor imm, sol, sig, cksum, qp, strong, fccrc) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cntr_tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor /* do not set the first dword (owner/opcode) here */ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint32_t *)desc; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor cntr_tmp = (fence << 6) | desc_sz; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = ntohl(cntr_tmp); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor cntr_tmp = strong | fccrc | sol | sig | cksum; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[2] = ntohl(cntr_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[3] = ntohl(imm); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_SET_MLX_CTRL_SEGMENT(desc, desc_sz, sig, maxstat, \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lid, qp, sl) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t cntr_tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint32_t *)desc; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor cntr_tmp = htonl(tmp[0]); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor cntr_tmp &= 0x80000000; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor cntr_tmp |= HERMON_WQE_SEND_NOPCODE_SEND; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = ntohl(cntr_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = ntohl(desc_sz); \
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor cntr_tmp = (((maxstat << 4) | (sl & 0xff)) << 8) | sig; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if (qp->qp_is_special == HERMON_QP_SMI) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor cntr_tmp |= (0x02 << 16); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if (lid == IB_LID_PERMISSIVE) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor cntr_tmp |= (0x01 << 16); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[2] = ntohl(cntr_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[3] = ntohl((lid) << 16); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_WQE_BUILD_MLX_LRH(lrh, qp, udav, pktlen) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t lrh_tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint32_t *)(void *)(lrh); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if ((qp)->qp_is_special == HERMON_QP_SMI) { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp = HERMON_MLX_VL15_LVER; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } else { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp = HERMON_MLX_VL0_LVER | ((udav)->sl << 20); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if ((udav)->grh) { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp |= (IB_LRH_NEXT_HDR_GRH << 16); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } else { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp |= (IB_LRH_NEXT_HDR_BTH << 16); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp |= (udav)->rlid; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonl(lrh_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp = (pktlen) << 16; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if ((udav)->rlid == IB_LID_PERMISSIVE) { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp |= IB_LID_PERMISSIVE; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } else { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor lrh_tmp |= (udav)->ml_path; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonl(lrh_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Note: The GRH payload length, calculated below, is the overall packet
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * length (in bytes) minus LRH header and GRH headers.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Also note: Filling in the GIDs in the way we do below is helpful because
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * it avoids potential alignment restrictions and/or conflicts.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_MLX_GRH(state, grh, qp, udav, pktlen) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t grh_tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor ib_gid_t sgid; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint32_t *)(grh); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor grh_tmp = HERMON_MLX_IPVER_TC_FLOW; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor grh_tmp |= (udav)->tclass << HERMON_MLX_TC_SHIFT; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor grh_tmp |= (udav)->flow_label; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonl(grh_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor grh_tmp = (((pktlen) << 2) - (sizeof (ib_lrh_hdr_t) + \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor sizeof (ib_grh_t))) << 16; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor grh_tmp |= (IB_GRH_NEXT_HDR_BTH << 8); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor grh_tmp |= (udav)->hop_limit; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonl(grh_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor sgid.gid_prefix = (state)->hs_sn_prefix[(qp)->qp_portnum]; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor sgid.gid_guid = (state)->hs_guid[(qp)->qp_portnum] \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor [(udav)->mgid_index]; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bcopy(&sgid, &tmp[2], sizeof (ib_gid_t)); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bcopy(&(udav)->rgid_h, &tmp[6], sizeof (ib_gid_t)); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_MLX_BTH(state, bth, qp, wr) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t bth_tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint32_t *)(bth); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bth_tmp = HERMON_MLX_UDSEND_OPCODE; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if ((wr)->wr_flags & IBT_WR_SEND_SOLICIT) { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bth_tmp |= (IB_BTH_SOLICITED_EVENT_MASK << 16); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if (qp->qp_is_special == HERMON_QP_SMI) { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bth_tmp |= HERMON_MLX_DEF_PKEY; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } else { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor bth_tmp |= (state)->hs_pkey[(qp)->qp_portnum] \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor [(qp)->qp_pkeyindx]; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonl(bth_tmp); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonl((wr)->wr.ud.udwr_dest->ud_dst_qpn & \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_MLX_DQPN_MASK); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[2] = 0x0; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
17a2b317610f531d565bf4e940433aab2d9e6985Bill Taylor#define HERMON_WQE_BUILD_MLX_DETH(deth, qp) \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor{ \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t *tmp; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp = (uint32_t *)(deth); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor if ((qp)->qp_is_special == HERMON_QP_SMI) { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = 0x0; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = 0x0; \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } else { \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[0] = htonl(HERMON_MLX_GSI_QKEY); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor tmp[1] = htonl(0x1); \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor } \
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Flash interface:
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Below we have PCI config space space offsets for flash interface
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * access, offsets within Hermon CR space for accessing flash-specific
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information or settings, masks used for flash settings, and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * timeout values for flash operations.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_CFG_HWREV 8
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_CFG_ADDR 88
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_CFG_DATA 92
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_RESET_AMD 0xF0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_RESET_INTEL 0xFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_CPUMODE 0xF0150
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ADDR 0xF01A4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_DATA 0xF01A8
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_SEMA 0xF03FC
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_WRCONF_SEMA 0xF0380
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_DATA 0xF0040
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_MOD1 0xF004C
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_MOD0 0xF0050
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_DATACLEAR 0xF00D4
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_DATASET 0xF00DC
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_LOCK 0xF0048
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_UNLOCK_VAL 0xD42F
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_GPIO_PIN_ENABLE 0x1E000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_CPU_MASK 0xC0000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_CPU_SHIFT 30
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ADDR_MASK 0x0007FFFC
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_CMD_MASK 0xE0000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_BANK_MASK 0xFFF80000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_BUSY 0x40000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_WIP 0x01000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_READ_OP 0x00000001
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_USE_INSTR 0x00000040
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_NO_ADDR 0x00000020
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_NO_DATA 0x00000010
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_TRANS_SZ_4B 0x00000200
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_SECTOR_ERASE 0xD8
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_READ 0x03
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_PAGE_PROGRAM 0x02
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_READ_STATUS_REG 0x05
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_WRITE_ENABLE 0x06
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_READ_ESIGNATURE 0xAB
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_GW 0xF0400
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_ADDR 0xF0404
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_DATA 0xF0410
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_DATA4 0xF0414
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_DATA8 0xF0418
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_DATA12 0xF041C
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_ADDR_MASK 0x00FFFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_INSTR_PHASE_OFF 0x04
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_ADDR_PHASE_OFF 0x08
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_DATA_PHASE_OFF 0x10
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_ENABLE_OFF 0x2000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_CS_OFF 0x800
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_INSTR_OFF 0x10000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_INSTR_SHIFT 0x10
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_SPI_BOOT_ADDR_REG 0xF0000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_TIMEOUT_WRITE 300
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_TIMEOUT_ERASE 1000000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_TIMEOUT_GPIO_SEMA 1000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_TIMEOUT_CONFIG 50
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ICS_ERASE 0x20
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ICS_ERROR 0x3E
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ICS_WRITE 0x40
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ICS_STATUS 0x70
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ICS_READY 0x80
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ICS_CONFIRM 0xD0
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_HW_FLASH_ICS_READ 0xFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef __cplusplus
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif /* _SYS_IB_ADAPTERS_HERMON_HW_H */