| /* SPDX-License-Identifier: BSD-3-Clause */ |
| |
| /** |
| * \file lwiplib.h |
| * |
| * \brief lwip abstraction layer related declarations |
| */ |
| /* |
| * Copyright (c) 2001-2004 Swedish Institute of Computer Science. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without modification, |
| * are permitted provided that the following conditions are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * 3. The name of the author may not be used to endorse or promote products |
| * derived from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT |
| * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT |
| * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING |
| * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY |
| * OF SUCH DAMAGE. |
| * |
| * This file is part of the lwIP TCP/IP stack. |
| * |
| * Author: Adam Dunkels <adam@sics.se> |
| * |
| */ |
| |
| /* Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ |
| * ALL RIGHTS RESERVED |
| */ |
| #ifndef __LWIPLIB_H__ |
| #define __LWIPLIB_H__ |
| |
| #include <lwip/opt.h> |
| |
| /* Ensure that AUTOIP COOP option is configured correctly.*/ |
| #undef LWIP_DHCP_AUTOIP_COOP |
| #define LWIP_DHCP_AUTOIP_COOP ((LWIP_DHCP) && (LWIP_AUTOIP)) |
| |
| #include <lwip/api.h> |
| #include <lwip/netifapi.h> |
| #include <lwip/tcp.h> |
| #include <lwip/udp.h> |
| #include <lwip/tcpip.h> |
| #include <lwip/sockets.h> |
| #include <lwip/mem.h> |
| #include <lwip/stats.h> |
| |
| /****************************************************************************** |
| ** Macro Definitions |
| ******************************************************************************/ |
| #define IPADDR_USE_STATIC (0) |
| #define IPADDR_USE_DHCP (1) |
| #define IPADDR_USE_AUTOIP (2) |
| |
| #ifndef LEN_MAC_ADDRESS |
| #define LEN_MAC_ADDRESS (6) |
| #endif |
| |
| #define MAX_ALE_ENTRIES (1024) |
| #define ALE_ENTRY_NUM_WORDS (3) |
| |
| #define ERR_PASS (0) |
| #define ERR_FAIL (-1) |
| #define ERR_INVAL (-2) |
| |
| #define MIN_SLV_PORT (1) |
| #define MIN_AUTONEG (0) |
| #define MIN_PHY_CONFIG (1) |
| #define MIN_SPEED (0) |
| #define MIN_DUPLEX (0) |
| |
| #define MAX_SLV_PORT (2) |
| #define MAX_AUTONEG (1) |
| #define MAX_PHY_CONFIG (0x3F) |
| #define MAX_SPEED (2) |
| #define MAX_DUPLEX (1) |
| |
| #define ERR_SLV_PORT (-25) |
| #define ERR_AUTONEG (-26) |
| #define ERR_PHY_CONFIG (-27) |
| #define ERR_SPEED (-28) |
| #define ERR_DUPLEX (-29) |
| |
| #ifdef CPSW_SWITCH_CONFIG |
| #define MIN_VLANAWARE (0) |
| #define MIN_ALE_VLANAWARE (0) |
| #define MIN_ALE_ENTRY_IDX (0) |
| #define MIN_VLAN_UNTAG (0) |
| #define MIN_VLAN_MCAST_UNREG (0) |
| #define MIN_VLAN_MCAST_REG (0) |
| #define MIN_MCAST_FWD_STATE (0) |
| #define MIN_SUPER (0) |
| #define MIN_PORT_MASK (0) |
| #define MIN_UCAST_FLAGS (0) |
| #define MIN_PORT (0) |
| #define MIN_VLANID (0) |
| #define MIN_CFI (0) |
| #define MIN_PRI (0) |
| #define MIN_UNKNOWN_VLAN_TYPE (1) |
| #define MIN_PORT_STATE (0) |
| #define MIN_ADDR_TYPE (1) |
| #define MIN_ENABLE (0) |
| #define MIN_DIRECTION (0) |
| #define MIN_LIMIT (0) |
| #define MIN_UNKNOWN_VLAN (1) |
| #define MIN_MAC_AUTH (0) |
| |
| #define MAX_VLANAWARE (1) |
| #define MAX_ALE_VLANAWARE (1) |
| #define MAX_ALE_ENTRY_IDX (1023) |
| #define MAX_VLAN_UNTAG (7) |
| #define MAX_VLAN_MCAST_UNREG (7) |
| #define MAX_VLAN_MCAST_REG (7) |
| #define MAX_MCAST_FWD_STATE (3) |
| #define MAX_SUPER (1) |
| #define MAX_PORT_MASK (7) |
| #define MAX_UCAST_FLAGS (3) |
| #define MAX_PORT (2) |
| #define MAX_VLANID (4095) |
| #define MAX_CFI (1) |
| #define MAX_PRI (7) |
| #define MAX_UNKNOWN_VLAN_TYPE (4) |
| #define MAX_PORT_STATE (3) |
| #define MAX_ADDR_TYPE (3) |
| #define MAX_ENABLE (1) |
| #define MAX_DIRECTION (1) |
| #define MAX_LIMIT (255) |
| #define MAX_UNKNOWN_VLAN (4) |
| #define MAX_MAC_AUTH (1) |
| |
| #define ERR_ADDR (-3) |
| #define ERR_VLANID (-4) |
| #define ERR_PORT_MASK (-5) |
| #define ERR_SUPER (-6) |
| #define ERR_MCAST_FWD_STATE (-7) |
| #define ERR_PORT (-8) |
| #define ERR_UCAST_FLAGS (-9) |
| #define ERR_VLAN_MCAST_REG (-10) |
| #define ERR_VLAN_MCAST_UNREG (-11) |
| #define ERR_VLAN_MCAST_UNTAG (-12) |
| #define ERR_ALE_ENTRY_IDX (-13) |
| #define ERR_VLANAWARE (-14) |
| #define ERR_ALE_VLANAWARE (-15) |
| #define ERR_CFI (-16) |
| #define ERR_PRI (-17) |
| #define ERR_ENABLE (-18) |
| #define ERR_DIRECTION (-19) |
| #define ERR_LIMIT (-20) |
| #define ERR_UNKNOWN_VLAN (-21) |
| #define ERR_MAC_AUTH (-22) |
| #define ERR_ADDR_TYPE (-23) |
| #define ERR_PORT_STATE (-24) |
| #endif |
| |
| #ifdef CPSW_SWITCH_CONFIG |
| enum { |
| ADDR_TYPE_BROADCAST = 1, |
| ADDR_TYPE_MULTICAST, |
| ADDR_TYPE_UNICAST, |
| }; |
| |
| enum { |
| ALE_PORT_UNTAGGED_EGRESS = 1, |
| ALE_PORT_UNKNOWN_REG_MCAST_FLOOD, |
| ALE_PORT_UNKNOWN_UNREG_MCAST_FLOOD, |
| ALE_PORT_UNKNOWN_VLAN_MEMBER, |
| }; |
| #endif |
| |
| enum { |
| CONFIG_SWITCH_INVALID = 0, |
| #ifdef CPSW_SWITCH_CONFIG |
| CONFIG_SWITCH_ADD_MULTICAST, |
| CONFIG_SWITCH_ADD_UNICAST, |
| CONFIG_SWITCH_ADD_OUI, |
| CONFIG_SWITCH_FIND_ADDR, |
| CONFIG_SWITCH_DEL_MULTICAST, |
| CONFIG_SWITCH_DEL_UNICAST, |
| CONFIG_SWITCH_ADD_VLAN, |
| CONFIG_SWITCH_FIND_VLAN, |
| CONFIG_SWITCH_DEL_VLAN, |
| CONFIG_SWITCH_PORT_VLAN_CONFIG, |
| CONFIG_SWITCH_AGEOUT, |
| CONFIG_SWITCH_DUMP, |
| CONFIG_SWITCH_CONFIG_DUMP, |
| CONFIG_SWITCH_VLANAWARE, |
| CONFIG_SWITCH_RATELIMIT, |
| CONFIG_SWITCH_VID_INGRESS_CHECK, |
| CONFIG_SWITCH_ADD_UNKNOWN_VLAN_INFO, |
| CONFIG_SWITCH_MACAUTH, |
| CONFIG_SWITCH_PORT_STATE, |
| #endif |
| CONFIG_SWITCH_SET_PORT_CONFIG, |
| }; |
| |
| #ifdef CPSW_SWITCH_CONFIG |
| typedef struct cpsw_switch_param { |
| u32_t port_num; |
| u32_t port_mask; |
| u32_t vid; /* VLAN identifier */ |
| u32_t prio_port; /* port priority 0 -7 */ |
| u32_t cfi_port; /* port CFI 0 /1 */ |
| u32_t unreg_multi; /* unreg multicast Egress Ports */ |
| u32_t reg_multi; /* register multicast Egress ports */ |
| u32_t untag_port; /* Untag ports */ |
| u8_t addr[LEN_MAC_ADDRESS]; /* Ethernet Address */ |
| u32_t super; |
| u32_t fwd_state; |
| u32_t ucast_flags; |
| u32_t ucast_type; |
| u32_t blocked; |
| u32_t secure; |
| u32_t ageable; |
| u32_t ale_tbl_index; /* if 1 print ale table */ |
| u32_t vlan_aware; |
| u32_t drop_packet; |
| u32_t direction; /* Tx -1 / Rx - 0 */ |
| u32_t addr_type; /* Address type BroadMulti/Uni cast */ |
| u32_t limit; /* multicast/broadcast limit */ |
| u32_t vlan_ingress_check; |
| u32_t port_state; |
| u32_t drop_untagged; |
| u32_t enable; /* 1-enable/0-Disable */ |
| u32_t unknown_vlan; |
| u32_t mac_auth; |
| } CPSW_SW_PARAM_IF; |
| #endif |
| |
| typedef struct cpsw_phy_param { |
| u32_t slv_port_num; |
| u32_t autoneg; |
| u32_t config; |
| u32_t speed; |
| u32_t duplex; |
| } CPSW_PHY_PARAM_IF; |
| |
| typedef struct cpsw_config { |
| u32_t cmd; /* API to be invoked by the kernel driver */ |
| u32_t cpsw_inst; |
| struct cpsw_phy_param *phy_param; |
| #ifdef CPSW_SWITCH_CONFIG |
| struct cpsw_switch_param *switch_param; |
| u32_t buf[MAX_ALE_ENTRIES][ALE_ENTRY_NUM_WORDS]; /* Buffer for Ale Dump */ |
| u32_t ale_entry[ALE_ENTRY_NUM_WORDS]; |
| #endif |
| s32_t ret; /* Return Success/Failure */ |
| } CPSW_CONF_IF; |
| |
| #endif /* __LWIPLIB_H__ */ |