/* * Copyright (c) 2019, 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], lmac_peer_id_msb[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] lmac_peer_id_msb : 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 REO2SW2 ring Reo will push the frame into the REO2SW3 ring Reo will push the frame into the REO2SW4 ring Reo will push the frame into the REO_release ring Reo will push the frame into the REO2FW ring Reo will push the frame into the REO2SW5 ring (REO remaps this in chips without REO2SW5 ring, e.g. Pine) Reo will push the frame into the REO2SW6 ring (REO remaps this in chips without REO2SW6 ring, e.g. Pine) 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 lmac_peer_id_msb If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1, hash[3:0]} using the chosen Toeplitz hash from Common Parser if flow search fails. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb 's not 2'b00, Rx OLE uses a REO desination indication of {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash from Common Parser if flow search fails. This LMAC/peer-based routing is not supported in Hastings80 and HastingsPrime. use_flow_id_toeplitz_clfy Indication to Rx OLE to enable REO destination routing 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 REO2SW2 ring Reo will push the frame into the REO2SW3 ring Reo will push the frame into the REO2SW4 ring Reo will push the frame into the REO_release ring Reo will push the frame into the REO2FW ring Reo will push the frame into the REO2SW5 ring (REO remaps this in chips without REO2SW5 ring, e.g. Pine) Reo will push the frame into the REO2SW6 ring (REO remaps this in chips without REO2SW6 ring, e.g. Pine) 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_LMAC_PEER_ID_MSB If use_flow_id_toeplitz_clfy is set and lmac_peer_id_'sb is 2'b00, Rx OLE uses a REO desination indicati'n of {1'b1, hash[3:0]} using the chosen Toeplitz hash from Common Parser if flow search fails. If use_flow_id_toeplitz_clfy is set and lmac_peer_id_msb 's not 2'b00, Rx OLE uses a REO desination indication of {lmac_peer_id_msb, hash[2:0]} using the chosen Toeplitz hash from Common Parser if flow search fails. This LMAC/peer-based routing is not supported in Hastings80 and HastingsPrime. */ #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_OFFSET 0x00000000 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_LSB 5 #define RXPT_CLASSIFY_INFO_0_LMAC_PEER_ID_MSB_MASK 0x00000060 /* Description RXPT_CLASSIFY_INFO_0_USE_FLOW_ID_TOEPLITZ_CLFY Indication to Rx OLE to enable REO destination routing 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_