npi_mac.h revision d81011f02f402699c2c79353f81696ccee019b5c
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _NPI_MAC_H
#define _NPI_MAC_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <npi.h>
#include <nxge_mac_hw.h>
#include <nxge_mii.h>
typedef struct _npi_mac_addr {
typedef enum npi_mac_attr {
MAC_PORT_MODE = 0,
/* MAC Mode options */
typedef enum npi_mac_mode_e {
MAC_MII_MODE = 0,
typedef enum npi_mac_reset_e {
TX_MAC_RESET = 1,
typedef enum xmac_tx_iconfig_e {
typedef enum xmac_rx_iconfig_e {
typedef enum xmac_ctl_iconfig_e {
typedef enum bmac_tx_iconfig_e {
typedef enum bmac_rx_iconfig_e {
typedef enum bmac_ctl_iconfig_e {
typedef enum xmac_tx_config_e {
CFG_XMAC_TX = 0x00000001,
CFG_XMAC_TX_STRETCH_MODE = 0x00000002,
CFG_XMAC_VAR_IPG = 0x00000004,
CFG_XMAC_TX_CRC = 0x00000008,
CFG_XMAC_TX_ALL = 0x0000000F
typedef enum xmac_rx_config_e {
CFG_XMAC_RX = 0x00000001,
CFG_XMAC_RX_PROMISCUOUS = 0x00000002,
CFG_XMAC_RX_PROMISCUOUSGROUP = 0x00000004,
CFG_XMAC_RX_ERRCHK = 0x00000008,
CFG_XMAC_RX_CRC_CHK = 0x00000010,
CFG_XMAC_RX_RESV_MULTICAST = 0x00000020,
CFG_XMAC_RX_CODE_VIO_CHK = 0x00000040,
CFG_XMAC_RX_HASH_FILTER = 0x00000080,
CFG_XMAC_RX_ADDR_FILTER = 0x00000100,
CFG_XMAC_RX_STRIP_CRC = 0x00000200,
CFG_XMAC_RX_PAUSE = 0x00000400,
CFG_XMAC_RX_PASS_FC_FRAME = 0x00000800,
CFG_XMAC_RX_MAC2IPP_PKT_CNT = 0x00001000,
CFG_XMAC_RX_ALL = 0x00001FFF
typedef enum xmac_xif_config_e {
CFG_XMAC_XIF_LED_FORCE = 0x00000001,
CFG_XMAC_XIF_LED_POLARITY = 0x00000002,
CFG_XMAC_XIF_SEL_POR_CLK_SRC = 0x00000004,
CFG_XMAC_XIF_TX_OUTPUT = 0x00000008,
CFG_XMAC_XIF_LOOPBACK = 0x00000010,
CFG_XMAC_XIF_LFS = 0x00000020,
CFG_XMAC_XIF_XPCS_BYPASS = 0x00000040,
CFG_XMAC_XIF_1G_PCS_BYPASS = 0x00000080,
CFG_XMAC_XIF_SEL_CLK_25MHZ = 0x00000100,
CFG_XMAC_XIF_ALL = 0x000001FF
typedef enum bmac_tx_config_e {
CFG_BMAC_TX = 0x00000001,
CFG_BMAC_TX_CRC = 0x00000002,
CFG_BMAC_TX_ALL = 0x00000003
typedef enum bmac_rx_config_e {
CFG_BMAC_RX = 0x00000001,
CFG_BMAC_RX_STRIP_PAD = 0x00000002,
CFG_BMAC_RX_STRIP_CRC = 0x00000004,
CFG_BMAC_RX_PROMISCUOUS = 0x00000008,
CFG_BMAC_RX_PROMISCUOUSGROUP = 0x00000010,
CFG_BMAC_RX_HASH_FILTER = 0x00000020,
CFG_BMAC_RX_ADDR_FILTER = 0x00000040,
CFG_BMAC_RX_DISCARD_ON_ERR = 0x00000080,
CFG_BMAC_RX_ALL = 0x000000FF
typedef enum bmac_xif_config_e {
CFG_BMAC_XIF_TX_OUTPUT = 0x00000001,
CFG_BMAC_XIF_LOOPBACK = 0x00000002,
CFG_BMAC_XIF_GMII_MODE = 0x00000008,
CFG_BMAC_XIF_LINKLED = 0x00000020,
CFG_BMAC_XIF_LED_POLARITY = 0x00000040,
CFG_BMAC_XIF_SEL_CLK_25MHZ = 0x00000080,
CFG_BMAC_XIF_ALL = 0x000000FF
typedef enum xmac_ipg_e {
XGMII_IPG_12_15 = 0,
} xmac_ipg_t;
typedef enum xpcs_reg_e {
} xpcs_reg_t;
#define IS_XMAC_PORT_NUM_VALID(portn)\
#define IS_BMAC_PORT_NUM_VALID(portn)\
/*
* When MIF_REG_RD is called inside a poll loop and if the poll takes
* very long time to complete, then each poll will print a rt_show_reg
* result on the screen and the rtrace "register show" result may
* become too messy to read. The solution is to call MIF_REG_RD_NO_SHOW
* instead of MIF_REG_RD in a polling loop. When COSIM or REG_SHOW is
* not defined, this macro is the same as MIF_REG_RD. When both COSIM
* and REG_SHOW are defined, this macro calls NXGE_REG_RD64_NO_SHOW
* which does not call rt_show_reg.
*/
#else
/* If not COSIM or REG_SHOW, still show */
#endif
}
}
}
}
(npi_attr_t *)&p)) == NPI_SUCCESS) {\
}\
}
(npi_attr_t *)&p)) == NPI_SUCCESS) {\
}\
}
(npi_attr_t *)&p)) == NPI_SUCCESS) {\
}\
}
(npi_attr_t *)&p)) == NPI_SUCCESS) {\
}\
}
/* MAC specific errors */
#define MAC_PORT_ATTR_INVALID 0x50
#define MAC_RESET_MODE_INVALID 0x51
#define MAC_HASHTAB_ENTRY_INVALID 0x52
#define MAC_HOSTINFO_ENTRY_INVALID 0x53
#define MAC_ALT_ADDR_ENTRY_INVALID 0x54
/* MAC error return macros */
#define NPI_MAC_HASHTAB_ENTRY_INVALID(portn)\
((MAC_BLK_ID << NPI_BLOCK_ID_SHIFT) |\
#define NPI_MAC_HOSTINFO_ENTRY_INVALID(portn)\
((MAC_BLK_ID << NPI_BLOCK_ID_SHIFT) |\
#define NPI_MAC_ALT_ADDR_ENTRY_INVALID(portn)\
((MAC_BLK_ID << NPI_BLOCK_ID_SHIFT) |\
#define NPI_MAC_PORT_ATTR_INVALID(portn)\
((MAC_BLK_ID << NPI_BLOCK_ID_SHIFT) |\
#define NPI_MAC_RESET_MODE_INVALID(portn)\
((MAC_BLK_ID << NPI_BLOCK_ID_SHIFT) |\
/* library functions prototypes */
/* general mac functions */
hostinfo_t *);
uint8_t);
uint8_t);
npi_mac_addr_t *);
npi_attr_t *);
boolean_t *);
boolean_t *);
uint16_t *);
uint16_t);
/* xmac functions */
uint8_t);
/* bmac functions */
uint16_t);
/* MIF common functions */
#ifdef __cplusplus
}
#endif
#endif /* _NPI_MAC_H */