/* * Copyright (c) 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. */ #ifndef _RXPT_CLASSIFY_INFO_H_ #define _RXPT_CLASSIFY_INFO_H_ #if !defined(__ASSEMBLER__) #endif // ################ START SUMMARY ################# // // Dword Fields // 0 reo_destination_indication[4:0], reserved_0a[6:5], use_flow_id_toeplitz_clfy[7], pkt_selection_fp_ucast_data[8], pkt_selection_fp_mcast_data[9], pkt_selection_fp_1000[10], rxdma0_source_ring_selection[12:11], rxdma0_destination_ring_selection[14:13], reserved_0b[31:15] // // ################ END SUMMARY ################# #define NUM_OF_DWORDS_RXPT_CLASSIFY_INFO 1 struct rxpt_classify_info { uint32_t reo_destination_indication : 5, //[4:0] reserved_0a : 2, //[6:5] use_flow_id_toeplitz_clfy : 1, //[7] pkt_selection_fp_ucast_data : 1, //[8] pkt_selection_fp_mcast_data : 1, //[9] pkt_selection_fp_1000 : 1, //[10] rxdma0_source_ring_selection : 2, //[12:11] rxdma0_destination_ring_selection: 2, //[14:13] reserved_0b : 17; //[31:15] }; /* reo_destination_indication The ID of the REO exit ring where the MSDU frame shall push after (MPDU level) reordering has finished. Reo will push the frame into the REO2TCL ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO_release ring Reo will push the frame into the REO2FW ring REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this reserved_0a use_flow_id_toeplitz_clfy Indication to Rx OLE to enable classification based on the chosen Toeplitz hash from Common Parser, in case flow search fails pkt_selection_fp_ucast_data Filter pass Unicast data frame (matching rxpcu_filter_pass and sw_frame_group_Unicast_data) routing selection 1'b0: source and destination rings are selected from the RxOLE register settings for the packet type 1'b1: source ring and destination ring is selected from the rxdma0_source_ring_selection and rxdma0_destination_ring_selection fields in this STRUCT pkt_selection_fp_mcast_data Filter pass Multicast data frame (matching rxpcu_filter_pass and sw_frame_group_Multicast_data) routing selection 1'b0: source and destination rings are selected from the RxOLE register settings for the packet type 1'b1: source ring and destination ring is selected from the rxdma0_source_ring_selection and rxdma0_destination_ring_selection fields in this STRUCT pkt_selection_fp_1000 Filter pass BAR frame (matching rxpcu_filter_pass and sw_frame_group_ctrl_1000) routing selection 1'b0: source and destination rings are selected from the RxOLE register settings for the packet type 1'b1: source ring and destination ring is selected from the rxdma0_source_ring_selection and rxdma0_destination_ring_selection fields in this STRUCT rxdma0_source_ring_selection Field only valid when for the received frame type the corresponding pkt_selection_fp_... bit is set The data buffer for The data buffer for this frame shall be sourced by fw2rxdma buffer source ring. The data buffer for this frame shall be sourced by sw2rxdma buffer source ring. The frame shall not be written to any data buffer. rxdma0_destination_ring_selection Field only valid when for the received frame type the corresponding pkt_selection_fp_... bit is set RXDMA0 shall push the frame to the Release ring. Effectively this means the frame needs to be dropped. RXDMA0 shall push the frame to the FW ring. RXDMA0 shall push the frame to the SW ring. RXDMA0 shall push the frame to the REO entrance ring. reserved_0b */ /* Description RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION The ID of the REO exit ring where the MSDU frame shall push after (MPDU level) reordering has finished. Reo will push the frame into the REO2TCL ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO2SW1 ring Reo will push the frame into the REO_release ring Reo will push the frame into the REO2FW ring REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this REO remaps this */ #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_LSB 0 #define RXPT_CLASSIFY_INFO_0_REO_DESTINATION_INDICATION_MASK 0x0000001f /* Description RXPT_CLASSIFY_INFO_0_RESERVED_0A */ #define RXPT_CLASSIFY_INFO_0_RESERVED_0A_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_RESERVED_0A_LSB 5 #define RXPT_CLASSIFY_INFO_0_RESERVED_0A_MASK 0x00000060 /* Description RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY Indication to Rx OLE to enable classification based on the chosen Toeplitz hash from Common Parser, in case flow search fails */ #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_LSB 7 #define RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY_MASK 0x00000080 /* Description RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA Filter pass Unicast data frame (matching rxpcu_filter_pass and sw_frame_group_Unicast_data) routing selection 1'b0: source and destination rings are selected from the RxOLE register settings for the packet type 1'b1: source ring and destination ring is selected from the rxdma0_source_ring_selection and rxdma0_destination_ring_selection fields in this STRUCT */ #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_LSB 8 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_UCAST_DATA_MASK 0x00000100 /* Description RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA Filter pass Multicast data frame (matching rxpcu_filter_pass and sw_frame_group_Multicast_data) routing selection 1'b0: source and destination rings are selected from the RxOLE register settings for the packet type 1'b1: source ring and destination ring is selected from the rxdma0_source_ring_selection and rxdma0_destination_ring_selection fields in this STRUCT */ #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_LSB 9 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_MCAST_DATA_MASK 0x00000200 /* Description RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000 Filter pass BAR frame (matching rxpcu_filter_pass and sw_frame_group_ctrl_1000) routing selection 1'b0: source and destination rings are selected from the RxOLE register settings for the packet type 1'b1: source ring and destination ring is selected from the rxdma0_source_ring_selection and rxdma0_destination_ring_selection fields in this STRUCT */ #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_LSB 10 #define RXPT_CLASSIFY_INFO_0_PKT_SELECTION_FP_1000_MASK 0x00000400 /* Description RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION Field only valid when for the received frame type the corresponding pkt_selection_fp_... bit is set The data buffer for The data buffer for this frame shall be sourced by fw2rxdma buffer source ring. The data buffer for this frame shall be sourced by sw2rxdma buffer source ring. The frame shall not be written to any data buffer. */ #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_LSB 11 #define RXPT_CLASSIFY_INFO_0_RXDMA0_SOURCE_RING_SELECTION_MASK 0x00001800 /* Description RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION Field only valid when for the received frame type the corresponding pkt_selection_fp_... bit is set RXDMA0 shall push the frame to the Release ring. Effectively this means the frame needs to be dropped. RXDMA0 shall push the frame to the FW ring. RXDMA0 shall push the frame to the SW ring. RXDMA0 shall push the frame to the REO entrance ring. */ #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_LSB 13 #define RXPT_CLASSIFY_INFO_0_RXDMA0_DESTINATION_RING_SELECTION_MASK 0x00006000 /* Description RXPT_CLASSIFY_INFO_0_RESERVED_0B */ #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_LSB 15 #define RXPT_CLASSIFY_INFO_0_RESERVED_0B_MASK 0xffff8000 #endif // _RXPT_CLASSIFY_INFO_H_