/* * Copyright (c) 2023 Qualcomm Innovation Center, Inc. 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 _RX_MSDU_EXT_DESC_INFO_H_ #define _RX_MSDU_EXT_DESC_INFO_H_ #if !defined(__ASSEMBLER__) #endif #define NUM_OF_DWORDS_RX_MSDU_EXT_DESC_INFO 1 struct rx_msdu_ext_desc_info { #ifndef WIFI_BIT_ORDER_BIG_ENDIAN uint32_t reo_destination_indication : 5, // [4:0] service_code : 9, // [13:5] priority_valid : 1, // [14:14] data_offset : 12, // [26:15] src_link_id : 3, // [29:27] reserved_0a : 2; // [31:30] #else uint32_t reserved_0a : 2, // [31:30] src_link_id : 3, // [29:27] data_offset : 12, // [26:15] priority_valid : 1, // [14:14] service_code : 9, // [13:5] reo_destination_indication : 5; // [4:0] #endif }; /* Description REO_DESTINATION_INDICATION Parsed from RX_MSDU_END TLV . In the case MSDU spans over multiple buffers, this field will be valid in the Last buffer used by the MSDU 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 REO2SW0 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) Reo will push the frame into the REO2SW6 ring (REO remaps this in chips without REO2SW6 ring) Reo will push the frame into the REO2SW7 ring (REO remaps this in chips without REO2SW7 ring) Reo will push the frame into the REO2SW8 ring (REO remaps this in chips without REO2SW8 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 */ #define RX_MSDU_EXT_DESC_INFO_REO_DESTINATION_INDICATION_OFFSET 0x00000000 #define RX_MSDU_EXT_DESC_INFO_REO_DESTINATION_INDICATION_LSB 0 #define RX_MSDU_EXT_DESC_INFO_REO_DESTINATION_INDICATION_MSB 4 #define RX_MSDU_EXT_DESC_INFO_REO_DESTINATION_INDICATION_MASK 0x0000001f /* Description SERVICE_CODE Opaque service code between PPE and Wi-Fi This field gets passed on by REO to PPE in the EDMA descriptor ('REO_TO_PPE_RING'). */ #define RX_MSDU_EXT_DESC_INFO_SERVICE_CODE_OFFSET 0x00000000 #define RX_MSDU_EXT_DESC_INFO_SERVICE_CODE_LSB 5 #define RX_MSDU_EXT_DESC_INFO_SERVICE_CODE_MSB 13 #define RX_MSDU_EXT_DESC_INFO_SERVICE_CODE_MASK 0x00003fe0 /* Description PRIORITY_VALID This field gets passed on by REO to PPE in the EDMA descriptor ('REO_TO_PPE_RING'). */ #define RX_MSDU_EXT_DESC_INFO_PRIORITY_VALID_OFFSET 0x00000000 #define RX_MSDU_EXT_DESC_INFO_PRIORITY_VALID_LSB 14 #define RX_MSDU_EXT_DESC_INFO_PRIORITY_VALID_MSB 14 #define RX_MSDU_EXT_DESC_INFO_PRIORITY_VALID_MASK 0x00004000 /* Description DATA_OFFSET The offset to Rx packet data within the buffer (including Rx DMA offset programming and L3 header padding inserted by Rx OLE). This field gets passed on by REO to PPE in the EDMA descriptor ('REO_TO_PPE_RING'). */ #define RX_MSDU_EXT_DESC_INFO_DATA_OFFSET_OFFSET 0x00000000 #define RX_MSDU_EXT_DESC_INFO_DATA_OFFSET_LSB 15 #define RX_MSDU_EXT_DESC_INFO_DATA_OFFSET_MSB 26 #define RX_MSDU_EXT_DESC_INFO_DATA_OFFSET_MASK 0x07ff8000 /* Description SRC_LINK_ID Consumer: SW Producer: RXDMA Set to the link ID of the PMAC that received the frame */ #define RX_MSDU_EXT_DESC_INFO_SRC_LINK_ID_OFFSET 0x00000000 #define RX_MSDU_EXT_DESC_INFO_SRC_LINK_ID_LSB 27 #define RX_MSDU_EXT_DESC_INFO_SRC_LINK_ID_MSB 29 #define RX_MSDU_EXT_DESC_INFO_SRC_LINK_ID_MASK 0x38000000 /* Description RESERVED_0A */ #define RX_MSDU_EXT_DESC_INFO_RESERVED_0A_OFFSET 0x00000000 #define RX_MSDU_EXT_DESC_INFO_RESERVED_0A_LSB 30 #define RX_MSDU_EXT_DESC_INFO_RESERVED_0A_MSB 31 #define RX_MSDU_EXT_DESC_INFO_RESERVED_0A_MASK 0xc0000000 #endif // RX_MSDU_EXT_DESC_INFO