blob: 127fb59efb84d3de0335bc679cbdb9a15e9a9e45 [file] [log] [blame]
/*
* Copyright (c) 2012, 2015-2019, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#ifndef _SW_API_H
#define _SW_API_H
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "sw.h"
#include "sw_ioctl.h"
#define SW_MAX_API_BUF 2048
#define SW_MAX_API_PARAM 12 /* cmd type + return value + ten parameters */
#define SW_MAX_PAYLOAD (SW_MAX_API_PARAM << 2) /* maximum payload size for netlink msg*/
#define SW_PARAM_IN 0x1
#define SW_PARAM_OUT 0x2
#define SW_PARAM_PTR 0x4
#define SW_API_DEF(ioctl, name) {ioctl, name}
#define SW_PARAM_DEF(ioctl, data, size, type, name) {ioctl, size, data, type}
typedef enum
{
SW_UINT8 = 1,
SW_INT8,
SW_UINT16,
SW_INT16,
SW_UINT32,
SW_INT32,
SW_UINT64,
SW_INT64,
SW_ENABLE,
SW_SPEED,
SW_DUPLEX,
SW_1QMODE,
SW_EGMODE,
SW_CAP,
SW_VLAN,
SW_LAN_WAN_CFG,
SW_PBMP,
SW_MIB,
SW_MIB_CNTR,
SW_XGMIB,
SW_MACADDR,
SW_FDBENTRY,
SW_MACLIMIT_CTRL,
SW_SCH,
SW_QOS,
SW_STORM,
SW_STP,
SW_LEAKY,
SW_MACCMD,
SW_FLOWTYPE,
SW_FLOWCMD,
SW_UINT_A,
SW_ACLRULE,
SW_LEDPATTERN,
SW_INVLAN,
SW_VLANPROPAGATION,
SW_VLANTRANSLATION,
SW_QINQMODE,
SW_QINQROLE,
SW_CABLESTATUS,
SW_CABLELEN,
SW_SSDK_CFG,
SW_HDRMODE,
SW_FDBOPRATION,
SW_PPPOE,
SW_PPPOE_LESS,
SW_ACL_UDF_TYPE,
SW_IP_HOSTENTRY,
SW_ARP_LEARNMODE,
SW_IP_GUARDMODE,
SW_NATENTRY,
SW_NAPTENTRY,
SW_FLOWENTRY,
SW_NAPTMODE,
SW_IP4ADDR,
SW_IP6ADDR,
SW_INTFMACENTRY,
SW_PUBADDRENTRY,
SW_INGPOLICER,
SW_EGSHAPER,
SW_ACLPOLICER,
SW_MACCONFIG,
SW_PHYCONFIG,
SW_DATA_MAX,
SW_FDBSMODE,
SW_FX100CONFIG,
SW_SGENTRY,
SW_SEC_MAC,
SW_SEC_IP,
SW_SEC_IP4,
SW_SEC_IP6,
SW_SEC_TCP,
SW_SEC_UDP,
SW_SEC_ICMP4,
SW_SEC_ICMP6,
SW_REMARKENTRY,
SW_SGINFOENTRY,
SW_DEFAULT_ROUTE_ENTRY,
SW_HOST_ROUTE_ENTRY,
SW_IP_WCMP_ENTRY,
SW_IP_RFS_IP4,
SW_IP_RFS_IP6,
SW_FLOWCOOKIE,
SW_FDB_RFS,
SW_FLOWRFS,
SW_CROSSOVER_MODE,
SW_CROSSOVER_STATUS,
SW_PREFER_MEDIUM,
SW_FIBER_MODE,
SW_INTERFACE_MODE,
SW_COUNTER_INFO,
SW_REG_DUMP,
SW_DBG_REG_DUMP,
SW_VSI_NEWADDR_LRN,
SW_VSI_STAMOVE,
SW_VSI_MEMBER,
SW_VSI_COUNTER,
SW_MTU_INFO,
SW_MRU_INFO,
SW_MTU_ENTRY,
SW_MRU_ENTRY,
SW_FRAME_MAX_SIZE,
SW_SOURCE_FILTER,
SW_ARP_SG_CFG,
SW_IP_NETWORK_ROUTE,
SW_IP_INTF,
SW_IP_VSI_INTF,
SW_IP_NEXTHOP,
SW_UCAST_QUEUE_MAP,
SW_UCAST_PRI_CLASS,
SW_MCAST_PRI_CLASS,
SW_IP_SG,
SW_IP_PUB,
SW_IP_PORTMAC,
SW_IP_MCMODE,
SW_FLOW_AGE,
SW_FLOW_CTRL,
SW_AC_CTRL,
SW_AC_OBJ,
SW_STATIC_THRESH,
SW_DYNAMIC_THRESH,
SW_GROUP_BUFFER,
SW_FLOW_ENTRY,
SW_FLOW_HOST,
SW_IP_GLOBAL,
SW_FLOW_GLOBAL,
SW_GLOBAL_QINQMODE,
SW_PT_QINQMODE,
SW_TPID,
SW_INGRESS_FILTER,
SW_PT_DEF_VID_EN,
SW_PT_VLAN_TAG,
SW_PT_VLAN_DIRECTION,
SW_PT_VLAN_TRANS_ADV_RULE,
SW_PT_VLAN_TRANS_ADV_ACTION,
SW_PT_VLAN_COUNTER,
SW_DEBUG_COUNTER_EN,
SW_TAG_PROPAGATION,
SW_EGRESS_DEFAULT_VID,
SW_EGRESS_MODE,
SW_CTRLPKT_PROFILE,
SW_SERVCODE_CONFIG,
SW_RSS_HASH_MODE,
SW_RSS_HASH_CONFIG,
SW_MIRR_ANALYSIS_CONFIG,
SW_MIRR_DIRECTION,
SW_L3_PARSER,
SW_L4_PARSER,
SW_EXP_CTRL,
SW_ACL_UDF_PKT_TYPE,
SW_PORTGROUP,
SW_PORTPRI,
SW_PORTREMARK,
SW_COSMAP,
SW_SCHEDULER,
SW_QUEUEBMP,
SW_BMSTHRESH,
SW_BMDTHRESH,
SW_BMPORTCNT,
SW_PORT_SHAPER_TOKEN_CONFIG,
SW_SHAPER_TOKEN_CONFIG,
SW_PORT_SHAPER_CONFIG,
SW_SHAPER_CONFIG,
SW_MODULE,
SW_FUNC_CTRL,
SW_QM_CNT,
SW_POLICER_COUNTER,
SW_POLICER_PORT_CONFIG,
SW_POLICER_ACL_CONFIG,
SW_POLICER_CMD_CONFIG,
SW_POLICER_GLOBAL_COUNTER,
SW_PHY_DUMP,
SW_RESOURCE_SCHE,
SW_PTP_CONFIG,
SW_PTP_REFERENCE_CLOCK,
SW_PTP_RX_TIMESTAMP_MODE,
SW_PTP_DIRECTION,
SW_PTP_PKT_INFO,
SW_PTP_TIME,
SW_PTP_GRANDMASTER_MODE,
SW_PTP_SECURITY,
SW_PTP_PPS_SIGNAL_CONTROL,
SW_PTP_ASYM_CORRECTION,
SW_PTP_OUTPUT_WAVEFORM,
SW_PTP_TOD_UART,
SW_PTP_ENHANCED_TS_ENGINE,
SW_PTP_TRIGGER,
SW_PTP_CAPTURE,
SW_PTP_INTERRUPT,
SW_PORT_EEE_CONFIG,
SW_SRC_FILTER_CONFIG,
SW_PORT_LOOPBACK_CONFIG,
SW_SFP_DATA,
SW_SFP_DEV_TYPE,
SW_SFP_TRANSC_CODE,
SW_SFP_RATE_ENCODE,
SW_SFP_LINK_LENGTH,
SW_SFP_VENDOR_INFO,
SW_SFP_LASER_WAVELENGTH,
SW_SFP_OPTION,
SW_SFP_CTRL_RATE,
SW_SFP_ENHANCED_CFG,
SW_SFP_DIAG_THRESHOLD,
SW_SFP_DIAG_CAL_CONST,
SW_SFP_DIAG_REALTIME,
SW_SFP_CTRL_STATUS,
SW_SFP_ALARM_WARN_FLAG,
SW_SFP_CCODE_TYPE,
} sw_data_type_e;
typedef struct
{
a_uint32_t api_id;
void *func;
} sw_api_func_t;
typedef struct
{
a_uint32_t api_id;
a_uint16_t data_size;
a_uint8_t data_type;
a_uint8_t param_type;
} sw_api_param_t;
typedef struct
{
a_uint32_t api_id;
sw_api_func_t *api_fp;
sw_api_param_t *api_pp;
a_uint32_t api_nr;
} sw_api_t;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _SW_API_H */