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/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Use is subject to license terms.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifndef _SYS_IB_ADAPTERS_HERMON_IOCTL_H
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define _SYS_IB_ADAPTERS_HERMON_IOCTL_H
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#include <sys/cred.h>
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * hermon_ioctl.h
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Contains all of the prototypes, #defines, and structures necessary
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * for all ioctl access into the driver. This includes everything
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * necessary for updating firmware, accessing the hermon flash device,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * providing interfaces for VTS.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef __cplusplus
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern "C" {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorint hermon_ioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor int *rvalp);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Enumerated type for the Hermon ioctl() interface types
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * originally, to make a unique set of IOCTLs but now share the actual
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * value w/ tavor & arbel (memfree) to make VTS consistent & simpler
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * #define HERMON_IOCTL ('h' << 8)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_IOCTL ('t' << 8)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef DEBUG
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef enum {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_READ = HERMON_IOCTL | 0x00,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_WRITE = HERMON_IOCTL | 0x01,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_ERASE = HERMON_IOCTL | 0x02,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_INIT = HERMON_IOCTL | 0x03,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_FINI = HERMON_IOCTL | 0x04,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_REG_WRITE = HERMON_IOCTL | 0x10,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_REG_READ = HERMON_IOCTL | 0x11,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_LOOPBACK = HERMON_IOCTL | 0x20,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_INFO = HERMON_IOCTL | 0x21,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_PORTS = HERMON_IOCTL | 0x22,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_DDR_READ = HERMON_IOCTL | 0x23,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_WRITE_BOOT_ADDR = HERMON_IOCTL | 0x24
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_ioctl_enum_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#else
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef enum {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_READ = HERMON_IOCTL | 0x00,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_WRITE = HERMON_IOCTL | 0x01,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_ERASE = HERMON_IOCTL | 0x02,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_INIT = HERMON_IOCTL | 0x03,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_FLASH_FINI = HERMON_IOCTL | 0x04,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_LOOPBACK = HERMON_IOCTL | 0x20,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_INFO = HERMON_IOCTL | 0x21,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_PORTS = HERMON_IOCTL | 0x22,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_DDR_READ = HERMON_IOCTL | 0x23,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_IOCTL_WRITE_BOOT_ADDR = HERMON_IOCTL | 0x24
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_ioctl_enum_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif /* DEBUG */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Specific operations for each of the flash ioctl interfaces
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_READ_SECTOR 0x01
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_READ_QUADLET 0x02
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_WRITE_SECTOR 0x01
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_WRITE_BYTE 0x02
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_ERASE_SECTOR 0x01
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_ERASE_CHIP 0x02
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Default values for the flash (overridden by CFI info, if available)
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_SECTOR_SZ_DEFAULT 0x10000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_DEVICE_SZ_DEFAULT 0x400000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_SPI_LOG_SECTOR_SIZE 0x10
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_SPI_SECTOR_SIZE 0x10000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_SPI_DEVICE_SIZE 0x200000
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * CFI (Common Flash Interface) initialization
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_CFI_INIT 0x98
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* For compatability */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_CFI_SIZE 0x4C
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_CFI_SIZE_QUADLET HERMON_FLASH_CFI_SIZE >> 2
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Expand CFI data size to support the Intel Expanded Command Set.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CFI_INFO_SIZE 0x100
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_CFI_INFO_QSIZE HERMON_CFI_INFO_SIZE >> 2
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Mellanox uses two different parallel Flash devices for Hermon
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HCAs: the AMD AM29LV033C and the Intel 28F320J3C. The AM29LV033C
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * utilizes the AMD Standard CFI command set while the 28F320J3C
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * utliizes the Intel Extended CFI command set. Additionally, serial
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * SPI flash is supported, such as the STMicroelectronics M25Pxx family
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * of SPI Flash parts.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_INTEL_CMDSET 0x0001
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_AMD_CMDSET 0x0002
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_SPI_CMDSET 0x0003
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_FLASH_UNKNOWN_CMDSET 0XFFFF
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The firmware version structure used in HERMON_IOCTL_INFO and
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_IOCTL_FLASH_INIT interfaces. The structure consists of major,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * minor and subminor portions for firmware revision number.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_fw_info_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t afi_maj;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t afi_min;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t afi_sub;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_fw_info_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * structure used for read, write, and erase flash routines
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Supported fields for each type:
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * read_sector: af_type, af_sector, af_sector_num
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * read_quadlet: af_type, af_addr, af_quadlet
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * write_sector: af_type, af_sector, af_sector_num
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * write_byte: af_type, af_addr, af_byte
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * erase_sector: af_type, af_sector_num
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * erase_chip: af_type
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The 'tf_sector' field must point to a sector sized portion of memory, as
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * all sector read/write ioctl calls are done as one complete sector only.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_flash_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t af_type;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor caddr_t af_sector;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t af_sector_num;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t af_addr;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t af_quadlet;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint8_t af_byte;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_flash_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/* Structure used for flash init interface */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_flash_init_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t af_hwrev;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_fw_info_ioctl_t af_fwrev;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t af_cfi_info[HERMON_FLASH_CFI_SIZE_QUADLET];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor char af_hwpn[64];
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor int af_pn_len;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_flash_init_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The structure used for Hermon register read/write interface.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The "trg_reg_set" field indicates the register set (the BAR) from which
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the access is desired (HERMON_CMD_BAR, HERMON_UAR_BAR, or HERMON_DDR_BAR).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The "trg_offset" and "trg_data" fields indicate the register and either
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the destination or source of the data to be read/written.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_reg_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t arg_reg_set;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t arg_offset;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t arg_data;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_reg_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hermon VTS IOCTL revision number. This revision number is currently
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * expected to be passed in all Hermon VTS ioctl interfaces.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define HERMON_VTS_IOCTL_REVISION 1
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The port structure used in HERMON_IOCTL_PORTS interface.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Each port has an associated guid, port number, and IBA-defined
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * logical port state.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_stat_port_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint64_t asp_guid;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t asp_port_num;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t asp_state;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_stat_port_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The structure used for the HERMON_IOCTL_PORTS interface.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The number of ports and a buffer large enough for 256
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * port structures will be supplied by the caller. The
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * revision should be set to HERMON_VTS_IOCTL_REVISION. The
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * number of ports ("tp_num_ports") is always returned,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * regardless of success or failure otherwise.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_ports_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t ap_revision;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_stat_port_ioctl_t *ap_ports;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint8_t ap_num_ports;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_ports_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * These are the status codes that can be returned by the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HERMON_IOCTL_LOOPBACK test. They are returned as part of
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the hermon_loopback_ioctl_t struct (below).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef enum {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_SUCCESS,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_INVALID_REVISION,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_INVALID_PORT,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_PROT_DOMAIN_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_SEND_BUF_INVALID,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_SEND_BUF_MEM_REGION_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_SEND_BUF_COPY_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_RECV_BUF_MEM_REGION_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_XMIT_SEND_CQ_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_XMIT_RECV_CQ_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_XMIT_QP_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_RECV_SEND_CQ_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_RECV_RECV_CQ_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_RECV_QP_ALLOC_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_XMIT_QP_INIT_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_XMIT_QP_RTR_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_XMIT_QP_RTS_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_RECV_QP_INIT_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_RECV_QP_RTR_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_RECV_QP_RTS_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_WQE_POST_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_CQ_POLL_FAIL,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor HERMON_LOOPBACK_SEND_RECV_COMPARE_FAIL
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_loopback_error_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The structure used for HERMON_IOCTL_LOOPBACK interface.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * It defines the port number, number of iterations, wait duration,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * number of retries and the data pattern to be sent. Upon return,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * the driver will supply the number of iterations succesfully
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * completed, and the kind of failure (if any, along with the failing
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * data pattern).
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_loopback_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t alb_revision;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor caddr_t alb_send_buf;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor caddr_t alb_fail_buf;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t alb_buf_sz;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t alb_num_iter;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t alb_pass_done;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t alb_timeout;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_loopback_error_t alb_error_type;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint8_t alb_port_num;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint8_t alb_num_retry;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_loopback_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The structure used for the HERMON_IOCTL_INFO interface. It
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * includes firmware version, hardware version, accessable
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * range of adapter DDR memory, and adapter flash memory size.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef struct hermon_info_ioctl_s {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t ai_revision;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor hermon_fw_info_ioctl_t ai_fw_rev;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint32_t ai_hw_rev;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t ai_flash_sz;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t rsvd1; /* DDR start */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor uint_t rsvd2; /* DDR end */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} hermon_info_ioctl_t;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef __cplusplus
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif /* _SYS_IB_ADAPTERS_HERMON_IOCTL_H */