blob: 08ecdc3e9bba76229abd76bf423e47005748f166 [file] [log] [blame]
/******************************************************************************
*
* 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.
*
*****************************************************************************/
#ifndef SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_MVM_APIVERSION_H_
#define SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_MVM_APIVERSION_H_
// Do some macro trickery so that structs that aren't really supported for a specific product
// will get a version number of 99. This is needed for the COMMANDS_VERSIONS_LIST TLV.
#define NOT_EMPTY(ver) ver
#define ITS_EMPTY(ver) 99
#define SECOND(a, b, ...) b
#define IS_PROBE(args...) SECOND(args, NOT_EMPTY)
#define PROBE() ~, ITS_EMPTY
#define _EMPTY_ PROBE()
#define SELF_IF_NOT_EMPTY(ver) IS_PROBE(_EMPTY_##ver)(ver)
#define __API_VERSION(name, ver) name##_VER_##ver
#define _API_VERSION(name, ver) __API_VERSION(name, ver)
#define API_VERSION(name, ver) _API_VERSION(name, SELF_IF_NOT_EMPTY(ver))
#define CHANNEL_WIDTH_MSK_API_D API_VERSION(CHANNEL_WIDTH_MSK_API_D, 2)
#define RATE_MCS_DUP_MSK_API_D API_VERSION(RATE_MCS_DUP_MSK_API_D, 2)
#define RATE_MCS_DUP_POS_API_D API_VERSION(RATE_MCS_DUP_POS_API_D, 2)
#define RATE_MCS_FAT_MSK_API_D API_VERSION(RATE_MCS_FAT_MSK_API_D, 2)
#define MAX_SUPP_MCS_API_D API_VERSION(MAX_SUPP_MCS_API_D, 1)
#define MAX_LEGAL_MCS_API_D API_VERSION(MAX_LEGAL_MCS_API_D, 1)
#define MAX_TX_MCS_API_D API_VERSION(MAX_TX_MCS_API_D, 1)
#define POWER_TABLE_NUM_CCK_ENTRIES_API_D API_VERSION(POWER_TABLE_NUM_CCK_ENTRIES_API_D, 1)
#define POWER_TABLE_NUM_HT_OFDM_ENTRIES_API_D API_VERSION(POWER_TABLE_NUM_HT_OFDM_ENTRIES_API_D, 1)
#define POWER_TABLE_TOTAL_ENTRIES_API_D API_VERSION(POWER_TABLE_TOTAL_ENTRIES_API_D, 1)
#define MCS_API_E API_VERSION(MCS_API_E, 1)
#define RATE_MCS_BITS_API_S API_VERSION(RATE_MCS_BITS_API_S, 3)
#define RATE_MCS_API_S API_VERSION(RATE_MCS_API_S, 1)
#define RATE_MCS_API_U API_VERSION(RATE_MCS_API_U, 1)
#define IS_RATE_CCK_API_M API_VERSION(IS_RATE_CCK_API_M, 3)
#define IS_RATE_OFDM_API_M API_VERSION(IS_RATE_OFDM_API_M, 2)
#define IS_RATE_OFDM_LEGACY_API_M API_VERSION(IS_RATE_OFDM_LEGACY_API_M, 2)
#define IS_RATE_OFDM_HT_API_M API_VERSION(IS_RATE_OFDM_HT_API_M, 2)
#define IS_RATE_OFDM_VHT_API_M API_VERSION(IS_RATE_OFDM_VHT_API_M, 3)
#define IS_RATE_OFDM_HT_VHT_API_M API_VERSION(IS_RATE_OFDM_HT_VHT_API_M, 3)
#define GET_MIMO_INDEX_API_M API_VERSION(GET_MIMO_INDEX_API_M, 3)
#define IS_RATE_OFDM_HT_MIMO_API_M API_VERSION(IS_RATE_OFDM_HT_MIMO_API_M, 2)
#define IS_RATE_OFDM_HT_FAT_API_M API_VERSION(IS_RATE_OFDM_HT_FAT_API_M, 2)
#define IS_BAD_OFDM_HT_RATE_API_M API_VERSION(IS_BAD_OFDM_HT_RATE_API_M, 3)
#define GET_ANT_CHAIN_API_M API_VERSION(GET_ANT_CHAIN_API_M, 1)
#define GET_ANT_CHAIN_NUM_API_M API_VERSION(GET_ANT_CHAIN_NUM_API_M, 1)
#define IS_RATE_STBC_PRESENT_API_M API_VERSION(IS_RATE_STBC_PRESENT_API_M, 1)
#define GET_NUM_OF_STBC_SS_API_M API_VERSION(GET_NUM_OF_STBC_SS_API_M, 1)
#define GET_BW_INDEX_API_M API_VERSION(GET_BW_INDEX_API_M, 2)
#define GET_DUP_INDEX_API_M API_VERSION(GET_DUP_INDEX_API_M, 2)
#define GET_CHANNEL_WIDTH_INDEX_API_M API_VERSION(GET_CHANNEL_WIDTH_INDEX_API_M, 2)
#define GET_GI_INDEX_API_M API_VERSION(GET_GI_INDEX_API_M, 1)
#define GET_HT_MIMO_INDEX_API_M API_VERSION(GET_HT_MIMO_INDEX_API_M, 1)
#define GET_NUM_OF_HT_SS_API_M API_VERSION(GET_NUM_OF_HT_SS_API_M, 1)
#define IS_RATE_OFDM_HT2x2MIMO_API_M API_VERSION(IS_RATE_OFDM_HT2x2MIMO_API_M, 1)
#define IS_RATE_OFDM_HT3x3MIMO_API_M API_VERSION(IS_RATE_OFDM_HT3x3MIMO_API_M, 1)
#define IS_RATE_OFDM_HT4x4MIMO_API_M API_VERSION(IS_RATE_OFDM_HT4x4MIMO_API_M, 1)
#define GET_HT_RATE_CODE_API_M API_VERSION(GET_HT_RATE_CODE_API_M, 1)
#define IS_RATE_HT_STBC_SINGLE_SS_API_M API_VERSION(IS_RATE_HT_STBC_SINGLE_SS_API_M, 1)
#define GET_NUM_OF_HT_EXT_LTF_API_M API_VERSION(GET_NUM_OF_HT_EXT_LTF_API_M, 1)
#define GET_NUM_OF_HT_SPACE_TIME_STREAMS_API_M \
API_VERSION(GET_NUM_OF_HT_SPACE_TIME_STREAMS_API_M, 1)
#define IS_RATE_HT_HIGH_RATE_API_M API_VERSION(IS_RATE_HT_HIGH_RATE_API_M, 1)
#define GET_VHT_MIMO_INDX_API_M API_VERSION(GET_VHT_MIMO_INDX_API_M, 1)
#define GET_NUM_OF_VHT_SS_API_M API_VERSION(GET_NUM_OF_VHT_SS_API_M, 1)
#define GET_VHT_RATE_CODE_API_M API_VERSION(GET_VHT_RATE_CODE_API_M, 1)
#define GET_HT_VHT_RATE_CODE_API_M API_VERSION(GET_HT_VHT_RATE_CODE_API_M, 1)
#define IS_VHT_STBC_PRESENT_API_M API_VERSION(IS_VHT_STBC_PRESENT_API_M, 1)
#define GET_NUM_OF_VHT_SPACE_TIME_STREAMS_API_M \
API_VERSION(GET_NUM_OF_VHT_SPACE_TIME_STREAMS_API_M, 1)
#define IS_RATE_OFDM_LDPC_API_M API_VERSION(IS_RATE_OFDM_LDPC_API_M, 2)
#define GET_BF_INDEX_API_M API_VERSION(GET_BF_INDEX_API_M, 1)
#define IS_RATE_VHT_MU_API_M API_VERSION(IS_RATE_VHT_MU_API_M, 1)
#define TLC_MNG_CONFIG_PARAMS_CMD_API_S API_VERSION(TLC_MNG_CONFIG_PARAMS_CMD_API_S, 2)
#define TLC_MNG_CONFIG_CMD_API_S API_VERSION(TLC_MNG_CONFIG_CMD_API_S, 2)
#endif // SRC_CONNECTIVITY_WLAN_DRIVERS_THIRD_PARTY_INTEL_IWLWIFI_MVM_APIVERSION_H_