| /* |
| * rate.c |
| * |
| * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. |
| * 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 Texas Instruments 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 rate.c |
| * \brief Rate conversion |
| * |
| * \see rate.h |
| */ |
| #define __FILE_ID__ FILE_ID_131 |
| #include "tidef.h" |
| #include "rate.h" |
| |
| ERate rate_NetToDrv (TI_UINT32 rate) |
| { |
| switch (rate) |
| { |
| case NET_RATE_1M: |
| case NET_RATE_1M_BASIC: |
| return DRV_RATE_1M; |
| |
| case NET_RATE_2M: |
| case NET_RATE_2M_BASIC: |
| return DRV_RATE_2M; |
| |
| case NET_RATE_5_5M: |
| case NET_RATE_5_5M_BASIC: |
| return DRV_RATE_5_5M; |
| |
| case NET_RATE_11M: |
| case NET_RATE_11M_BASIC: |
| return DRV_RATE_11M; |
| |
| case NET_RATE_22M: |
| case NET_RATE_22M_BASIC: |
| return DRV_RATE_22M; |
| |
| case NET_RATE_6M: |
| case NET_RATE_6M_BASIC: |
| return DRV_RATE_6M; |
| |
| case NET_RATE_9M: |
| case NET_RATE_9M_BASIC: |
| return DRV_RATE_9M; |
| |
| case NET_RATE_12M: |
| case NET_RATE_12M_BASIC: |
| return DRV_RATE_12M; |
| |
| case NET_RATE_18M: |
| case NET_RATE_18M_BASIC: |
| return DRV_RATE_18M; |
| |
| case NET_RATE_24M: |
| case NET_RATE_24M_BASIC: |
| return DRV_RATE_24M; |
| |
| case NET_RATE_36M: |
| case NET_RATE_36M_BASIC: |
| return DRV_RATE_36M; |
| |
| case NET_RATE_48M: |
| case NET_RATE_48M_BASIC: |
| return DRV_RATE_48M; |
| |
| case NET_RATE_54M: |
| case NET_RATE_54M_BASIC: |
| return DRV_RATE_54M; |
| |
| case NET_RATE_MCS0: |
| case NET_RATE_MCS0_BASIC: |
| return DRV_RATE_MCS_0; |
| |
| case NET_RATE_MCS1: |
| case NET_RATE_MCS1_BASIC: |
| return DRV_RATE_MCS_1; |
| |
| case NET_RATE_MCS2: |
| case NET_RATE_MCS2_BASIC: |
| return DRV_RATE_MCS_2; |
| |
| case NET_RATE_MCS3: |
| case NET_RATE_MCS3_BASIC: |
| return DRV_RATE_MCS_3; |
| |
| case NET_RATE_MCS4: |
| case NET_RATE_MCS4_BASIC: |
| return DRV_RATE_MCS_4; |
| |
| case NET_RATE_MCS5: |
| case NET_RATE_MCS5_BASIC: |
| return DRV_RATE_MCS_5; |
| |
| case NET_RATE_MCS6: |
| case NET_RATE_MCS6_BASIC: |
| return DRV_RATE_MCS_6; |
| |
| case NET_RATE_MCS7: |
| case NET_RATE_MCS7_BASIC: |
| return DRV_RATE_MCS_7; |
| |
| default: |
| return DRV_RATE_INVALID; |
| } |
| } |
| |
| /************************************************************************ |
| * hostToNetworkRate * |
| ************************************************************************ |
| DESCRIPTION: Translates a host rate (1, 2, 3, ....) to network rate (0x02, 0x82, 0x84, etc...) |
| |
| INPUT: rate - Host rate |
| |
| OUTPUT: |
| |
| |
| RETURN: Network rate if the input rate is valid, otherwise returns 0. |
| |
| ************************************************************************/ |
| ENetRate rate_DrvToNet (ERate rate) |
| { |
| switch (rate) |
| { |
| case DRV_RATE_AUTO: |
| return NET_RATE_AUTO; |
| |
| case DRV_RATE_1M: |
| return NET_RATE_1M; |
| |
| case DRV_RATE_2M: |
| return NET_RATE_2M; |
| |
| case DRV_RATE_5_5M: |
| return NET_RATE_5_5M; |
| |
| case DRV_RATE_11M: |
| return NET_RATE_11M; |
| |
| case DRV_RATE_22M: |
| return NET_RATE_22M; |
| |
| case DRV_RATE_6M: |
| return NET_RATE_6M; |
| |
| case DRV_RATE_9M: |
| return NET_RATE_9M; |
| |
| case DRV_RATE_12M: |
| return NET_RATE_12M; |
| |
| case DRV_RATE_18M: |
| return NET_RATE_18M; |
| |
| case DRV_RATE_24M: |
| return NET_RATE_24M; |
| |
| case DRV_RATE_36M: |
| return NET_RATE_36M; |
| |
| case DRV_RATE_48M: |
| return NET_RATE_48M; |
| |
| case DRV_RATE_54M: |
| return NET_RATE_54M; |
| |
| case DRV_RATE_MCS_0: |
| return NET_RATE_MCS0; |
| |
| case DRV_RATE_MCS_1: |
| return NET_RATE_MCS1; |
| |
| case DRV_RATE_MCS_2: |
| return NET_RATE_MCS2; |
| |
| case DRV_RATE_MCS_3: |
| return NET_RATE_MCS3; |
| |
| case DRV_RATE_MCS_4: |
| return NET_RATE_MCS4; |
| |
| case DRV_RATE_MCS_5: |
| return NET_RATE_MCS5; |
| |
| case DRV_RATE_MCS_6: |
| return NET_RATE_MCS6; |
| |
| case DRV_RATE_MCS_7: |
| return NET_RATE_MCS7; |
| |
| default: |
| return NET_RATE_AUTO; |
| } |
| } |
| |
| /*************************************************************************** |
| * getMaxActiveRatefromBitmap * |
| **************************************************************************** |
| * DESCRIPTION: |
| * |
| * INPUTS: hCtrlData - the object |
| * |
| * OUTPUT: |
| * |
| * RETURNS: |
| ***************************************************************************/ |
| ERate rate_GetMaxFromDrvBitmap (TI_UINT32 uRateBitMap) |
| { |
| if (uRateBitMap & DRV_RATE_MASK_MCS_7_OFDM) |
| { |
| return DRV_RATE_MCS_7; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_MCS_6_OFDM) |
| { |
| return DRV_RATE_MCS_6; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_MCS_5_OFDM) |
| { |
| return DRV_RATE_MCS_5; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_MCS_4_OFDM) |
| { |
| return DRV_RATE_MCS_4; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_MCS_3_OFDM) |
| { |
| return DRV_RATE_MCS_3; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_MCS_2_OFDM) |
| { |
| return DRV_RATE_MCS_2; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_MCS_1_OFDM) |
| { |
| return DRV_RATE_MCS_1; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_MCS_0_OFDM) |
| { |
| return DRV_RATE_MCS_0; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_54_OFDM) |
| { |
| return DRV_RATE_54M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_48_OFDM) |
| { |
| return DRV_RATE_48M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_36_OFDM) |
| { |
| return DRV_RATE_36M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_24_OFDM) |
| { |
| return DRV_RATE_24M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_22_PBCC) |
| { |
| return DRV_RATE_22M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_18_OFDM) |
| { |
| return DRV_RATE_18M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_12_OFDM) |
| { |
| return DRV_RATE_12M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_11_CCK) |
| { |
| return DRV_RATE_11M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_9_OFDM) |
| { |
| return DRV_RATE_9M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_6_OFDM) |
| { |
| return DRV_RATE_6M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_5_5_CCK) |
| { |
| return DRV_RATE_5_5M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_2_BARKER) |
| { |
| return DRV_RATE_2M; |
| } |
| |
| if (uRateBitMap & DRV_RATE_MASK_1_BARKER) |
| { |
| return DRV_RATE_1M; |
| } |
| |
| return DRV_RATE_INVALID; |
| } |
| |
| /************************************************************************ |
| * validateNetworkRate * |
| ************************************************************************ |
| DESCRIPTION: Verify that the input nitwork rate is valid |
| |
| INPUT: rate - input network rate |
| |
| OUTPUT: |
| |
| |
| RETURN: TI_OK if valid, otherwise TI_NOK |
| |
| ************************************************************************/ |
| static TI_STATUS rate_ValidateNet (ENetRate eRate) |
| { |
| switch (eRate) |
| { |
| case NET_RATE_1M: |
| case NET_RATE_1M_BASIC: |
| case NET_RATE_2M: |
| case NET_RATE_2M_BASIC: |
| case NET_RATE_5_5M: |
| case NET_RATE_5_5M_BASIC: |
| case NET_RATE_11M: |
| case NET_RATE_11M_BASIC: |
| case NET_RATE_22M: |
| case NET_RATE_22M_BASIC: |
| case NET_RATE_6M: |
| case NET_RATE_6M_BASIC: |
| case NET_RATE_9M: |
| case NET_RATE_9M_BASIC: |
| case NET_RATE_12M: |
| case NET_RATE_12M_BASIC: |
| case NET_RATE_18M: |
| case NET_RATE_18M_BASIC: |
| case NET_RATE_24M: |
| case NET_RATE_24M_BASIC: |
| case NET_RATE_36M: |
| case NET_RATE_36M_BASIC: |
| case NET_RATE_48M: |
| case NET_RATE_48M_BASIC: |
| case NET_RATE_54M: |
| case NET_RATE_54M_BASIC: |
| return TI_OK; |
| |
| default: |
| return TI_NOK; |
| } |
| } |
| |
| /************************************************************************ |
| * getMaxBasicRate * |
| ************************************************************************ |
| DESCRIPTION: Goes over an array of network rates and returns the max basic rate |
| |
| INPUT: pRates - Rate array |
| |
| OUTPUT: |
| |
| |
| RETURN: Max basic rate (in network units) |
| |
| ************************************************************************/ |
| ENetRate rate_GetMaxBasicFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate) |
| { |
| TI_UINT32 i; |
| |
| for (i = 0; i < len; i++) |
| { |
| if (NET_BASIC_RATE (pRatesString[i]) && rate_ValidateNet ((ENetRate)pRatesString[i]) == TI_OK) |
| { |
| eMaxRate = TI_MAX ((ENetRate)pRatesString[i], eMaxRate); |
| } |
| } |
| |
| return eMaxRate; |
| } |
| |
| /************************************************************************ |
| * getMaxActiveRate * |
| ************************************************************************ |
| DESCRIPTION: Goes over an array of network rates and returns the max active rate |
| |
| INPUT: pRates - Rate array |
| |
| OUTPUT: |
| |
| |
| RETURN: Max active rate (in network units) |
| |
| ************************************************************************/ |
| ENetRate rate_GetMaxActiveFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate) |
| { |
| TI_UINT32 i; |
| |
| for (i = 0; i < len; i++) |
| { |
| if (NET_ACTIVE_RATE (pRatesString[i]) && rate_ValidateNet ((ENetRate)pRatesString[i]) == TI_OK) |
| { |
| eMaxRate = TI_MAX ((ENetRate)pRatesString[i], eMaxRate); |
| } |
| } |
| |
| return eMaxRate; |
| } |
| |
| TI_UINT32 rate_DrvToNumber (ERate eRate) |
| { |
| switch (eRate) |
| { |
| case DRV_RATE_1M: |
| return 1; |
| |
| case DRV_RATE_2M: |
| return 2; |
| |
| case DRV_RATE_5_5M: |
| return 5; |
| |
| case DRV_RATE_11M: |
| return 11; |
| |
| case DRV_RATE_22M: |
| return 22; |
| |
| case DRV_RATE_6M: |
| return 6; |
| |
| case DRV_RATE_9M: |
| return 9; |
| |
| case DRV_RATE_12M: |
| return 12; |
| |
| case DRV_RATE_18M: |
| return 18; |
| |
| case DRV_RATE_24M: |
| return 24; |
| |
| case DRV_RATE_36M: |
| return 36; |
| |
| case DRV_RATE_48M: |
| return 48; |
| |
| case DRV_RATE_54M: |
| return 54; |
| |
| case DRV_RATE_MCS_0: |
| return 6; |
| |
| case DRV_RATE_MCS_1: |
| return 13; |
| |
| case DRV_RATE_MCS_2: |
| return 19; |
| |
| case DRV_RATE_MCS_3: |
| return 26; |
| |
| case DRV_RATE_MCS_4: |
| return 39; |
| |
| case DRV_RATE_MCS_5: |
| return 52; |
| |
| case DRV_RATE_MCS_6: |
| return 58; |
| |
| case DRV_RATE_MCS_7: |
| return 65; |
| |
| default: |
| return 0; |
| } |
| } |
| |
| /************************************************************************ |
| * bitMapToNetworkStringRates * |
| ************************************************************************ |
| DESCRIPTION: Converts bit map to the rates string |
| |
| INPUT: suppRatesBitMap - bit map of supported rates |
| basicRatesBitMap - bit map of basic rates |
| |
| OUTPUT: string - network format rates array, |
| len - rates array length |
| firstOFDMrateLoc - the index of first OFDM rate in the rates array. |
| |
| |
| RETURN: None |
| |
| ************************************************************************/ |
| TI_STATUS rate_DrvBitmapToNetStr (TI_UINT32 uSuppRatesBitMap, |
| TI_UINT32 uBasicRatesBitMap, |
| TI_UINT8 *string, |
| TI_UINT32 *len, |
| TI_UINT32 *pFirstOfdmRate) |
| { |
| TI_UINT32 i = 0; |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_1_BARKER) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_1_BARKER) |
| { |
| string[i++] = NET_RATE_1M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_1M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_2_BARKER) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_2_BARKER) |
| { |
| string[i++] = NET_RATE_2M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_2M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_5_5_CCK) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_5_5_CCK) |
| { |
| string[i++] = NET_RATE_5_5M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_5_5M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_11_CCK) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_11_CCK) |
| { |
| string[i++] = NET_RATE_11M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_11M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_22_PBCC) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_22_PBCC) |
| { |
| string[i++] = NET_RATE_22M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_22M; |
| } |
| } |
| |
| *pFirstOfdmRate = i; |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_6_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_6_OFDM) |
| { |
| string[i++] = NET_RATE_6M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_6M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_9_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_9_OFDM) |
| { |
| string[i++] = NET_RATE_9M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_9M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_12_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_12_OFDM) |
| { |
| string[i++] = NET_RATE_12M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_12M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_18_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_18_OFDM) |
| { |
| string[i++] = NET_RATE_18M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_18M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_24_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_24_OFDM) |
| { |
| string[i++] = NET_RATE_24M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_24M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_36_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_36_OFDM) |
| { |
| string[i++] = NET_RATE_36M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_36M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_48_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_48_OFDM) |
| { |
| string[i++] = NET_RATE_48M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_48M; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_54_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_54_OFDM) |
| { |
| string[i++] = NET_RATE_54M_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_54M; |
| } |
| } |
| |
| *len = i; |
| |
| return TI_OK; |
| } |
| |
| |
| /************************************************************************ |
| * bitMapToNetworkStringRates * |
| ************************************************************************ |
| DESCRIPTION: Converts bit map to the rates string |
| |
| INPUT: suppRatesBitMap - bit map of supported rates |
| basicRatesBitMap - bit map of basic rates |
| |
| OUTPUT: string - network format rates array, |
| len - rates array length |
| firstOFDMrateLoc - the index of first OFDM rate in the rates array. |
| |
| |
| RETURN: None |
| |
| ************************************************************************/ |
| TI_STATUS rate_DrvBitmapToNetStrIncluding11n (TI_UINT32 uSuppRatesBitMap, |
| TI_UINT32 uBasicRatesBitMap, |
| TI_UINT8 *string, |
| TI_UINT32 *pFirstOfdmRate) |
| { |
| TI_UINT32 i = 0; |
| |
| |
| rate_DrvBitmapToNetStr (uSuppRatesBitMap, uBasicRatesBitMap, string, &i, pFirstOfdmRate); |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_0_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_0_OFDM) |
| { |
| string[i++] = NET_RATE_MCS0_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS0; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_1_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_1_OFDM) |
| { |
| string[i++] = NET_RATE_MCS1_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS1; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_2_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_2_OFDM) |
| { |
| string[i++] = NET_RATE_MCS2_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS2; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_3_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_3_OFDM) |
| { |
| string[i++] = NET_RATE_MCS3_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS3; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_4_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_4_OFDM) |
| { |
| string[i++] = NET_RATE_MCS4_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS4; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_5_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_5_OFDM) |
| { |
| string[i++] = NET_RATE_MCS5_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS5; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_6_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_6_OFDM) |
| { |
| string[i++] = NET_RATE_MCS6_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS6; |
| } |
| } |
| |
| if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_7_OFDM) |
| { |
| if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_7_OFDM) |
| { |
| string[i++] = NET_RATE_MCS7_BASIC; |
| } |
| else |
| { |
| string[i++] = NET_RATE_MCS7; |
| } |
| } |
| |
| |
| return TI_OK; |
| } |
| |
| /************************************************************************ |
| * networkStringToBitMapSuppRates * |
| ************************************************************************ |
| DESCRIPTION: Converts supported rates string to the bit map |
| |
| INPUT: string - array of rates in the network format |
| len - array length |
| |
| OUTPUT: bitMap - bit map of rates. |
| |
| RETURN: None |
| |
| ************************************************************************/ |
| TI_STATUS rate_NetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len) |
| { |
| TI_UINT32 i; |
| |
| *pBitMap = 0; |
| |
| for (i = 0; i < len; i++) |
| { |
| switch (string[i]) |
| { |
| case NET_RATE_1M: |
| case NET_RATE_1M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_1_BARKER; |
| break; |
| |
| case NET_RATE_2M: |
| case NET_RATE_2M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_2_BARKER; |
| break; |
| |
| case NET_RATE_5_5M: |
| case NET_RATE_5_5M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_5_5_CCK; |
| break; |
| |
| case NET_RATE_11M: |
| case NET_RATE_11M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_11_CCK; |
| break; |
| |
| case NET_RATE_22M: |
| case NET_RATE_22M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_22_PBCC; |
| break; |
| |
| case NET_RATE_6M: |
| case NET_RATE_6M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_6_OFDM; |
| break; |
| |
| case NET_RATE_9M: |
| case NET_RATE_9M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_9_OFDM; |
| break; |
| |
| case NET_RATE_12M: |
| case NET_RATE_12M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_12_OFDM; |
| break; |
| |
| case NET_RATE_18M: |
| case NET_RATE_18M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_18_OFDM; |
| break; |
| |
| case NET_RATE_24M: |
| case NET_RATE_24M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_24_OFDM; |
| break; |
| |
| case NET_RATE_36M: |
| case NET_RATE_36M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_36_OFDM; |
| break; |
| |
| case NET_RATE_48M: |
| case NET_RATE_48M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_48_OFDM; |
| break; |
| |
| case NET_RATE_54M: |
| case NET_RATE_54M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_54_OFDM; |
| break; |
| |
| case NET_RATE_MCS0: |
| case NET_RATE_MCS0_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_0_OFDM; |
| break; |
| |
| case NET_RATE_MCS1: |
| case NET_RATE_MCS1_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_1_OFDM; |
| break; |
| |
| case NET_RATE_MCS2: |
| case NET_RATE_MCS2_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_2_OFDM; |
| break; |
| |
| case NET_RATE_MCS3: |
| case NET_RATE_MCS3_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_3_OFDM; |
| break; |
| |
| case NET_RATE_MCS4: |
| case NET_RATE_MCS4_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_4_OFDM; |
| break; |
| |
| case NET_RATE_MCS5: |
| case NET_RATE_MCS5_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_5_OFDM; |
| break; |
| |
| case NET_RATE_MCS6: |
| case NET_RATE_MCS6_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_6_OFDM; |
| break; |
| |
| case NET_RATE_MCS7: |
| case NET_RATE_MCS7_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_7_OFDM; |
| break; |
| |
| default: |
| break; |
| } |
| } |
| |
| return TI_OK; |
| } |
| |
| /************************************************************************ |
| * networkStringToBitMapBasicRates * |
| ************************************************************************ |
| DESCRIPTION: Converts basic rates string to the bit map |
| |
| INPUT: string - array of rates in the network format |
| len - array length |
| |
| OUTPUT: bitMap - bit map of rates. |
| |
| RETURN: None |
| |
| ************************************************************************/ |
| TI_STATUS rate_NetBasicStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len) |
| { |
| TI_UINT32 i; |
| |
| *pBitMap = 0; |
| |
| for (i = 0; i < len; i++) |
| { |
| switch (string[i]) |
| { |
| case NET_RATE_1M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_1_BARKER; |
| break; |
| |
| case NET_RATE_2M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_2_BARKER; |
| break; |
| |
| case NET_RATE_5_5M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_5_5_CCK; |
| break; |
| |
| case NET_RATE_11M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_11_CCK; |
| break; |
| |
| case NET_RATE_22M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_22_PBCC; |
| break; |
| |
| case NET_RATE_6M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_6_OFDM; |
| break; |
| |
| case NET_RATE_9M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_9_OFDM; |
| break; |
| |
| case NET_RATE_12M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_12_OFDM; |
| break; |
| |
| case NET_RATE_18M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_18_OFDM; |
| break; |
| |
| case NET_RATE_24M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_24_OFDM; |
| break; |
| |
| case NET_RATE_36M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_36_OFDM; |
| break; |
| |
| case NET_RATE_48M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_48_OFDM; |
| break; |
| |
| case NET_RATE_54M_BASIC: |
| *pBitMap |= DRV_RATE_MASK_54_OFDM; |
| break; |
| |
| case NET_RATE_MCS0_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_0_OFDM; |
| break; |
| |
| case NET_RATE_MCS1_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_1_OFDM; |
| break; |
| |
| case NET_RATE_MCS2_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_2_OFDM; |
| break; |
| |
| case NET_RATE_MCS3_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_3_OFDM; |
| break; |
| |
| case NET_RATE_MCS4_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_4_OFDM; |
| break; |
| |
| case NET_RATE_MCS5_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_5_OFDM; |
| break; |
| |
| case NET_RATE_MCS6_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_6_OFDM; |
| break; |
| |
| case NET_RATE_MCS7_BASIC: |
| *pBitMap |= DRV_RATE_MASK_MCS_7_OFDM; |
| break; |
| |
| default: |
| break; |
| } |
| } |
| |
| return TI_OK; |
| } |
| |
| |
| /************************************************************************ |
| * rate_McsNetStrToDrvBitmap * |
| ************************************************************************ |
| DESCRIPTION: Converts MCS IEs rates bit map to driver bit map. |
| supported only MCS0 - MCS7 |
| |
| INPUT: string - HT capabilities IE in the network format |
| len - IE array length |
| |
| OUTPUT: bitMap - bit map of rates. |
| |
| RETURN: None |
| |
| ************************************************************************/ |
| TI_STATUS rate_McsNetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string) |
| { |
| *pBitMap = string[0]; |
| |
| *pBitMap = *pBitMap << (DRV_RATE_MCS_0 - 1); |
| |
| return TI_OK; |
| } |
| |
| |
| TI_STATUS rate_DrvBitmapToHwBitmap (TI_UINT32 uDrvBitMap, TI_UINT32 *pHwBitmap) |
| { |
| TI_UINT32 uHwBitMap = 0; |
| |
| if (uDrvBitMap & DRV_RATE_MASK_1_BARKER) |
| { |
| uHwBitMap |= HW_BIT_RATE_1MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_2_BARKER) |
| { |
| uHwBitMap |= HW_BIT_RATE_2MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_5_5_CCK) |
| { |
| uHwBitMap |= HW_BIT_RATE_5_5MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_11_CCK) |
| { |
| uHwBitMap |= HW_BIT_RATE_11MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_22_PBCC) |
| { |
| uHwBitMap |= HW_BIT_RATE_22MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_6_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_6MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_9_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_9MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_12_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_12MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_18_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_18MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_24_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_24MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_36_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_36MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_48_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_48MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_54_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_54MBPS; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_0_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_0; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_1_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_1; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_2_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_2; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_3_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_3; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_4_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_4; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_5_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_5; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_6_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_6; |
| } |
| |
| if (uDrvBitMap & DRV_RATE_MASK_MCS_7_OFDM) |
| { |
| uHwBitMap |= HW_BIT_RATE_MCS_7; |
| } |
| |
| *pHwBitmap = uHwBitMap; |
| |
| return TI_OK; |
| } |
| |
| TI_STATUS rate_PolicyToDrv (ETxRateClassId ePolicyRate, ERate *eAppRate) |
| { |
| ERate Rate = DRV_RATE_AUTO; |
| TI_STATUS status = TI_OK; |
| |
| switch (ePolicyRate) |
| { |
| case txPolicy1 : Rate = DRV_RATE_1M ; break; |
| case txPolicy2 : Rate = DRV_RATE_2M ; break; |
| case txPolicy5_5 : Rate = DRV_RATE_5_5M ; break; |
| case txPolicy11 : Rate = DRV_RATE_11M ; break; |
| case txPolicy22 : Rate = DRV_RATE_22M ; break; |
| case txPolicy6 : Rate = DRV_RATE_6M ; break; |
| case txPolicy9 : Rate = DRV_RATE_9M ; break; |
| case txPolicy12 : Rate = DRV_RATE_12M ; break; |
| case txPolicy18 : Rate = DRV_RATE_18M ; break; |
| case txPolicy24 : Rate = DRV_RATE_24M ; break; |
| case txPolicy36 : Rate = DRV_RATE_36M ; break; |
| case txPolicy48 : Rate = DRV_RATE_48M ; break; |
| case txPolicy54 : Rate = DRV_RATE_54M ; break; |
| case txPolicyMcs0 : Rate = DRV_RATE_MCS_0; break; |
| case txPolicyMcs1 : Rate = DRV_RATE_MCS_1; break; |
| case txPolicyMcs2 : Rate = DRV_RATE_MCS_2; break; |
| case txPolicyMcs3 : Rate = DRV_RATE_MCS_3; break; |
| case txPolicyMcs4 : Rate = DRV_RATE_MCS_4; break; |
| case txPolicyMcs5 : Rate = DRV_RATE_MCS_5; break; |
| case txPolicyMcs6 : Rate = DRV_RATE_MCS_6; break; |
| case txPolicyMcs7 : Rate = DRV_RATE_MCS_7; break; |
| |
| default: |
| status = TI_NOK; |
| break; |
| } |
| |
| if (status == TI_OK) |
| *eAppRate = Rate; |
| else |
| *eAppRate = DRV_RATE_INVALID; |
| |
| return status; |
| } |
| |
| |
| TI_UINT32 rate_BasicToDrvBitmap (EBasicRateSet eBasicRateSet, TI_BOOL bDot11a) |
| { |
| if (!bDot11a) |
| { |
| switch (eBasicRateSet) |
| { |
| case BASIC_RATE_SET_1_2: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER; |
| |
| case BASIC_RATE_SET_1_2_5_5_11: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK; |
| |
| case BASIC_RATE_SET_UP_TO_12: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_18: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_24: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_36: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_48: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_54: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| case BASIC_RATE_SET_6_12_24: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| case BASIC_RATE_SET_1_2_5_5_6_11_12_24: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| case BASIC_RATE_SET_ALL_MCS_RATES: |
| return DRV_RATE_MASK_MCS_0_OFDM | |
| DRV_RATE_MASK_MCS_1_OFDM | |
| DRV_RATE_MASK_MCS_2_OFDM | |
| DRV_RATE_MASK_MCS_3_OFDM | |
| DRV_RATE_MASK_MCS_4_OFDM | |
| DRV_RATE_MASK_MCS_5_OFDM | |
| DRV_RATE_MASK_MCS_6_OFDM | |
| DRV_RATE_MASK_MCS_7_OFDM | |
| DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK; |
| |
| |
| default: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER; |
| } |
| } |
| else |
| { |
| switch (eBasicRateSet) |
| { |
| case BASIC_RATE_SET_UP_TO_12: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_18: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_24: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_36: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_48: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM; |
| |
| case BASIC_RATE_SET_UP_TO_54: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| case BASIC_RATE_SET_6_12_24: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| case BASIC_RATE_SET_ALL_MCS_RATES: |
| return DRV_RATE_MASK_MCS_0_OFDM | |
| DRV_RATE_MASK_MCS_1_OFDM | |
| DRV_RATE_MASK_MCS_2_OFDM | |
| DRV_RATE_MASK_MCS_3_OFDM | |
| DRV_RATE_MASK_MCS_4_OFDM | |
| DRV_RATE_MASK_MCS_5_OFDM | |
| DRV_RATE_MASK_MCS_6_OFDM | |
| DRV_RATE_MASK_MCS_7_OFDM | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| default: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| } |
| } |
| } |
| |
| TI_UINT32 rate_SupportedToDrvBitmap (ESupportedRateSet eSupportedRateSet, TI_BOOL bDot11a) |
| { |
| if (!bDot11a) |
| { |
| switch (eSupportedRateSet) |
| { |
| case SUPPORTED_RATE_SET_1_2: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER; |
| |
| case SUPPORTED_RATE_SET_1_2_5_5_11: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK; |
| |
| case SUPPORTED_RATE_SET_1_2_5_5_11_22: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_22_PBCC; |
| |
| case SUPPORTED_RATE_SET_UP_TO_18: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_24: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_36: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_48: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_54: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| case SUPPORTED_RATE_SET_ALL: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_22_PBCC | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| case SUPPORTED_RATE_SET_ALL_OFDM: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| case SUPPORTED_RATE_SET_ALL_MCS_RATES: |
| return DRV_RATE_MASK_MCS_0_OFDM | |
| DRV_RATE_MASK_MCS_1_OFDM | |
| DRV_RATE_MASK_MCS_2_OFDM | |
| DRV_RATE_MASK_MCS_3_OFDM | |
| DRV_RATE_MASK_MCS_4_OFDM | |
| DRV_RATE_MASK_MCS_5_OFDM | |
| DRV_RATE_MASK_MCS_6_OFDM | |
| DRV_RATE_MASK_MCS_7_OFDM | |
| DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_22_PBCC | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| default: |
| return DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_22_PBCC | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| } |
| } |
| else |
| { |
| switch (eSupportedRateSet) |
| { |
| case SUPPORTED_RATE_SET_UP_TO_18: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_24: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_36: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_48: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM; |
| |
| case SUPPORTED_RATE_SET_UP_TO_54: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| case SUPPORTED_RATE_SET_ALL: |
| case SUPPORTED_RATE_SET_ALL_OFDM: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| case SUPPORTED_RATE_SET_ALL_MCS_RATES: |
| return DRV_RATE_MASK_MCS_0_OFDM | |
| DRV_RATE_MASK_MCS_1_OFDM | |
| DRV_RATE_MASK_MCS_2_OFDM | |
| DRV_RATE_MASK_MCS_3_OFDM | |
| DRV_RATE_MASK_MCS_4_OFDM | |
| DRV_RATE_MASK_MCS_5_OFDM | |
| DRV_RATE_MASK_MCS_6_OFDM | |
| DRV_RATE_MASK_MCS_7_OFDM | |
| DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| |
| default: |
| return DRV_RATE_MASK_6_OFDM | |
| DRV_RATE_MASK_9_OFDM | |
| DRV_RATE_MASK_12_OFDM | |
| DRV_RATE_MASK_18_OFDM | |
| DRV_RATE_MASK_24_OFDM | |
| DRV_RATE_MASK_36_OFDM | |
| DRV_RATE_MASK_48_OFDM | |
| DRV_RATE_MASK_54_OFDM; |
| } |
| } |
| } |
| |
| TI_STATUS rate_ValidateVsBand (TI_UINT32 *pSupportedMask, TI_UINT32 *pBasicMask, TI_BOOL bDot11a) |
| { |
| if (bDot11a) |
| { |
| *pSupportedMask &= ~ |
| ( |
| DRV_RATE_MASK_1_BARKER | |
| DRV_RATE_MASK_2_BARKER | |
| DRV_RATE_MASK_5_5_CCK | |
| DRV_RATE_MASK_11_CCK | |
| DRV_RATE_MASK_22_PBCC |
| ); |
| } |
| |
| *pBasicMask &= *pSupportedMask; |
| |
| if (*pBasicMask == 0) |
| { |
| if (bDot11a) |
| { |
| *pBasicMask = DRV_RATE_MASK_6_OFDM | DRV_RATE_MASK_12_OFDM | DRV_RATE_MASK_24_OFDM; |
| } |
| else |
| { |
| *pBasicMask = DRV_RATE_MASK_1_BARKER | DRV_RATE_MASK_2_BARKER; |
| } |
| } |
| |
| return TI_OK; |
| } |
| |
| /*----------------------------------------------------------------------------- |
| Routine Name: RateNumberToHost |
| Routine Description: |
| Arguments: |
| Return Value: None |
| -----------------------------------------------------------------------------*/ |
| ERate rate_NumberToDrv (TI_UINT32 rate) |
| { |
| switch (rate) |
| { |
| case 0x1: |
| return DRV_RATE_1M; |
| |
| case 0x2: |
| return DRV_RATE_2M; |
| |
| case 0x5: |
| return DRV_RATE_5_5M; |
| |
| case 0xB: |
| return DRV_RATE_11M; |
| |
| case 0x16: |
| return DRV_RATE_22M; |
| |
| case 0x6: |
| return DRV_RATE_6M; |
| |
| case 0x9: |
| return DRV_RATE_9M; |
| |
| case 0xC: |
| return DRV_RATE_12M; |
| |
| case 0x12: |
| return DRV_RATE_18M; |
| |
| case 0x18: |
| return DRV_RATE_24M; |
| |
| case 0x24: |
| return DRV_RATE_36M; |
| |
| case 0x30: |
| return DRV_RATE_48M; |
| |
| case 0x36: |
| return DRV_RATE_54M; |
| |
| /* MCS rate */ |
| case 0x7: |
| return DRV_RATE_MCS_0; |
| |
| case 0xD: |
| return DRV_RATE_MCS_1; |
| |
| case 0x13: |
| return DRV_RATE_MCS_2; |
| |
| case 0x1A: |
| return DRV_RATE_MCS_3; |
| |
| case 0x27: |
| return DRV_RATE_MCS_4; |
| |
| case 0x34: |
| return DRV_RATE_MCS_5; |
| |
| case 0x3A: |
| return DRV_RATE_MCS_6; |
| |
| case 0x41: |
| return DRV_RATE_MCS_7; |
| |
| default: |
| return DRV_RATE_6M; |
| } |
| } |
| |
| TI_UINT32 rate_GetDrvBitmapForDefaultBasicSet () |
| { |
| return rate_BasicToDrvBitmap (BASIC_RATE_SET_1_2_5_5_11, TI_FALSE); |
| } |
| |
| TI_UINT32 rate_GetDrvBitmapForDefaultSupporteSet () |
| { |
| return rate_SupportedToDrvBitmap (SUPPORTED_RATE_SET_1_2_5_5_11, TI_FALSE); |
| } |
| |