summaryrefslogtreecommitdiff
path: root/drivers/staging/fsl_dpa_offload/dpa_classifier_ioctl.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/staging/fsl_dpa_offload/dpa_classifier_ioctl.h')
-rw-r--r--drivers/staging/fsl_dpa_offload/dpa_classifier_ioctl.h848
1 files changed, 848 insertions, 0 deletions
diff --git a/drivers/staging/fsl_dpa_offload/dpa_classifier_ioctl.h b/drivers/staging/fsl_dpa_offload/dpa_classifier_ioctl.h
new file mode 100644
index 0000000..4aab2d7
--- /dev/null
+++ b/drivers/staging/fsl_dpa_offload/dpa_classifier_ioctl.h
@@ -0,0 +1,848 @@
+
+/* Copyright 2008-2012 Freescale Semiconductor, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Freescale Semiconductor nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``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 Freescale Semiconductor 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.
+ */
+
+/*
+ * DPA Classifier Wrapper Application Programming Interface
+ */
+
+#ifndef __DPA_CLASSIFIER_IOCTL_H
+#define __DPA_CLASSIFIER_IOCTL_H
+
+
+/* Other includes */
+#include "linux/ioctl.h"
+#include <linux/compat.h>
+
+
+#define DPA_CLS_IOC_MAGIC 0xbe
+
+
+struct ioc_dpa_cls_tbl_params {
+ struct dpa_cls_tbl_params table_params;
+ int td;
+};
+
+struct ioc_dpa_cls_tbl_miss_action {
+ int td;
+ struct dpa_cls_tbl_action miss_action;
+};
+
+struct ioc_dpa_cls_tbl_entry_params {
+ int td;
+ struct dpa_offload_lookup_key key;
+ struct dpa_cls_tbl_action action;
+ int priority;
+ int entry_id;
+};
+
+struct ioc_dpa_cls_tbl_entry_mod_by_key {
+ int td;
+ struct dpa_offload_lookup_key key;
+ struct dpa_cls_tbl_entry_mod_params mod_params;
+};
+
+struct ioc_dpa_cls_tbl_entry_mod_by_ref {
+ int td;
+ int entry_id;
+ struct dpa_cls_tbl_entry_mod_params mod_params;
+};
+
+struct ioc_dpa_cls_tbl_entry_by_key {
+ int td;
+ struct dpa_offload_lookup_key key;
+};
+
+struct ioc_dpa_cls_tbl_entry_by_ref {
+ int td;
+ int entry_id;
+};
+
+struct ioc_dpa_cls_tbl_lookup_by_key {
+ int td;
+ struct dpa_offload_lookup_key key;
+ struct dpa_cls_tbl_action action;
+};
+
+struct ioc_dpa_cls_tbl_lookup_by_ref {
+ int td;
+ int entry_id;
+ struct dpa_cls_tbl_action action;
+};
+
+struct ioc_dpa_cls_tbl_entry_stats_by_key {
+ int td;
+ struct dpa_offload_lookup_key key;
+ struct dpa_cls_tbl_entry_stats stats;
+};
+
+struct ioc_dpa_cls_tbl_entry_stats_by_ref {
+ int td;
+ int entry_id;
+ struct dpa_cls_tbl_entry_stats stats;
+};
+
+struct ioc_dpa_cls_hm_remove_params {
+ struct dpa_cls_hm_remove_params rm_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_hm_remove_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct ioc_dpa_cls_hm_insert_params {
+ struct dpa_cls_hm_insert_params ins_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_hm_insert_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct ioc_dpa_cls_hm_vlan_params {
+ struct dpa_cls_hm_vlan_params vlan_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_hm_vlan_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct ioc_dpa_cls_hm_nat_params {
+ struct dpa_cls_hm_nat_params nat_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_hm_nat_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct ioc_dpa_cls_hm_update_params {
+ struct dpa_cls_hm_update_params update_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_hm_update_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct ioc_dpa_cls_hm_fwd_params {
+ struct dpa_cls_hm_fwd_params fwd_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_hm_fwd_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct ioc_dpa_cls_hm_mpls_params {
+ struct dpa_cls_hm_mpls_params mpls_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_hm_mpls_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct ioc_dpa_cls_mcast_group_params {
+ struct dpa_cls_mcast_group_params mcast_grp_params;
+ int grpd;
+};
+
+struct ioc_dpa_cls_mcast_import_params {
+ void *group;
+ int grpd;
+};
+
+struct ioc_dpa_cls_mcast_member_params {
+ int grpd;
+ struct dpa_cls_tbl_enq_action_desc member_params;
+ int md;
+};
+
+struct ioc_dpa_cls_mcast_remove_params {
+ int grpd;
+ int md;
+};
+
+
+#ifdef CONFIG_COMPAT
+
+struct dpa_cls_compat_tbl_params {
+ compat_uptr_t fm_pcd;
+ compat_uptr_t cc_node;
+ compat_uptr_t distribution;
+ compat_uptr_t classification;
+ enum dpa_cls_tbl_type type;
+ enum dpa_cls_tbl_entry_mgmt entry_mgmt;
+ union {
+ struct dpa_cls_tbl_hash_params hash_params;
+ struct dpa_cls_tbl_indexed_params indexed_params;
+ struct dpa_cls_tbl_exact_match_params exact_match_params;
+ };
+ unsigned int prefilled_entries;
+};
+
+struct compat_ioc_dpa_cls_tbl_params {
+ struct dpa_cls_compat_tbl_params table_params;
+ int td;
+};
+
+struct dpa_cls_compat_tbl_enq_action_desc {
+ bool override_fqid;
+ uint32_t new_fqid;
+ compat_uptr_t policer_params;
+ int hmd;
+ uint8_t new_rel_vsp_id;
+};
+
+struct dpa_cls_compat_tbl_action {
+ enum dpa_cls_tbl_action_type type;
+ bool enable_statistics;
+ union {
+ struct dpa_cls_compat_tbl_enq_action_desc enq_params;
+ struct dpa_cls_tbl_next_table_desc next_table_params;
+ struct dpa_cls_tbl_mcast_group_desc mcast_params;
+ };
+};
+
+struct compat_ioc_dpa_cls_tbl_miss_action {
+ int td;
+ struct dpa_cls_compat_tbl_action miss_action;
+};
+
+struct compat_ioc_dpa_offld_lookup_key {
+ compat_uptr_t byte;
+ compat_uptr_t mask;
+ uint8_t size;
+};
+
+struct compat_ioc_dpa_cls_tbl_entry_by_key {
+ int td;
+ struct compat_ioc_dpa_offld_lookup_key key;
+};
+
+struct compat_ioc_dpa_cls_tbl_entry_stats_by_key {
+ int td;
+ struct compat_ioc_dpa_offld_lookup_key key;
+ struct dpa_cls_tbl_entry_stats stats;
+};
+
+struct compat_ioc_dpa_cls_tbl_entry_params {
+ int td;
+ struct compat_ioc_dpa_offld_lookup_key key;
+ struct dpa_cls_compat_tbl_action action;
+ int priority;
+ int entry_id;
+};
+
+struct dpa_cls_compat_tbl_entry_mod_params {
+ enum dpa_cls_tbl_modify_type type;
+ compat_uptr_t key;
+ compat_uptr_t action;
+};
+
+struct compat_ioc_dpa_cls_tbl_entry_mod_by_key {
+ int td;
+ struct compat_ioc_dpa_offld_lookup_key key;
+ struct dpa_cls_compat_tbl_entry_mod_params mod_params;
+};
+
+struct compat_ioc_dpa_cls_tbl_entry_mod_by_ref {
+ int td;
+ int entry_id;
+ struct dpa_cls_compat_tbl_entry_mod_params mod_params;
+};
+
+struct compat_ioc_dpa_cls_tbl_lookup_by_key {
+ int td;
+ struct compat_ioc_dpa_offld_lookup_key key;
+ struct dpa_cls_compat_tbl_action action;
+};
+
+struct compat_ioc_dpa_cls_tbl_lookup_by_ref {
+ int td;
+ int entry_id;
+ struct dpa_cls_compat_tbl_action action;
+};
+
+struct dpa_cls_compat_hm_remove_resources {
+ compat_uptr_t remove_node;
+};
+
+struct dpa_cls_compat_hm_remove_params {
+ enum dpa_cls_hm_remove_type type;
+ struct dpa_cls_hm_custom_rm_params custom;
+ compat_uptr_t fm_pcd;
+};
+
+struct compat_ioc_dpa_cls_hm_remove_params {
+ struct dpa_cls_compat_hm_remove_params rm_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_compat_hm_remove_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct dpa_cls_compat_hm_insert_resources {
+ compat_uptr_t insert_node;
+};
+
+struct dpa_cls_compat_hm_custom_ins_params {
+ uint8_t offset;
+ uint8_t size;
+ compat_uptr_t data;
+};
+
+struct dpa_cls_compat_hm_insert_params {
+ enum dpa_cls_hm_insert_type type;
+ union {
+ struct dpa_cls_hm_eth_ins_params eth;
+ struct dpa_cls_hm_pppoe_ins_params pppoe;
+ uint16_t ppp_pid;
+ struct dpa_cls_compat_hm_custom_ins_params custom;
+ };
+ compat_uptr_t fm_pcd;
+};
+
+struct compat_ioc_dpa_cls_hm_insert_params {
+ struct dpa_cls_compat_hm_insert_params ins_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_compat_hm_insert_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct dpa_cls_compat_hm_vlan_params {
+ enum dpa_cls_hm_vlan_type type;
+ union {
+ struct dpa_cls_hm_ingress_vlan_params ingress;
+ struct dpa_cls_hm_egress_vlan_params egress;
+ };
+ compat_uptr_t fm_pcd;
+};
+
+struct dpa_cls_compat_hm_vlan_resources {
+ compat_uptr_t vlan_node;
+};
+
+struct compat_ioc_dpa_cls_hm_vlan_params {
+ struct dpa_cls_compat_hm_vlan_params vlan_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_compat_hm_vlan_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct compat_ipv4_header {
+ struct iphdr header;
+ compat_uptr_t options;
+ unsigned int options_size;
+};
+
+struct dpa_cls_compat_hm_nat_pt_params {
+ enum dpa_cls_hm_nat_pt_type type;
+
+ union {
+ struct compat_ipv4_header ipv4;
+ struct ipv6_header ipv6;
+ } new_header;
+};
+
+struct dpa_cls_compat_hm_nat_params {
+ int flags;
+ enum dpa_cls_hm_nat_proto proto;
+ enum dpa_cls_hm_nat_type type;
+ union {
+ struct dpa_cls_hm_traditional_nat_params nat;
+ struct dpa_cls_compat_hm_nat_pt_params nat_pt;
+ };
+ uint16_t sport;
+ uint16_t dport;
+ compat_uptr_t fm_pcd;
+};
+
+struct dpa_cls_compat_hm_nat_resources {
+ compat_uptr_t l3_update_node;
+ compat_uptr_t l4_update_node;
+};
+
+struct compat_ioc_dpa_cls_hm_nat_params {
+ struct dpa_cls_compat_hm_nat_params nat_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_compat_hm_nat_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct dpa_cls_compat_hm_update_params {
+ int op_flags;
+ union {
+ struct compat_ipv4_header new_ipv4_hdr;
+ struct ipv6_header new_ipv6_hdr;
+ } replace;
+ union {
+ struct dpa_cls_hm_l3_update_params l3;
+ struct dpa_cls_hm_l4_update_params l4;
+ } update;
+ struct dpa_cls_hm_ip_frag_params ip_frag_params;
+ compat_uptr_t fm_pcd;
+};
+
+struct dpa_cls_compat_hm_update_resources {
+ compat_uptr_t update_node;
+ compat_uptr_t ip_frag_node;
+
+};
+
+struct compat_ioc_dpa_cls_hm_update_params {
+ struct dpa_cls_compat_hm_update_params update_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_compat_hm_update_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct dpa_cls_compat_hm_fwd_params {
+ enum dpa_cls_hm_out_if_type out_if_type;
+ union {
+ struct dpa_cls_hm_fwd_l2_param eth;
+ struct dpa_cls_hm_fwd_pppoe_param pppoe;
+ struct dpa_cls_hm_fwd_ppp_param ppp;
+ };
+ struct dpa_cls_hm_ip_frag_params ip_frag_params;
+ compat_uptr_t fm_pcd;
+};
+
+struct dpa_cls_compat_hm_fwd_resources {
+ compat_uptr_t fwd_node;
+ compat_uptr_t pppoe_node;
+ compat_uptr_t ip_frag_node;
+};
+
+struct compat_ioc_dpa_cls_hm_fwd_params {
+ struct dpa_cls_compat_hm_fwd_params fwd_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_compat_hm_fwd_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct dpa_cls_compat_hm_mpls_params {
+ enum dpa_cls_hm_mpls_type type;
+ struct mpls_header mpls_hdr[DPA_CLS_HM_MAX_MPLS_LABELS];
+ unsigned int num_labels;
+ compat_uptr_t fm_pcd;
+};
+
+struct dpa_cls_compat_hm_mpls_resources {
+ compat_uptr_t ins_rm_node;
+};
+
+struct compat_ioc_dpa_cls_hm_mpls_params {
+ struct dpa_cls_compat_hm_mpls_params mpls_params;
+ int next_hmd;
+ int hmd;
+ struct dpa_cls_compat_hm_mpls_resources res;
+ bool chain_head;
+ int modify_flags;
+};
+
+struct dpa_cls_compat_mcast_group_params {
+ uint8_t max_members;
+ compat_uptr_t fm_pcd;
+ struct dpa_cls_compat_tbl_enq_action_desc first_member_params;
+ unsigned int prefilled_members;
+ compat_uptr_t group;
+ compat_uptr_t distribution;
+ compat_uptr_t classification;
+};
+
+struct compat_ioc_dpa_cls_mcast_group_params {
+ struct dpa_cls_compat_mcast_group_params mcast_grp_params;
+ int grpd;
+};
+
+struct compat_ioc_dpa_cls_mcast_member_params {
+ int grpd;
+ struct dpa_cls_compat_tbl_enq_action_desc member_params;
+ int md;
+};
+
+int dpa_cls_tbl_entry_params_compatcpy(
+ struct ioc_dpa_cls_tbl_entry_params *kparam,
+ const struct compat_ioc_dpa_cls_tbl_entry_params *uparam);
+
+int dpa_cls_tbl_params_compatcpy(
+ struct ioc_dpa_cls_tbl_params *kparam,
+ const struct compat_ioc_dpa_cls_tbl_params *uparam);
+
+int dpa_cls_tbl_params_rcompatcpy(
+ struct compat_ioc_dpa_cls_tbl_params *uparam,
+ const struct ioc_dpa_cls_tbl_params *kparam);
+
+int dpa_cls_tbl_miss_action_params_compatcpy(
+ struct ioc_dpa_cls_tbl_miss_action *kparam,
+ const struct compat_ioc_dpa_cls_tbl_miss_action *uparam);
+
+int dpa_cls_tbl_action_params_compatcpy(
+ struct dpa_cls_tbl_action *kparam,
+ const struct dpa_cls_compat_tbl_action *uparam);
+
+int dpa_cls_tbl_action_params_rcompatcpy(
+ struct dpa_cls_compat_tbl_action *uparam,
+ const struct dpa_cls_tbl_action *kparam);
+
+int dpa_cls_tbl_entry_mod_by_key_params_compatcpy(
+ struct ioc_dpa_cls_tbl_entry_mod_by_key *kparam,
+ const struct compat_ioc_dpa_cls_tbl_entry_mod_by_key *uparam);
+
+int dpa_cls_tbl_entry_mod_by_ref_params_compatcpy(
+ struct ioc_dpa_cls_tbl_entry_mod_by_ref *kparam,
+ const struct compat_ioc_dpa_cls_tbl_entry_mod_by_ref *uparam);
+
+int dpa_cls_tbl_entry_mod_params_compatcpy(
+ struct dpa_cls_tbl_entry_mod_params *kparam,
+ const struct dpa_cls_compat_tbl_entry_mod_params *uparam);
+
+int dpa_cls_tbl_entry_by_key_params_compatcpy(
+ struct ioc_dpa_cls_tbl_entry_by_key *kparam,
+ const struct compat_ioc_dpa_cls_tbl_entry_by_key *uparam);
+
+int dpa_cls_tbl_lookup_by_key_params_compatcpy(
+ struct ioc_dpa_cls_tbl_lookup_by_key *kparam,
+ const struct compat_ioc_dpa_cls_tbl_lookup_by_key *uparam);
+
+int dpa_cls_tbl_lookup_by_ref_params_compatcpy(
+ struct ioc_dpa_cls_tbl_lookup_by_ref *kparam,
+ const struct compat_ioc_dpa_cls_tbl_lookup_by_ref *uparam);
+
+int dpa_cls_tbl_entry_stats_by_key_params_compatcpy(
+ struct ioc_dpa_cls_tbl_entry_stats_by_key *kparam,
+ const struct compat_ioc_dpa_cls_tbl_entry_stats_by_key *uparam);
+
+int dpa_lookup_key_params_compatcpy(
+ struct dpa_offload_lookup_key *kparam,
+ const struct compat_ioc_dpa_offld_lookup_key *uparam);
+
+int dpa_cls_hm_remove_params_compatcpy(
+ struct ioc_dpa_cls_hm_remove_params *kparam,
+ const struct compat_ioc_dpa_cls_hm_remove_params *uparam);
+
+int dpa_cls_hm_insert_params_compatcpy(
+ struct ioc_dpa_cls_hm_insert_params *kparam,
+ const struct compat_ioc_dpa_cls_hm_insert_params *uparam);
+
+int dpa_cls_hm_vlan_params_compatcpy(
+ struct ioc_dpa_cls_hm_vlan_params *kparam,
+ const struct compat_ioc_dpa_cls_hm_vlan_params *uparam);
+
+int dpa_cls_hm_nat_params_compatcpy(
+ struct ioc_dpa_cls_hm_nat_params *kparam,
+ const struct compat_ioc_dpa_cls_hm_nat_params *uparam);
+
+int dpa_cls_hm_update_params_compatcpy(
+ struct ioc_dpa_cls_hm_update_params *kparam,
+ const struct compat_ioc_dpa_cls_hm_update_params *uparam);
+
+int dpa_cls_hm_fwd_params_compatcpy(
+ struct ioc_dpa_cls_hm_fwd_params *kparam,
+ const struct compat_ioc_dpa_cls_hm_fwd_params *uparam);
+
+int dpa_cls_hm_mpls_params_compatcpy(
+ struct ioc_dpa_cls_hm_mpls_params *kparam,
+ const struct compat_ioc_dpa_cls_hm_mpls_params *uparam);
+
+int dpa_cls_mcast_group_params_compatcpy(
+ struct ioc_dpa_cls_mcast_group_params *kparam,
+ const struct compat_ioc_dpa_cls_mcast_group_params *uparam);
+
+int dpa_cls_mcast_member_params_compatcpy(
+ struct ioc_dpa_cls_mcast_member_params *kparam,
+ const struct compat_ioc_dpa_cls_mcast_member_params *uparam);
+#endif /* CONFIG_COMPAT */
+
+
+#define DPA_CLS_IOC_TBL_CREATE \
+ _IOWR(DPA_CLS_IOC_MAGIC, 0, struct ioc_dpa_cls_tbl_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_CREATE \
+ _IOWR(DPA_CLS_IOC_MAGIC, 0, struct compat_ioc_dpa_cls_tbl_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_FREE \
+ _IOW(DPA_CLS_IOC_MAGIC, 1, int)
+
+#define DPA_CLS_IOC_TBL_MODIFY_MISS_ACTION \
+ _IOW(DPA_CLS_IOC_MAGIC, 2, struct ioc_dpa_cls_tbl_miss_action)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_MODIFY_MISS_ACTION \
+ _IOW(DPA_CLS_IOC_MAGIC, 2, struct compat_ioc_dpa_cls_tbl_miss_action)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_INSERT_ENTRY \
+ _IOWR(DPA_CLS_IOC_MAGIC, 3, struct ioc_dpa_cls_tbl_entry_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_INSERT_ENTRY \
+ _IOWR(DPA_CLS_IOC_MAGIC, 3, struct compat_ioc_dpa_cls_tbl_entry_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_MODIFY_ENTRY_BY_KEY \
+ _IOW(DPA_CLS_IOC_MAGIC, 4, struct ioc_dpa_cls_tbl_entry_mod_by_key)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_MODIFY_ENTRY_BY_KEY \
+ _IOW(DPA_CLS_IOC_MAGIC, 4, \
+ struct compat_ioc_dpa_cls_tbl_entry_mod_by_key)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_MODIFY_ENTRY_BY_REF \
+ _IOW(DPA_CLS_IOC_MAGIC, 5, struct ioc_dpa_cls_tbl_entry_mod_by_ref)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_MODIFY_ENTRY_BY_REF \
+ _IOW(DPA_CLS_IOC_MAGIC, 5, \
+ struct compat_ioc_dpa_cls_tbl_entry_mod_by_ref)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_DELETE_ENTRY_BY_KEY \
+ _IOW(DPA_CLS_IOC_MAGIC, 6, struct ioc_dpa_cls_tbl_entry_by_key)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_DELETE_ENTRY_BY_KEY \
+ _IOW(DPA_CLS_IOC_MAGIC, 6, \
+ struct compat_ioc_dpa_cls_tbl_entry_by_key)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_DELETE_ENTRY_BY_REF \
+ _IOW(DPA_CLS_IOC_MAGIC, 7, struct ioc_dpa_cls_tbl_entry_by_ref)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_DELETE_ENTRY_BY_REF \
+ _IOW(DPA_CLS_IOC_MAGIC, 7, \
+ struct compat_ioc_dpa_cls_tbl_entry_by_ref)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_LOOKUP_BY_KEY \
+ _IOR(DPA_CLS_IOC_MAGIC, 8, struct ioc_dpa_cls_tbl_lookup_by_key)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_LOOKUP_BY_KEY \
+ _IOR(DPA_CLS_IOC_MAGIC, 8, struct compat_ioc_dpa_cls_tbl_lookup_by_key)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_LOOKUP_BY_REF \
+ _IOR(DPA_CLS_IOC_MAGIC, 9, struct ioc_dpa_cls_tbl_lookup_by_ref)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_LOOKUP_BY_REF \
+ _IOR(DPA_CLS_IOC_MAGIC, 9, struct compat_ioc_dpa_cls_tbl_lookup_by_ref)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_FLUSH \
+ _IOW(DPA_CLS_IOC_MAGIC, 10, int)
+
+#define DPA_CLS_IOC_TBL_GET_STATS_BY_KEY \
+ _IOR(DPA_CLS_IOC_MAGIC, 11, struct ioc_dpa_cls_tbl_entry_stats_by_key)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_GET_STATS_BY_KEY \
+ _IOR(DPA_CLS_IOC_MAGIC, 11, \
+ struct compat_ioc_dpa_cls_tbl_entry_stats_by_key)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_TBL_GET_STATS_BY_REF \
+ _IOR(DPA_CLS_IOC_MAGIC, 12, struct ioc_dpa_cls_tbl_entry_stats_by_ref)
+
+#define DPA_CLS_IOC_TBL_GET_PARAMS \
+ _IOWR(DPA_CLS_IOC_MAGIC, 15, struct ioc_dpa_cls_tbl_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_TBL_GET_PARAMS \
+ _IOWR(DPA_CLS_IOC_MAGIC, 15, struct compat_ioc_dpa_cls_tbl_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_SET_REMOVE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 16, struct ioc_dpa_cls_hm_remove_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_SET_REMOVE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 16, \
+ struct compat_ioc_dpa_cls_hm_remove_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_MODIFY_REMOVE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 17, struct ioc_dpa_cls_hm_remove_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MODIFY_REMOVE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 17, \
+ struct compat_ioc_dpa_cls_hm_remove_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_SET_INSERT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 18, struct ioc_dpa_cls_hm_insert_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_SET_INSERT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 18, \
+ struct compat_ioc_dpa_cls_hm_insert_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_MODIFY_INSERT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 19, struct ioc_dpa_cls_hm_insert_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MODIFY_INSERT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 19, \
+ struct compat_ioc_dpa_cls_hm_insert_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_SET_VLAN_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 20, struct ioc_dpa_cls_hm_vlan_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_SET_VLAN_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 20, struct compat_ioc_dpa_cls_hm_vlan_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_MODIFY_VLAN_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 21, struct ioc_dpa_cls_hm_vlan_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MODIFY_VLAN_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 21, struct compat_ioc_dpa_cls_hm_vlan_params)
+#endif /* CONFIG_COMPAT */
+
+
+#define DPA_CLS_IOC_SET_NAT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 22, struct ioc_dpa_cls_hm_nat_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_SET_NAT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 22, struct compat_ioc_dpa_cls_hm_nat_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_MODIFY_NAT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 23, struct ioc_dpa_cls_hm_nat_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MODIFY_NAT_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 23, struct compat_ioc_dpa_cls_hm_nat_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_SET_UPDATE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 24, struct ioc_dpa_cls_hm_update_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_SET_UPDATE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 24, struct compat_ioc_dpa_cls_hm_update_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_MODIFY_UPDATE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 25, struct ioc_dpa_cls_hm_update_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MODIFY_UPDATE_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 25, struct compat_ioc_dpa_cls_hm_update_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_SET_FWD_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 26, struct ioc_dpa_cls_hm_fwd_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_SET_FWD_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 26, struct compat_ioc_dpa_cls_hm_fwd_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_MODIFY_FWD_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 27, struct ioc_dpa_cls_hm_fwd_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MODIFY_FWD_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 27, struct compat_ioc_dpa_cls_hm_fwd_params)
+#endif /* CONFIG_COMPAT */
+
+#define DPA_CLS_IOC_SET_MPLS_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 28, struct ioc_dpa_cls_hm_mpls_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_SET_MPLS_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 28, struct compat_ioc_dpa_cls_hm_mpls_params)
+#endif
+
+#define DPA_CLS_IOC_MODIFY_MPLS_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 29, struct ioc_dpa_cls_hm_mpls_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MODIFY_MPLS_HM \
+ _IOWR(DPA_CLS_IOC_MAGIC, 29, struct compat_ioc_dpa_cls_hm_mpls_params)
+#endif
+
+#define DPA_CLS_IOC_FREE_HM \
+ _IOR(DPA_CLS_IOC_MAGIC, 30, int)
+
+#define DPA_CLS_IOC_MCAST_CREATE_GROUP \
+ _IOWR(DPA_CLS_IOC_MAGIC, 31, struct ioc_dpa_cls_mcast_group_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MCAST_CREATE_GROUP \
+ _IOWR(DPA_CLS_IOC_MAGIC, 31, \
+ struct compat_ioc_dpa_cls_mcast_group_params)
+#endif
+
+#define DPA_CLS_IOC_MCAST_ADD_MEMBER \
+ _IOWR(DPA_CLS_IOC_MAGIC, 32, struct ioc_dpa_cls_mcast_member_params)
+
+#ifdef CONFIG_COMPAT
+#define DPA_CLS_IOC_COMPAT_MCAST_ADD_MEMBER \
+ _IOWR(DPA_CLS_IOC_MAGIC, 32, \
+ struct compat_ioc_dpa_cls_mcast_member_params)
+#endif
+
+#define DPA_CLS_IOC_MCAST_REMOVE_MEMBER \
+ _IOWR(DPA_CLS_IOC_MAGIC, 33, struct ioc_dpa_cls_mcast_remove_params)
+
+#define DPA_CLS_IOC_MCAST_FREE_GROUP \
+ _IOWR(DPA_CLS_IOC_MAGIC, 34, int)
+
+
+#endif /* __DPA_CLASSIFIER_IOCTL_H */