| /****************************************************************************** |
| * |
| * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
| * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH |
| * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
| * Copyright(c) 2018 Intel Corporation |
| * All rights reserved. |
| * |
| * 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 Intel Corporation nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "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 THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS 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. |
| * |
| *****************************************************************************/ |
| /**************************************************************************** |
| * File Name : apiGroup_0x5_Datapath.h |
| * |
| * |
| * Description : This file contains all the structures and definitions required |
| * for Commands, Responses and Notifications in Group 0x5 (Datapath Services and HW configuration) |
| ****************************************************************************/ |
| |
| #ifndef SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_MVM_APIGROUPDATAPATH_H_ |
| #define SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_MVM_APIGROUPDATAPATH_H_ |
| |
| #include <fuchsia/hardware/wlanphyinfo/c/banjo.h> |
| |
| /* *************************************************************************** |
| * 0x0F - GRP_DATAPATH_TLC_MNG_CONFIG_CMD |
| *************************************************************************** */ |
| |
| /** |
| ***************************************************************************** |
| * @ingroup TlcMngConfig |
| * |
| * @title{config the TLC Manager} |
| * @type{Command} |
| * |
| * The purpose is for the driver to configure the TLC engine |
| * with initial parameters and limitations, which will be used |
| * |
| * @return |
| * @fwImages |
| * Protocol |
| * |
| *****************************************************************************/ |
| |
| typedef enum _TLC_MNG_NSS_E { |
| TLC_MNG_NSS_1, |
| TLC_MNG_NSS_2, |
| |
| TLC_MNG_NSS_MAX, |
| } TLC_MNG_NSS_E; |
| |
| typedef enum _TLC_MNG_MODE_E { |
| TLC_MNG_MODE_CCK = 0, |
| TLC_MNG_MODE_OFDM_LEGACY = TLC_MNG_MODE_CCK, |
| TLC_MNG_MODE_LEGACY = TLC_MNG_MODE_CCK, |
| TLC_MNG_MODE_HT, |
| TLC_MNG_MODE_VHT, |
| TLC_MNG_MODE_HE, |
| TLC_MNG_MODE_INVALID, // keep last |
| TLC_MNG_MODE_NUM = TLC_MNG_MODE_INVALID, |
| } TLC_MNG_MODE_E; |
| |
| // TLC_MNG_CONFIG_FLAGS - set the bit when the feature is enabled |
| |
| /* STBC supported. |
| * NOTE: For HT/VHT this bit implies STBC support for all bandwidths. For HE this bit is used to |
| * imply STBC support for bandwidth <= 80Mhz only (bit 19 of the HE PHY Capabilities IE) |
| */ |
| #define TLC_MNG_CONFIG_FLAGS_STBC_MSK BIT(0) |
| |
| /* |
| * LDPC supported |
| */ |
| #define TLC_MNG_CONFIG_FLAGS_LDPC_MSK BIT(1) |
| |
| /* |
| * STBC supported for 160Mhz bandwidth in HE |
| * (in HE PHY Capabilites IE, bit 63 is set) |
| */ |
| #define TLC_MNG_CONFIG_FLAGS_HE_STBC_160MHZ_MSK BIT(2) |
| |
| /* |
| * HE Dual Carrier Modulation (DCM) supported for BPSK (MCS 0) SISO |
| * (in HE PHY Capabilites IE, bits 27-28 are > 0) |
| */ |
| #define TLC_MNG_CONFIG_FLAGS_HE_DCM_NSS_1_MSK BIT(3) |
| |
| /* |
| * HE Dual Carrier Modulation (DCM) supported for BPSK (MCS 0) MIMO |
| * (in HE PHY Capabilites IE, bits 27-28 are > 0, and bit 29 is set) |
| */ |
| #define TLC_MNG_CONFIG_FLAGS_HE_DCM_NSS_2_MSK BIT(4) |
| |
| /* |
| * QCOM APs have a problem receiving frames with 2x LTF @160MHz, even though this is madatory by |
| * spec. |
| * Set this bit in order to prevent transmission with 2x LTF for all bandwidths (done this way in |
| * order to keep the W/A as simple as possible). |
| * NOTE - since setting this appies for all bandwidths, avoid setting it if the association doesn't |
| * support 160MHz. |
| */ |
| #define TLC_MNG_CONFIG_FLAGS_HE_BLOCK_2X_LTF_MSK BIT(15) |
| |
| typedef enum _TLC_MNG_CH_WIDTH_E { |
| TLC_MNG_CH_WIDTH_20MHZ, |
| TLC_MNG_CH_WIDTH_40MHZ, |
| TLC_MNG_CH_WIDTH_80MHZ, |
| TLC_MNG_CH_WIDTH_160MHZ, |
| TLC_MNG_CH_WIDTH_MAX, |
| } TLC_MNG_CH_WIDTH_E; |
| |
| #define TLC_MNG_CHAIN_A_MSK BIT(0) |
| #define TLC_MNG_CHAIN_B_MSK BIT(1) |
| |
| #define TLC_AMSDU_NOT_SUPPORTED 0 |
| #define TLC_AMSDU_SUPPORTED 1 |
| |
| typedef struct _TLC_MNG_CONFIG_PARAMS_CMD_API_S_VER_2 { |
| U08 maxChWidth; // one of TLC_MNG_CH_WIDTH_E |
| U08 bestSuppMode; // best mode supported - as defined above in TLC_MNG_MODE_E |
| U08 chainsEnabled; // bitmask of TLC_MNG_CHAIN_[A/B]_MSK |
| U08 amsduSupported; // TX AMSDU transmission is supported |
| // Use TLC_AMSDU_[NOT_]SUPPORTED |
| U16 configFlags; // bitmask of TLC_MNG_CONFIG_FLAGS_* |
| U16 nonHt; // bitmap of supported non-HT CCK and OFDM rates |
| /* bit | rate |
| -------|-------- |
| 0 | R_1M CCK |
| 1 | R_2M CCK |
| 2 | R_5_5M CCK |
| 3 | R_11M CCK |
| 4 | R_6M OFDM |
| 5 | R_9M OFDM |
| 6 | R_12M OFDM |
| 7 | R_18M OFDM |
| 8 | R_24M OFDM |
| 9 | R_36M OFDM |
| 10 | R_48M OFDM |
| 11 | R_54M OFDM |
| */ |
| U16 mcs[TLC_MNG_NSS_MAX][2]; // supported HT/VHT/HE rates per nss. [0] for 80mhz width |
| // and lower, [1] for 160mhz. |
| // This is done in order to conform with HE capabilites. |
| U16 maxMpduLen; // Max length of MPDU, in bytes. |
| // Used to calculate allowed A-MSDU sizes. |
| U08 sgiChWidthSupport; // bitmap of SGI support per channel width. |
| // use 1 << BIT(TLC_MNG_CH_WIDTH_*) to indicate sgi support |
| // for that channel width. |
| // unused for HE. |
| U08 reserved1[1]; |
| |
| wlan_info_band_t band; |
| } TLC_MNG_CONFIG_PARAMS_CMD_API_S_VER_2; |
| |
| #endif // SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_MVM_APIGROUPDATAPATH_H_ |