|
@@ -0,0 +1,141 @@
|
|
|
+/*
|
|
|
+* Copyright (c) 2017 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.
|
|
|
+*/
|
|
|
+ /**
|
|
|
+ * DOC: Declare various struct, macros which shall be used in
|
|
|
+ * pmo packet filter feature.
|
|
|
+ *
|
|
|
+ * Note: This file shall not contain public API's prototype/declarations.
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+#ifndef _WLAN_PMO_PKT_FILTER_PUBLIC_STRUCT_H_
|
|
|
+#define _WLAN_PMO_PKT_FILTER_PUBLIC_STRUCT_H_
|
|
|
+
|
|
|
+#include "qdf_types.h"
|
|
|
+
|
|
|
+#define PMO_MAX_FILTER_TEST_DATA_LEN 8
|
|
|
+#define PMO_MAX_NUM_TESTS_PER_FILTER 10
|
|
|
+
|
|
|
+/**
|
|
|
+ * enum pmo_rcv_pkt_fltr_type: Receive Filter Parameters
|
|
|
+ * @PMO_RCV_FILTER_TYPE_INVALID: invalied filter type
|
|
|
+ * @PMO_RCV_FILTER_TYPE_FILTER_PKT: packet filter
|
|
|
+ * @PMO_RCV_FILTER_TYPE_BUFFER_PKT: buffer packet
|
|
|
+ * @PMO_RCV_FILTER_TYPE_MAX_ENUM_SIZE: max filter
|
|
|
+ */
|
|
|
+enum pmo_rcv_pkt_fltr_type {
|
|
|
+ PMO_RCV_FILTER_TYPE_INVALID,
|
|
|
+ PMO_RCV_FILTER_TYPE_FILTER_PKT,
|
|
|
+ PMO_RCV_FILTER_TYPE_BUFFER_PKT,
|
|
|
+ PMO_RCV_FILTER_TYPE_MAX_ENUM_SIZE
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * enum pmo_rcv_pkt_fltr_flag_type: Receive Filter flags
|
|
|
+ * @PMO_FILTER_CMP_TYPE_INVALID: invalied flag
|
|
|
+ * @PMO_FILTER_CMP_TYPE_EQUAL: equal
|
|
|
+ * @PMO_FILTER_CMP_TYPE_MASK_EQUAL: mask
|
|
|
+ * @PMO_FILTER_CMP_TYPE_NOT_EQUAL: not equal
|
|
|
+ * @PMO_FILTER_CMP_TYPE_MASK_NOT_EQUAL: mask not equal
|
|
|
+ * @PMO_FILTER_CMP_TYPE_MAX: max size of flag
|
|
|
+ */
|
|
|
+enum pmo_rcv_pkt_fltr_flag_type {
|
|
|
+ PMO_FILTER_CMP_TYPE_INVALID,
|
|
|
+ PMO_FILTER_CMP_TYPE_EQUAL,
|
|
|
+ PMO_FILTER_CMP_TYPE_MASK_EQUAL,
|
|
|
+ PMO_FILTER_CMP_TYPE_NOT_EQUAL,
|
|
|
+ PMO_FILTER_CMP_TYPE_MASK_NOT_EQUAL,
|
|
|
+ PMO_FILTER_CMP_TYPE_MAX
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * enum pmo_rcv_pkt_fltr_protocol_params: Receive Filter protocal parameters
|
|
|
+ * @PMO_FILTER_HDR_TYPE_INVALID: invalied type
|
|
|
+ * @PMO_FILTER_HDR_TYPE_MAC: mac protocol
|
|
|
+ * @PMO_FILTER_HDR_TYPE_ARP: arp protocol
|
|
|
+ * @PMO_FILTER_HDR_TYPE_IPV4: ipv4 protocol
|
|
|
+ * @PMO_FILTER_HDR_TYPE_IPV6: ipv6 protocol
|
|
|
+ * @PMO_FILTER_HDR_TYPE_UDP: udp protocol
|
|
|
+ * @PMO_FILTER_HDR_TYPE_MAX: max of type of protocol
|
|
|
+ */
|
|
|
+enum pmo_rcv_pkt_fltr_protocol_params {
|
|
|
+ PMO_FILTER_HDR_TYPE_INVALID,
|
|
|
+ PMO_FILTER_HDR_TYPE_MAC,
|
|
|
+ PMO_FILTER_HDR_TYPE_ARP,
|
|
|
+ PMO_FILTER_HDR_TYPE_IPV4,
|
|
|
+ PMO_FILTER_HDR_TYPE_IPV6,
|
|
|
+ PMO_FILTER_HDR_TYPE_UDP,
|
|
|
+ PMO_FILTER_HDR_TYPE_MAX
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * struct pmo_rcv_pkt_fltr_field_params - pmo packet filter field parameters
|
|
|
+ * @protocol_layer: Protocol layer
|
|
|
+ * @compare_flag: Comparison flag
|
|
|
+ * @data_length: Length of the data to compare
|
|
|
+ * @data_offset: from start of the respective frame header
|
|
|
+ * @reserved: Reserved field
|
|
|
+ * @compare_data: Data to compare
|
|
|
+ * @data_mask: Mask to be applied on the received packet data before compare
|
|
|
+ */
|
|
|
+struct pmo_rcv_pkt_fltr_field_params {
|
|
|
+ enum pmo_rcv_pkt_fltr_protocol_params protocol_layer;
|
|
|
+ enum pmo_rcv_pkt_fltr_flag_type compare_flag;
|
|
|
+ uint16_t data_length;
|
|
|
+ uint8_t data_offset;
|
|
|
+ uint8_t reserved;
|
|
|
+ uint8_t compare_data[PMO_MAX_FILTER_TEST_DATA_LEN];
|
|
|
+ uint8_t data_mask[PMO_MAX_FILTER_TEST_DATA_LEN];
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * struct pmo_rcv_pkt_fltr_cfg - pmo packet filter config
|
|
|
+ * @filter_id: filter id
|
|
|
+ * @filter_type: filter type
|
|
|
+ * @num_params: number of parameters
|
|
|
+ * @coalesce_time: time
|
|
|
+ * @self_macaddr: mac address
|
|
|
+ * @bssid: Bssid of the connected AP
|
|
|
+ * @params_data: data
|
|
|
+ */
|
|
|
+struct pmo_rcv_pkt_fltr_cfg {
|
|
|
+ uint8_t filter_id;
|
|
|
+ enum pmo_rcv_pkt_fltr_type filter_type;
|
|
|
+ uint32_t num_params;
|
|
|
+ uint32_t coalesce_time;
|
|
|
+ struct qdf_mac_addr self_macaddr;
|
|
|
+ struct qdf_mac_addr bssid;
|
|
|
+ struct pmo_rcv_pkt_fltr_field_params
|
|
|
+ params_data[PMO_MAX_NUM_TESTS_PER_FILTER];
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * struct pmo_rcv_pkt_fltr_cfg - pmo receive Filter Clear Parameters
|
|
|
+ * @status: only valid for response message
|
|
|
+ * @filter_id:
|
|
|
+ * @self_macaddr:
|
|
|
+ * @bssid: peer ap address
|
|
|
+ */
|
|
|
+struct pmo_rcv_pkt_fltr_clear_param {
|
|
|
+ uint32_t status;
|
|
|
+ uint8_t filter_id;
|
|
|
+ struct qdf_mac_addr self_macaddr;
|
|
|
+ struct qdf_mac_addr bssid;
|
|
|
+};
|
|
|
+
|
|
|
+#endif /* end of _WLAN_PMO_PKT_FILTER_PUBLIC_STRUCT_H_ */
|