wrsm.h revision a83cadce5d3331b64803bfc641036cec23602c74
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * CDDL HEADER START
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * The contents of this file are subject to the terms of the
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * Common Development and Distribution License, Version 1.0 only
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * (the "License"). You may not use this file except in compliance
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * with the License.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * See the License for the specific language governing permissions
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * and limitations under the License.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * When distributing Covered Code, include this CDDL HEADER in each
2cf5a456da8bb3a2bbb695414d8304426e3bd277Andy Gimblett * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * If applicable, add the following below this CDDL HEADER, with the
2cf5a456da8bb3a2bbb695414d8304426e3bd277Andy Gimblett * fields enclosed by brackets "[]" replaced with your own identifying
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * information: Portions Copyright [yyyy] [name of copyright owner]
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * CDDL HEADER END
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * Copyright (c) 2001 by Sun Microsystems, Inc.
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * All rights reserved.
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#pragma ident "%Z%%M% %I% %E% SMI"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_SUBCLASS_NEW_NODE "new-node-route"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_SUBCLASS_LOST_NODE "lost-node-route"
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett * WRSM ioctl interface.
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/* Admin device ioctls */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CONTROLLERS (WRSM_IOC|0) /* # of registered rsmctlrs */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/* WCI device ioctls */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/* RSM-controller device ioctls */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/* WCI device ioctl to support link loopback testing */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_WCI_LOOPBACK_ON (WRSM_IOC|40) /* enable loopback link */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_WCI_LOOPBACK_OFF (WRSM_IOC|41) /* disable loopback link */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_WCI_LINKTEST (WRSM_IOC|42) /* test loopback link */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_WCI_CLAIM (WRSM_IOC|43) /* reserve WCI for testing */
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett#define WRSM_CTLR_MEM_LOOPBACK (WRSM_IOC|50) /* memory loopback test */
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett/* Mailbox ioctl sub-commands */
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett/* Plugin librsmwrsm.so ioctls to request small_puts of the driver */
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett/* Session ioctl sub-commands */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint32_t pattern; /* data to send via user_data (max 18 bits) */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint64_t link_error_count; /* copy of wci_sw_link_error_count */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint64_t link_status; /* copy of wci_sw_link_status */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint64_t link_control; /* copy of wci_sw_link_control */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * 8 pages are allocated, exported through the WCI, and imported from the
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett * local node. Each requested pattern is written then read in sequential
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * 64 byte chunks, starting at offset 0, until the entire page has been
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * read/written. (One pattern is completed across the entire page before
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * the next is started.) The starting physical address of the first
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * allocated page is stored in the paddr field of the arg parameter on
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * return from the ioctl.
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * Around each pattern, a barrier is opened and closed to detect network
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * errors. If a barrier close detects an error, the ioctl fails and errno
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * is set to ENETRESET.
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * If a read does not return the written pattern, the ioctl fails and errno
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * is set to EIO. The pattern encountering the error is stored in the
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett * pattern_error field of the arg parameter, and the local physical address
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett * of the exact 64 byte region with the error is stored in the paddr field.
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * Other errnos may be returned; these typically indicate problems in the
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett * OS or with the caller's input.
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_MAX_PATTERN 4 /* number of valid bits */
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett * There are 3 kstats associated with RSM:
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett * 1. A WCI and its links (status)
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett * 3. RSM controller (rsmpi_stat)
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/* There are two kstat modules */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/* The following are the names for the kstats */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * The name of the route kstat is defined dynamically
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * as "FM-node-name" -- this is a name of a remote node.
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * LC Link States
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimbletttypedef enum {
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett lc_down, /* paroli present, lasers are not on */
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett sc_wait_down, /* waiting for SC to take down link */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett sc_wait_up, /* waiting for SC to bring up link */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett sc_wait_errdown /* link down wait on sc due to error */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett/* event types for sys event daemon: syseventd */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimbletttypedef enum {
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett new_node_route, /* new or modified routes to get to remote host */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett lost_node_route, /* driver removes route to a remote host */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett new_config /* new configuration has occured */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett * Phys Link States
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimbletttypedef enum {
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett/* Names for fields in the status kstat */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_CONTROLLER_ID_NAMED "controller_id"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_ERRSTAT_INTERVAL "errstat_interval"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_INTERVALS_PER_LT "intervals_per_lt"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_REMOTE_CNODE_ID "remote_cnode_id_%d"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_REMOTE_WNODE "remote_wnode_id_%d"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_REMOTE_WCI_PORTID "remote_wci_portid_%d"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_REMOTE_LINKNUM "remote_linknum_%d"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_LC_LINK_STATE "LC_link_state_%d"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_PHYS_LINK_STATE "phys_link_state_%d"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_PHYS_LASER_ENABLE "laser enabled_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_PHYS_XMIT_ENABLE "transmit enable_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LINK_ERR_TAKEDOWNS "link_err_takedowns_%d"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSMKS_LAST_LINK_ERR_TAKEDOWNS "last_link_err_takedowns_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_MAX_LINK_ERR_TAKEDOWNS "max_link_err_takedowns_%d"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSMKS_AVG_LINK_ERR_TAKEDOWNS "avg_link_err_takedowns_%d"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSMKS_LINK_DISCON_TAKEDOWNS "link_disconnected_takedowns_%d"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSMKS_LINK_CFG_TAKEDOWNS "link_cfg_takedowns_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LINK_FAILED_BRINGUPS "link_failed_bringups_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LINK_INTERVAL_COUNT "link_interval_count_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LAST_LINK_ERRORS "last_link_errors_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_MAX_LINK_ERRORS "max_link_errors_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_AVG_LINK_ERRORS "avg_link_errors_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LAST_LT_LINK_ERRORS "last_lt_link_errors_%d"
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett#define WRSMKS_MAX_LT_LINK_ERRORS "max_lt_link_errors_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_AVG_LT_LINK_ERRORS "avg_lt_link_errors_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_AUTO_SHUTDOWN_EN "auto_shutdown_en_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_CLUSTER_ERROR_COUNT "cluster_error_count"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_UC_SRAM_ECC_ERROR "uc_sram_ecc_error"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_SRAM_ECC_ERRORS "sram_ecc_errors"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LAST_SRAM_ECC_ERRORS "last_sram_ecc_errors"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_MAX_SRAM_ECC_ERRORS "max_sram_ecc_errors"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_AVG_SRAM_ECC_ERRORS "avg_sram_ecc_errors"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t remote_cnode_id[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t remote_wnode_id[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t remote_wci_portid[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t remote_linknum[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t xmit_enable[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t link_err_takedowns[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t last_link_err_takedowns[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t max_link_err_takedowns[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t avg_link_err_takedowns[WRSM_LINKS_PER_WCI];
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett kstat_named_t link_disconnected_takedowns[WRSM_LINKS_PER_WCI];
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett kstat_named_t link_cfg_takedowns[WRSM_LINKS_PER_WCI];
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett kstat_named_t link_failed_bringups[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t link_interval_count[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t link_enabled[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t link_errors[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t last_link_errors[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t max_link_errors[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t avg_link_errors[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t last_lt_link_errors[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t max_lt_link_errors[WRSM_LINKS_PER_WCI];
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett kstat_named_t avg_lt_link_errors[WRSM_LINKS_PER_WCI];
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett kstat_named_t auto_shutdown_en[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * wrsm routes kstat names and struct
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_CONFIG_VERSION_NAMED "config-version"
typedef struct wrsm_route_kstat {
typedef struct wrsm_rsmpi_stat {
#ifdef __cplusplus