wrsm.h revision a83cadce5d3331b64803bfc641036cec23602c74
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett/*
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * CDDL HEADER START
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett *
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 *
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * or http://www.opensolaris.org/os/licensing.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * See the License for the specific language governing permissions
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett * and limitations under the License.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett *
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]
2cf5a456da8bb3a2bbb695414d8304426e3bd277Andy Gimblett *
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * CDDL HEADER END
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/*
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * Copyright (c) 2001 by Sun Microsystems, Inc.
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * All rights reserved.
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#ifndef _SYS_WRSM_H
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define _SYS_WRSM_H
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#pragma ident "%Z%%M% %I% %E% SMI"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
2cf5a456da8bb3a2bbb695414d8304426e3bd277Andy Gimblett#include <sys/kstat.h>
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#include <sys/wrsm_types.h>
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#ifdef __cplusplus
2cf5a456da8bb3a2bbb695414d8304426e3bd277Andy Gimblettextern "C" {
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#endif
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CLASS "wrsm"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_SUBCLASS_LINKUP "link-up"
2cf5a456da8bb3a2bbb695414d8304426e3bd277Andy Gimblett#define WRSM_SUBCLASS_LINKDOWN "link-down"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_SUBCLASS_NEW_NODE "new-node-route"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_SUBCLASS_LOST_NODE "lost-node-route"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_SUBCLASS_NEW_CONFIG "new-config"
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/*
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett * WRSM ioctl interface.
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_IOC ('W'<<8)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/* Admin device ioctls */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CONTROLLERS (WRSM_IOC|0) /* # of registered rsmctlrs */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_REPLACECFG (WRSM_IOC|1)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CHECKCFG (WRSM_IOC|2)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_INSTALLCFG (WRSM_IOC|3)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_INITIALCFG (WRSM_IOC|4)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_REMOVECFG (WRSM_IOC|5)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_GETCFG (WRSM_IOC|6)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_ENABLECFG (WRSM_IOC|7)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_STARTCFG (WRSM_IOC|8)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_STOPCFG (WRSM_IOC|9)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/* WCI device ioctls */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_LC_READCSR (WRSM_IOC|20)
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_LC_WRITECSR (WRSM_IOC|21)
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_LC_READCESR (WRSM_IOC|22)
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_LC_WRITECESR (WRSM_IOC|23)
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_LC_UPDATECMMU (WRSM_IOC|24)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_LC_READCMMU (WRSM_IOC|25)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/* RSM-controller device ioctls */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CTLR_PING (WRSM_IOC|30)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CTLR_MBOX (WRSM_IOC|31)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CTLR_SESS (WRSM_IOC|38)
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
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 */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_WCI_RELEASE (WRSM_IOC|44)
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_WCI_LINKUP (WRSM_IOC|45)
2cf5a456da8bb3a2bbb695414d8304426e3bd277Andy Gimblett#define WRSM_WCI_LINKDOWN (WRSM_IOC|46)
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett#define WRSM_CTLR_MEM_LOOPBACK (WRSM_IOC|50) /* memory loopback test */
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett/* Mailbox ioctl sub-commands */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_CTLR_UPLINK 1
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett#define WRSM_CTLR_DOWNLINK 2
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CTLR_SET_LED 3
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CTLR_ALLOC_SLICES 4
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CTLR_SET_SEPROM 5
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett/* Plugin librsmwrsm.so ioctls to request small_puts of the driver */
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett#define WRSM_CTLR_PLUGIN_SMALLPUT 7
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett#define WRSM_CTLR_PLUGIN_GETLOCALNODE 8
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett/* Session ioctl sub-commands */
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett#define WRSM_CTLR_SESS_START 1
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett#define WRSM_CTLR_SESS_END 2
aa0d5f8be9950e788884f7431cf4cb7bee74788cAndy Gimblett#define WRSM_CTLR_SESS_ENABLE 3
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett#define WRSM_CTLR_SESS_DISABLE 4
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett#define WRSM_CTLR_SESS_GET 5
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimbletttypedef struct wrsm_linktest_arg {
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett uint16_t link_num; /* link to test */
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_esr; /* copy of wci_link_esr */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint64_t sw_esr; /* copy of wci_sw_esr */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint64_t link_control; /* copy of wci_sw_link_control */
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett} wrsm_linktest_arg_t;
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett/*
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 *
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 *
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.
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett *
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * Other errnos may be returned; these typically indicate problems in the
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett * OS or with the caller's input.
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett *
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett */
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSM_SSO_PATTERN 0x01
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSM_SLOWMARCH_PATTERN 0x02
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett#define WRSM_FASTMARCH_PATTERN 0x04
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_XTALK_PATTERN 0x08
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_MAX_PATTERN 4 /* number of valid bits */
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimbletttypedef struct wrsm_memloopback_arg {
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint_t patterns;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett uint64_t paddr;
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett uint64_t error_pattern;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett unsigned char expected_data[64];
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett unsigned char actual_data[64];
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett} wrsm_memloopback_arg_t;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b34e5090387d45b3a35f88eaa23477a83d2a2962Andy Gimblett/*
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett * There are 3 kstats associated with RSM:
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett * 1. A WCI and its links (status)
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett * 2. Routes
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett * 3. RSM controller (rsmpi_stat)
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett */
fe9b4842ac7b63bc2a5042ae829759e2874acd05Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/* There are two kstat modules */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_KSTAT_WRSM "wrsm"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_KSTAT_WRSM_ROUTE "wrsm_route"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/* The following are the names for the kstats */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSM_KSTAT_STATUS "status"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/*
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.
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/*
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * LC Link States
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimbletttypedef enum {
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett lc_up, /* lasers have been established */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett lc_down, /* paroli present, lasers are not on */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett lc_not_there, /* no paroli is present */
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 */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett} wrsm_link_req_state_t;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett/* event types for sys event daemon: syseventd */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimbletttypedef enum {
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett link_up,
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett link_down,
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} wrsm_sys_event_t;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett/*
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett * Phys Link States
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimbletttypedef enum {
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett phys_off, /* link is off */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett phys_failover, /* failover mode */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett phys_seek, /* link is in seek state */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett phys_in_use /* link is in use */
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett} wrsm_phys_link_state_t;
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett/* Names for fields in the status kstat */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_WCI_VERSION_NAMED "wci_version"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_CONTROLLER_ID_NAMED "controller_id"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_PORTID "portid"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_ERROR_LIMIT "error_limit"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_ERRSTAT_INTERVAL "errstat_interval"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_INTERVALS_PER_LT "intervals_per_lt"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_AVG_WEIGHT "avg_weight"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_VALID_LINK "valid_link_%d"
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_STATE "link_state_%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_LINK_ENABLED "link_enabled_%d"
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LINK_ERRORS "link_errors_%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
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSM_KSTAT_NO_CTRLR -1
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LINK_PRESENT 1
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett#define WRSMKS_LINK_NOT_PRESENT 0
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimbletttypedef struct wrsm_status_kstat {
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t ks_version;
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t controller_id;
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t portid;
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t error_limit;
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett kstat_named_t errstat_interval;
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t intervals_per_lt;
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t avg_weight;
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t valid_link[WRSM_LINKS_PER_WCI];
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];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t state[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t laser[WRSM_LINKS_PER_WCI];
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t xmit_enable[WRSM_LINKS_PER_WCI];
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett kstat_named_t link_state[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 kstat_named_t cluster_error_count;
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett kstat_named_t uc_sram_ecc_error;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t sram_ecc_errors;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t last_sram_ecc_errors;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t max_sram_ecc_errors;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett kstat_named_t avg_sram_ecc_errors;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett} wrsm_status_kstat_t;
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett/*
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett * wrsm routes kstat names and struct
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett */
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_CONFIG_VERSION_NAMED "config-version"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_ROUTE_TYPE_NAMED "route-type"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_NUM_WCIS "num_wcis"
b6499fa6826cfdc288dc841be705aab6e4cc6c95Andy Gimblett#define WRSMKS_NUM_STRIPES "num_stripes"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_NUMCHANGES "num_changes"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_CNODEID "cnodeid"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_FMNODEID "fmnodeid"
9890f5274aa35d7b8c073cd5bbc3c4028b18dc7dAndy Gimblett#define WRSMKS_ROUTE_PORTID "route%d_portid"
#define WRSMKS_ROUTE_INSTANCE "route%d_instance"
#define WRSMKS_ROUTE_NUMHOPS "route%d_numhops"
#define WRSMKS_ROUTE_NUMLINKS "route%d_numlinks"
#define WRSMKS_ROUTE_LINKID "route%d_linkid%d"
#define WRSMKS_ROUTE_NODEID "route%d_nodeid%d"
#define WRSMKS_ROUTE_GNID "route%d_gnid%d"
typedef struct wrsm_route_kstat {
kstat_named_t version;
kstat_named_t type;
kstat_named_t num_wcis;
kstat_named_t num_stripes;
kstat_named_t num_changes;
kstat_named_t cnodeid;
kstat_named_t fmnodeid;
kstat_named_t portid[WRSM_MAX_WCIS_PER_STRIPE];
kstat_named_t instance[WRSM_MAX_WCIS_PER_STRIPE];
kstat_named_t numhops[WRSM_MAX_WCIS_PER_STRIPE];
kstat_named_t numlinks[WRSM_MAX_WCIS_PER_STRIPE];
kstat_named_t linkid[WRSM_MAX_WCIS_PER_STRIPE][WRSM_MAX_DNIDS];
kstat_named_t nodeid[WRSM_MAX_WCIS_PER_STRIPE][WRSM_MAX_DNIDS];
kstat_named_t gnid[WRSM_MAX_WCIS_PER_STRIPE][WRSM_MAX_DNIDS];
} wrsm_route_kstat_t;
/*
* rsmpi_stat kstat
* plus four wrsm specific fields
*/
#define WRSMKS_FREE_CMMU_ENTRIES "free_cmmu_entries"
#define WRSMKS_NUM_RECONFIGS "num_reconfigs"
#define WRSMKS_RSM_NUM_WCIS "num_wcis"
#define WRSMKS_RSM_AVAIL_WCIS "avail_wcis"
typedef struct wrsm_rsmpi_stat {
kstat_named_t num_reconfigs;
kstat_named_t num_wcis;
kstat_named_t avail_wcis;
kstat_named_t free_cmmu_entries;
kstat_named_t ctlr_state; /* required by rsmpi */
kstat_named_t addr; /* required by rsmpi */
kstat_named_t ex_memsegs; /* required by rsmpi */
kstat_named_t ex_memsegs_pub; /* required by rsmpi */
kstat_named_t ex_memsegs_con; /* required by rsmpi */
kstat_named_t bytes_bound; /* required by rsmpi */
kstat_named_t im_memsegs_con; /* required by rsmpi */
kstat_named_t sendqs; /* required by rmspi */
kstat_named_t handlers; /* required by rsmpi */
} wrsm_rsmpi_stat_t;
#ifdef __cplusplus
}
#endif
#endif /* _SYS_WRSM_H */