18a971df9SLuo Jie /* SPDX-License-Identifier: GPL-2.0-only 28a971df9SLuo Jie * 38a971df9SLuo Jie * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. 48a971df9SLuo Jie */ 58a971df9SLuo Jie 68a971df9SLuo Jie #ifndef __PPE_CONFIG_H__ 78a971df9SLuo Jie #define __PPE_CONFIG_H__ 88a971df9SLuo Jie 973d05bdaSLuo Jie #include <linux/types.h> 1073d05bdaSLuo Jie 118a971df9SLuo Jie #include "ppe.h" 128a971df9SLuo Jie 137a23a8afSLuo Jie /* There are different table index ranges for configuring queue base ID of 147a23a8afSLuo Jie * the destination port, CPU code and service code. 157a23a8afSLuo Jie */ 167a23a8afSLuo Jie #define PPE_QUEUE_BASE_DEST_PORT 0 177a23a8afSLuo Jie #define PPE_QUEUE_BASE_CPU_CODE 1024 187a23a8afSLuo Jie #define PPE_QUEUE_BASE_SERVICE_CODE 2048 197a23a8afSLuo Jie 207a23a8afSLuo Jie #define PPE_QUEUE_INTER_PRI_NUM 16 217a23a8afSLuo Jie #define PPE_QUEUE_HASH_NUM 256 227a23a8afSLuo Jie 2373d05bdaSLuo Jie /* The service code is used by EDMA port to transmit packet to PPE. */ 2473d05bdaSLuo Jie #define PPE_EDMA_SC_BYPASS_ID 1 2573d05bdaSLuo Jie 261c46c3c0SLuo Jie /* The PPE RSS hash configured for IPv4 and IPv6 packet separately. */ 271c46c3c0SLuo Jie #define PPE_RSS_HASH_MODE_IPV4 BIT(0) 281c46c3c0SLuo Jie #define PPE_RSS_HASH_MODE_IPV6 BIT(1) 291c46c3c0SLuo Jie #define PPE_RSS_HASH_IP_LENGTH 4 301c46c3c0SLuo Jie #define PPE_RSS_HASH_TUPLES 5 311c46c3c0SLuo Jie 32*fa99608aSLuo Jie /* PPE supports 300 queues, each bit presents as one queue. */ 33*fa99608aSLuo Jie #define PPE_RING_TO_QUEUE_BITMAP_WORD_CNT 10 34*fa99608aSLuo Jie 3533122798SLuo Jie /** 3633122798SLuo Jie * enum ppe_scheduler_frame_mode - PPE scheduler frame mode. 3733122798SLuo Jie * @PPE_SCH_WITH_IPG_PREAMBLE_FRAME_CRC: The scheduled frame includes IPG, 3833122798SLuo Jie * preamble, Ethernet packet and CRC. 3933122798SLuo Jie * @PPE_SCH_WITH_FRAME_CRC: The scheduled frame includes Ethernet frame and CRC 4033122798SLuo Jie * excluding IPG and preamble. 4133122798SLuo Jie * @PPE_SCH_WITH_L3_PAYLOAD: The scheduled frame includes layer 3 packet data. 4233122798SLuo Jie */ 4333122798SLuo Jie enum ppe_scheduler_frame_mode { 4433122798SLuo Jie PPE_SCH_WITH_IPG_PREAMBLE_FRAME_CRC = 0, 4533122798SLuo Jie PPE_SCH_WITH_FRAME_CRC = 1, 4633122798SLuo Jie PPE_SCH_WITH_L3_PAYLOAD = 2, 4733122798SLuo Jie }; 4833122798SLuo Jie 4933122798SLuo Jie /** 5033122798SLuo Jie * struct ppe_scheduler_cfg - PPE scheduler configuration. 5133122798SLuo Jie * @flow_id: PPE flow ID. 5233122798SLuo Jie * @pri: Scheduler priority. 5333122798SLuo Jie * @drr_node_id: Node ID for scheduled traffic. 5433122798SLuo Jie * @drr_node_wt: Weight for scheduled traffic. 5533122798SLuo Jie * @unit_is_packet: Packet based or byte based unit for scheduled traffic. 5633122798SLuo Jie * @frame_mode: Packet mode to be scheduled. 5733122798SLuo Jie * 5833122798SLuo Jie * PPE scheduler supports commit rate and exceed rate configurations. 5933122798SLuo Jie */ 6033122798SLuo Jie struct ppe_scheduler_cfg { 6133122798SLuo Jie int flow_id; 6233122798SLuo Jie int pri; 6333122798SLuo Jie int drr_node_id; 6433122798SLuo Jie int drr_node_wt; 6533122798SLuo Jie bool unit_is_packet; 6633122798SLuo Jie enum ppe_scheduler_frame_mode frame_mode; 6733122798SLuo Jie }; 6833122798SLuo Jie 697a23a8afSLuo Jie /** 707a23a8afSLuo Jie * enum ppe_resource_type - PPE resource type. 717a23a8afSLuo Jie * @PPE_RES_UCAST: Unicast queue resource. 727a23a8afSLuo Jie * @PPE_RES_MCAST: Multicast queue resource. 737a23a8afSLuo Jie * @PPE_RES_L0_NODE: Level 0 for queue based node resource. 747a23a8afSLuo Jie * @PPE_RES_L1_NODE: Level 1 for flow based node resource. 757a23a8afSLuo Jie * @PPE_RES_FLOW_ID: Flow based node resource. 767a23a8afSLuo Jie */ 777a23a8afSLuo Jie enum ppe_resource_type { 787a23a8afSLuo Jie PPE_RES_UCAST, 797a23a8afSLuo Jie PPE_RES_MCAST, 807a23a8afSLuo Jie PPE_RES_L0_NODE, 817a23a8afSLuo Jie PPE_RES_L1_NODE, 827a23a8afSLuo Jie PPE_RES_FLOW_ID, 837a23a8afSLuo Jie }; 847a23a8afSLuo Jie 857a23a8afSLuo Jie /** 867a23a8afSLuo Jie * struct ppe_queue_ucast_dest - PPE unicast queue destination. 877a23a8afSLuo Jie * @src_profile: Source profile. 887a23a8afSLuo Jie * @service_code_en: Enable service code to map the queue base ID. 897a23a8afSLuo Jie * @service_code: Service code. 907a23a8afSLuo Jie * @cpu_code_en: Enable CPU code to map the queue base ID. 917a23a8afSLuo Jie * @cpu_code: CPU code. 927a23a8afSLuo Jie * @dest_port: destination port. 937a23a8afSLuo Jie * 947a23a8afSLuo Jie * PPE egress queue ID is decided by the service code if enabled, otherwise 957a23a8afSLuo Jie * by the CPU code if enabled, or by destination port if both service code 967a23a8afSLuo Jie * and CPU code are disabled. 977a23a8afSLuo Jie */ 987a23a8afSLuo Jie struct ppe_queue_ucast_dest { 997a23a8afSLuo Jie int src_profile; 1007a23a8afSLuo Jie bool service_code_en; 1017a23a8afSLuo Jie int service_code; 1027a23a8afSLuo Jie bool cpu_code_en; 1037a23a8afSLuo Jie int cpu_code; 1047a23a8afSLuo Jie int dest_port; 1057a23a8afSLuo Jie }; 1067a23a8afSLuo Jie 10773d05bdaSLuo Jie /* Hardware bitmaps for bypassing features of the ingress packet. */ 10873d05bdaSLuo Jie enum ppe_sc_ingress_type { 10973d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_VLAN_TAG_FMT_CHECK = 0, 11073d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_VLAN_MEMBER_CHECK = 1, 11173d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_VLAN_TRANSLATE = 2, 11273d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_MY_MAC_CHECK = 3, 11373d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_DIP_LOOKUP = 4, 11473d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_FLOW_LOOKUP = 5, 11573d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_FLOW_ACTION = 6, 11673d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_ACL = 7, 11773d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_FAKE_MAC_HEADER = 8, 11873d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_SERVICE_CODE = 9, 11973d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_WRONG_PKT_FMT_L2 = 10, 12073d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_WRONG_PKT_FMT_L3_IPV4 = 11, 12173d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_WRONG_PKT_FMT_L3_IPV6 = 12, 12273d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_WRONG_PKT_FMT_L4 = 13, 12373d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_FLOW_SERVICE_CODE = 14, 12473d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_ACL_SERVICE_CODE = 15, 12573d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_FAKE_L2_PROTO = 16, 12673d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_PPPOE_TERMINATION = 17, 12773d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_DEFAULT_VLAN = 18, 12873d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_DEFAULT_PCP = 19, 12973d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_VSI_ASSIGN = 20, 13073d05bdaSLuo Jie /* Values 21-23 are not specified by hardware. */ 13173d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_VLAN_ASSIGN_FAIL = 24, 13273d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_SOURCE_GUARD = 25, 13373d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_MRU_MTU_CHECK = 26, 13473d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_FLOW_SRC_CHECK = 27, 13573d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_FLOW_QOS = 28, 13673d05bdaSLuo Jie /* This must be last as it determines the size of the BITMAP. */ 13773d05bdaSLuo Jie PPE_SC_BYPASS_INGRESS_SIZE, 13873d05bdaSLuo Jie }; 13973d05bdaSLuo Jie 14073d05bdaSLuo Jie /* Hardware bitmaps for bypassing features of the egress packet. */ 14173d05bdaSLuo Jie enum ppe_sc_egress_type { 14273d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_VLAN_MEMBER_CHECK = 0, 14373d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_VLAN_TRANSLATE = 1, 14473d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_VLAN_TAG_FMT_CTRL = 2, 14573d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_FDB_LEARN = 3, 14673d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_FDB_REFRESH = 4, 14773d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_L2_SOURCE_SECURITY = 5, 14873d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_MANAGEMENT_FWD = 6, 14973d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_BRIDGING_FWD = 7, 15073d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_IN_STP_FLTR = 8, 15173d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_EG_STP_FLTR = 9, 15273d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_SOURCE_FLTR = 10, 15373d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_POLICER = 11, 15473d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_L2_PKT_EDIT = 12, 15573d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_L3_PKT_EDIT = 13, 15673d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_ACL_POST_ROUTING_CHECK = 14, 15773d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_PORT_ISOLATION = 15, 15873d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_PRE_ACL_QOS = 16, 15973d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_POST_ACL_QOS = 17, 16073d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_DSCP_QOS = 18, 16173d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_PCP_QOS = 19, 16273d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_PREHEADER_QOS = 20, 16373d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_FAKE_MAC_DROP = 21, 16473d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_TUNL_CONTEXT = 22, 16573d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_FLOW_POLICER = 23, 16673d05bdaSLuo Jie /* This must be last as it determines the size of the BITMAP. */ 16773d05bdaSLuo Jie PPE_SC_BYPASS_EGRESS_SIZE, 16873d05bdaSLuo Jie }; 16973d05bdaSLuo Jie 17073d05bdaSLuo Jie /* Hardware bitmaps for bypassing counter of packet. */ 17173d05bdaSLuo Jie enum ppe_sc_counter_type { 17273d05bdaSLuo Jie PPE_SC_BYPASS_COUNTER_RX_VLAN = 0, 17373d05bdaSLuo Jie PPE_SC_BYPASS_COUNTER_RX = 1, 17473d05bdaSLuo Jie PPE_SC_BYPASS_COUNTER_TX_VLAN = 2, 17573d05bdaSLuo Jie PPE_SC_BYPASS_COUNTER_TX = 3, 17673d05bdaSLuo Jie /* This must be last as it determines the size of the BITMAP. */ 17773d05bdaSLuo Jie PPE_SC_BYPASS_COUNTER_SIZE, 17873d05bdaSLuo Jie }; 17973d05bdaSLuo Jie 18073d05bdaSLuo Jie /* Hardware bitmaps for bypassing features of tunnel packet. */ 18173d05bdaSLuo Jie enum ppe_sc_tunnel_type { 18273d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_SERVICE_CODE = 0, 18373d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_TUNNEL_HANDLE = 1, 18473d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_L3_IF_CHECK = 2, 18573d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_VLAN_CHECK = 3, 18673d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_DMAC_CHECK = 4, 18773d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_UDP_CSUM_0_CHECK = 5, 18873d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_TBL_DE_ACCE_CHECK = 6, 18973d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_PPPOE_MC_TERM_CHECK = 7, 19073d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_TTL_EXCEED_CHECK = 8, 19173d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_MAP_SRC_CHECK = 9, 19273d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_MAP_DST_CHECK = 10, 19373d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_LPM_DST_LOOKUP = 11, 19473d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_LPM_LOOKUP = 12, 19573d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_WRONG_PKT_FMT_L2 = 13, 19673d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_WRONG_PKT_FMT_L3_IPV4 = 14, 19773d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_WRONG_PKT_FMT_L3_IPV6 = 15, 19873d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_WRONG_PKT_FMT_L4 = 16, 19973d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_WRONG_PKT_FMT_TUNNEL = 17, 20073d05bdaSLuo Jie /* Values 18-19 are not specified by hardware. */ 20173d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_PRE_IPO = 20, 20273d05bdaSLuo Jie /* This must be last as it determines the size of the BITMAP. */ 20373d05bdaSLuo Jie PPE_SC_BYPASS_TUNNEL_SIZE, 20473d05bdaSLuo Jie }; 20573d05bdaSLuo Jie 20673d05bdaSLuo Jie /** 20773d05bdaSLuo Jie * struct ppe_sc_bypass - PPE service bypass bitmaps 20873d05bdaSLuo Jie * @ingress: Bitmap of features that can be bypassed on the ingress packet. 20973d05bdaSLuo Jie * @egress: Bitmap of features that can be bypassed on the egress packet. 21073d05bdaSLuo Jie * @counter: Bitmap of features that can be bypassed on the counter type. 21173d05bdaSLuo Jie * @tunnel: Bitmap of features that can be bypassed on the tunnel packet. 21273d05bdaSLuo Jie */ 21373d05bdaSLuo Jie struct ppe_sc_bypass { 21473d05bdaSLuo Jie DECLARE_BITMAP(ingress, PPE_SC_BYPASS_INGRESS_SIZE); 21573d05bdaSLuo Jie DECLARE_BITMAP(egress, PPE_SC_BYPASS_EGRESS_SIZE); 21673d05bdaSLuo Jie DECLARE_BITMAP(counter, PPE_SC_BYPASS_COUNTER_SIZE); 21773d05bdaSLuo Jie DECLARE_BITMAP(tunnel, PPE_SC_BYPASS_TUNNEL_SIZE); 21873d05bdaSLuo Jie }; 21973d05bdaSLuo Jie 22073d05bdaSLuo Jie /** 22173d05bdaSLuo Jie * struct ppe_sc_cfg - PPE service code configuration. 22273d05bdaSLuo Jie * @dest_port_valid: Generate destination port or not. 22373d05bdaSLuo Jie * @dest_port: Destination port ID. 22473d05bdaSLuo Jie * @bitmaps: Bitmap of bypass features. 22573d05bdaSLuo Jie * @is_src: Destination port acts as source port, packet sent to CPU. 22673d05bdaSLuo Jie * @next_service_code: New service code generated. 22773d05bdaSLuo Jie * @eip_field_update_bitmap: Fields updated as actions taken for EIP. 22873d05bdaSLuo Jie * @eip_hw_service: Selected hardware functions for EIP. 22973d05bdaSLuo Jie * @eip_offset_sel: Packet offset selection, using packet's layer 4 offset 23073d05bdaSLuo Jie * or using packet's layer 3 offset for EIP. 23173d05bdaSLuo Jie * 23273d05bdaSLuo Jie * Service code is generated during the packet passing through PPE. 23373d05bdaSLuo Jie */ 23473d05bdaSLuo Jie struct ppe_sc_cfg { 23573d05bdaSLuo Jie bool dest_port_valid; 23673d05bdaSLuo Jie int dest_port; 23773d05bdaSLuo Jie struct ppe_sc_bypass bitmaps; 23873d05bdaSLuo Jie bool is_src; 23973d05bdaSLuo Jie int next_service_code; 24073d05bdaSLuo Jie int eip_field_update_bitmap; 24173d05bdaSLuo Jie int eip_hw_service; 24273d05bdaSLuo Jie int eip_offset_sel; 24373d05bdaSLuo Jie }; 24473d05bdaSLuo Jie 2458821bb0fSLuo Jie /** 2468821bb0fSLuo Jie * enum ppe_action_type - PPE action of the received packet. 2478821bb0fSLuo Jie * @PPE_ACTION_FORWARD: Packet forwarded per L2/L3 process. 2488821bb0fSLuo Jie * @PPE_ACTION_DROP: Packet dropped by PPE. 2498821bb0fSLuo Jie * @PPE_ACTION_COPY_TO_CPU: Packet copied to CPU port per multicast queue. 2508821bb0fSLuo Jie * @PPE_ACTION_REDIRECT_TO_CPU: Packet redirected to CPU port per unicast queue. 2518821bb0fSLuo Jie */ 2528821bb0fSLuo Jie enum ppe_action_type { 2538821bb0fSLuo Jie PPE_ACTION_FORWARD = 0, 2548821bb0fSLuo Jie PPE_ACTION_DROP = 1, 2558821bb0fSLuo Jie PPE_ACTION_COPY_TO_CPU = 2, 2568821bb0fSLuo Jie PPE_ACTION_REDIRECT_TO_CPU = 3, 2578821bb0fSLuo Jie }; 2588821bb0fSLuo Jie 2591c46c3c0SLuo Jie /** 2601c46c3c0SLuo Jie * struct ppe_rss_hash_cfg - PPE RSS hash configuration. 2611c46c3c0SLuo Jie * @hash_mask: Mask of the generated hash value. 2621c46c3c0SLuo Jie * @hash_fragment_mode: Hash generation mode for the first fragment of TCP, 2631c46c3c0SLuo Jie * UDP and UDP-Lite packets, to use either 3 tuple or 5 tuple for RSS hash 2641c46c3c0SLuo Jie * key computation. 2651c46c3c0SLuo Jie * @hash_seed: Seed to generate RSS hash. 2661c46c3c0SLuo Jie * @hash_sip_mix: Source IP selection. 2671c46c3c0SLuo Jie * @hash_dip_mix: Destination IP selection. 2681c46c3c0SLuo Jie * @hash_protocol_mix: Protocol selection. 2691c46c3c0SLuo Jie * @hash_sport_mix: Source L4 port selection. 2701c46c3c0SLuo Jie * @hash_dport_mix: Destination L4 port selection. 2711c46c3c0SLuo Jie * @hash_fin_inner: RSS hash value first selection. 2721c46c3c0SLuo Jie * @hash_fin_outer: RSS hash value second selection. 2731c46c3c0SLuo Jie * 2741c46c3c0SLuo Jie * PPE RSS hash value is generated for the packet based on the RSS hash 2751c46c3c0SLuo Jie * configured. 2761c46c3c0SLuo Jie */ 2771c46c3c0SLuo Jie struct ppe_rss_hash_cfg { 2781c46c3c0SLuo Jie u32 hash_mask; 2791c46c3c0SLuo Jie bool hash_fragment_mode; 2801c46c3c0SLuo Jie u32 hash_seed; 2811c46c3c0SLuo Jie u8 hash_sip_mix[PPE_RSS_HASH_IP_LENGTH]; 2821c46c3c0SLuo Jie u8 hash_dip_mix[PPE_RSS_HASH_IP_LENGTH]; 2831c46c3c0SLuo Jie u8 hash_protocol_mix; 2841c46c3c0SLuo Jie u8 hash_sport_mix; 2851c46c3c0SLuo Jie u8 hash_dport_mix; 2861c46c3c0SLuo Jie u8 hash_fin_inner[PPE_RSS_HASH_TUPLES]; 2871c46c3c0SLuo Jie u8 hash_fin_outer[PPE_RSS_HASH_TUPLES]; 2881c46c3c0SLuo Jie }; 2891c46c3c0SLuo Jie 2908a971df9SLuo Jie int ppe_hw_config(struct ppe_device *ppe_dev); 29133122798SLuo Jie int ppe_queue_scheduler_set(struct ppe_device *ppe_dev, 29233122798SLuo Jie int node_id, bool flow_level, int port, 29333122798SLuo Jie struct ppe_scheduler_cfg scheduler_cfg); 2947a23a8afSLuo Jie int ppe_queue_ucast_base_set(struct ppe_device *ppe_dev, 2957a23a8afSLuo Jie struct ppe_queue_ucast_dest queue_dst, 2967a23a8afSLuo Jie int queue_base, 2977a23a8afSLuo Jie int profile_id); 2987a23a8afSLuo Jie int ppe_queue_ucast_offset_pri_set(struct ppe_device *ppe_dev, 2997a23a8afSLuo Jie int profile_id, 3007a23a8afSLuo Jie int priority, 3017a23a8afSLuo Jie int queue_offset); 3027a23a8afSLuo Jie int ppe_queue_ucast_offset_hash_set(struct ppe_device *ppe_dev, 3037a23a8afSLuo Jie int profile_id, 3047a23a8afSLuo Jie int rss_hash, 3057a23a8afSLuo Jie int queue_offset); 3067a23a8afSLuo Jie int ppe_port_resource_get(struct ppe_device *ppe_dev, int port, 3077a23a8afSLuo Jie enum ppe_resource_type type, 3087a23a8afSLuo Jie int *res_start, int *res_end); 30973d05bdaSLuo Jie int ppe_sc_config_set(struct ppe_device *ppe_dev, int sc, 31073d05bdaSLuo Jie struct ppe_sc_cfg cfg); 3118821bb0fSLuo Jie int ppe_counter_enable_set(struct ppe_device *ppe_dev, int port); 3121c46c3c0SLuo Jie int ppe_rss_hash_config_set(struct ppe_device *ppe_dev, int mode, 3131c46c3c0SLuo Jie struct ppe_rss_hash_cfg hash_cfg); 314*fa99608aSLuo Jie int ppe_ring_queue_map_set(struct ppe_device *ppe_dev, 315*fa99608aSLuo Jie int ring_id, 316*fa99608aSLuo Jie u32 *queue_map); 3178a971df9SLuo Jie #endif 318