| /* |
| * 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 */ |