| /* |
| ************************************************************************** |
| * Copyright (c) 2015-2018, 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. |
| ************************************************************************** |
| */ |
| |
| /** |
| * nss_capwap_user.h |
| * NSS CAPWAP definitions for kernel and user space |
| */ |
| |
| #ifndef __NSS_CAPWAP_USER_H |
| #define __NSS_CAPWAP_USER_H |
| |
| /** |
| * Maxmimum values for rule configuration parameters |
| */ |
| #define NSS_CAPWAP_MAX_MTU 9000 |
| /**< maximum MTU supported by NSS FW */ |
| #define NSS_CAPWAP_MAX_BUFFER_SIZE 9000 |
| /**< maximum buffer-size supported by NSS FW */ |
| #define NSS_CAPWAP_MAX_FRAGMENTS 10 |
| /**< maximum fragments for reassembly */ |
| #define NSS_CAPWAP_MAX_REASSEMBLY_TIMEOUT (10 * 1000) |
| /**< maximum timeout for reassembly - 10 seconds */ |
| |
| /** |
| * CAPWAP Rule configure message flags |
| */ |
| #define NSS_CAPWAP_TUNNEL_IPV4 2 |
| /**< IPv4 tunnel */ |
| #define NSS_CAPWAP_TUNNEL_IPV6 3 |
| /**< IPv6 tunnel */ |
| #define NSS_CAPWAP_TUNNEL_UDP 4 |
| /**< UDP tunnel */ |
| #define NSS_CAPWAP_TUNNEL_UDPLite 5 |
| /**< UDPLite tunnel */ |
| |
| /** |
| * CAPWAP tunnel create and type flags. These flags are used |
| * to determine packet header size during encapsulation. |
| */ |
| #define NSS_CAPWAP_RULE_CREATE_VLAN_CONFIGURED 0x1 |
| /**< VLAN Configured for CAPWAP tunnel */ |
| #define NSS_CAPWAP_RULE_CREATE_PPPOE_CONFIGURED 0x2 |
| /**< PPPoE configured for CAPWAP tunnel */ |
| #define NSS_CAPWAP_ENCAP_UDPLITE_HDR_CSUM 0x4 |
| /**< Generate only UDP-Lite header checksum. Otherwise whole UDP-Lite payload */ |
| |
| /** |
| * CAPWAP version |
| */ |
| #define NSS_CAPWAP_VERSION_V1 0x1 |
| /**< RFC CAPWAP version */ |
| #define NSS_CAPWAP_VERSION_V2 0x2 |
| /**< Initial CAPWAP version for a customer */ |
| |
| /** |
| * Type of packet. These are mutually exclusive fields. |
| */ |
| #define NSS_CAPWAP_PKT_TYPE_UNKNOWN 0x0000 |
| /**< Don't know the type of CAPWAP packet */ |
| #define NSS_CAPWAP_PKT_TYPE_CONTROL 0x0001 |
| /** It's a control CAPWAP packet src_port=5247 */ |
| #define NSS_CAPWAP_PKT_TYPE_DATA 0x0002 |
| /**< It's a data CAPWAP packet src_port=5246 */ |
| |
| /** |
| * Addtional fields for identifying what's there in the packet. |
| */ |
| #define NSS_CAPWAP_PKT_TYPE_DTLS_ENABLED 0x0004 |
| /**< It's a DTLS packet. */ |
| #define NSS_CAPWAP_PKT_TYPE_WIRELESS_INFO 0x0008 |
| /**< W=1, wireless info present */ |
| #define NSS_CAPWAP_PKT_TYPE_802_11 0x0010 |
| /**< T=1, then set wbid=1 */ |
| #define NSS_CAPWAP_PKT_TYPE_802_3 0x0020 |
| /**< Data is in 802.3 format */ |
| |
| /** |
| * CAPWAP metaheader per-packet for both encap (TX) and decap (RX). |
| */ |
| struct nss_capwap_metaheader { |
| uint8_t version; /**< CAPWAP version */ |
| uint8_t rid; /**< Radio ID */ |
| uint16_t tunnel_id; /**< Tunnel-ID */ |
| uint8_t dscp; /**< DSCP value */ |
| uint8_t vlan_pcp; /**< VLAN priority .P marking */ |
| uint16_t type; /**< Type of CAPWAP packet & What was there in CAPWAP header */ |
| uint16_t nwireless; /**< Number of wireless info sections in CAPWAP header */ |
| uint16_t wireless_qos; /**< 802.11e qos info */ |
| uint16_t outer_sgt; /**< Security Group Tag value in the TrustSec header */ |
| uint16_t inner_sgt; /**< Security Group Tag value in the TrustSec header */ |
| uint32_t flow_id; /**< Flow identification */ |
| uint16_t vapid; /**< VAP ID info */ |
| |
| uint16_t magic; /**< Magic for verification purpose. Use only for debugging */ |
| |
| /* |
| * Put the wl_info at last so we don't have to do copy if 802.11 to 802.3 conversion did not happen. |
| */ |
| uint8_t wl_info[8]; /* Wireless info preserved from the original packet */ |
| } __packed __aligned(4); |
| |
| #endif /* __NSS_CAPWAP_USER_H */ |