utils/rate.c
changeset 0 10c42ec6c05f
equal deleted inserted replaced
-1:000000000000 0:10c42ec6c05f
       
     1 /*
       
     2  * rate.c
       
     3  *
       
     4  * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.      
       
     5  * All rights reserved.      
       
     6  * 
       
     7  * This program and the accompanying materials are made available under the 
       
     8  * terms of the Eclipse Public License v1.0 or BSD License which accompanies
       
     9  * this distribution. The Eclipse Public License is available at
       
    10  * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.                                   
       
    11  *                                                                       
       
    12  * Redistribution and use in source and binary forms, with or without    
       
    13  * modification, are permitted provided that the following conditions    
       
    14  * are met:                                                              
       
    15  *                                                                       
       
    16  *  * Redistributions of source code must retain the above copyright     
       
    17  *    notice, this list of conditions and the following disclaimer.      
       
    18  *  * Redistributions in binary form must reproduce the above copyright  
       
    19  *    notice, this list of conditions and the following disclaimer in    
       
    20  *    the documentation and/or other materials provided with the         
       
    21  *    distribution.                                                      
       
    22  *  * Neither the name Texas Instruments nor the names of its            
       
    23  *    contributors may be used to endorse or promote products derived    
       
    24  *    from this software without specific prior written permission.      
       
    25  *                                                                       
       
    26  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   
       
    27  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     
       
    28  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 
       
    29  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  
       
    30  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
       
    31  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      
       
    32  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
       
    33  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
       
    34  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   
       
    35  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
       
    36  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
    37  */
       
    38 
       
    39 
       
    40 /** \file  rate.c
       
    41  *  \brief Rate conversion
       
    42  *
       
    43  *  \see   rate.h
       
    44  */
       
    45 #define __FILE_ID__  FILE_ID_131
       
    46 #include "tidef.h"
       
    47 #include "rate.h"
       
    48 
       
    49 
       
    50 
       
    51 ERate rate_NetToDrv (TI_UINT32 rate)
       
    52 {
       
    53     switch (rate)
       
    54     {
       
    55         case NET_RATE_1M:
       
    56         case NET_RATE_1M_BASIC:
       
    57             return DRV_RATE_1M;
       
    58 
       
    59         case NET_RATE_2M:
       
    60         case NET_RATE_2M_BASIC:
       
    61             return DRV_RATE_2M;
       
    62 
       
    63         case NET_RATE_5_5M:
       
    64         case NET_RATE_5_5M_BASIC:
       
    65             return DRV_RATE_5_5M;
       
    66 
       
    67         case NET_RATE_11M:
       
    68         case NET_RATE_11M_BASIC:
       
    69             return DRV_RATE_11M;
       
    70 
       
    71         case NET_RATE_22M:
       
    72         case NET_RATE_22M_BASIC:
       
    73             return DRV_RATE_22M;
       
    74 
       
    75         case NET_RATE_6M:
       
    76         case NET_RATE_6M_BASIC:
       
    77             return DRV_RATE_6M;
       
    78 
       
    79         case NET_RATE_9M:
       
    80         case NET_RATE_9M_BASIC:
       
    81             return DRV_RATE_9M;
       
    82 
       
    83         case NET_RATE_12M:
       
    84         case NET_RATE_12M_BASIC:
       
    85             return DRV_RATE_12M;
       
    86 
       
    87         case NET_RATE_18M:
       
    88         case NET_RATE_18M_BASIC:
       
    89             return DRV_RATE_18M;
       
    90 
       
    91         case NET_RATE_24M:
       
    92         case NET_RATE_24M_BASIC:
       
    93             return DRV_RATE_24M;
       
    94 
       
    95         case NET_RATE_36M:
       
    96         case NET_RATE_36M_BASIC:
       
    97             return DRV_RATE_36M;
       
    98 
       
    99         case NET_RATE_48M:
       
   100         case NET_RATE_48M_BASIC:
       
   101             return DRV_RATE_48M;
       
   102 
       
   103         case NET_RATE_54M:
       
   104         case NET_RATE_54M_BASIC:
       
   105             return DRV_RATE_54M;
       
   106 
       
   107         case NET_RATE_MCS0:
       
   108         case NET_RATE_MCS0_BASIC:
       
   109             return DRV_RATE_MCS_0;
       
   110 
       
   111         case NET_RATE_MCS1:
       
   112         case NET_RATE_MCS1_BASIC:
       
   113             return DRV_RATE_MCS_1;
       
   114 
       
   115         case NET_RATE_MCS2:
       
   116         case NET_RATE_MCS2_BASIC:
       
   117             return DRV_RATE_MCS_2;
       
   118 
       
   119         case NET_RATE_MCS3:
       
   120         case NET_RATE_MCS3_BASIC:
       
   121             return DRV_RATE_MCS_3;
       
   122 
       
   123         case NET_RATE_MCS4:
       
   124         case NET_RATE_MCS4_BASIC:
       
   125             return DRV_RATE_MCS_4;
       
   126 
       
   127         case NET_RATE_MCS5:
       
   128         case NET_RATE_MCS5_BASIC:
       
   129             return DRV_RATE_MCS_5;
       
   130 
       
   131         case NET_RATE_MCS6:
       
   132         case NET_RATE_MCS6_BASIC:
       
   133             return DRV_RATE_MCS_6;
       
   134 
       
   135         case NET_RATE_MCS7:
       
   136         case NET_RATE_MCS7_BASIC:
       
   137             return DRV_RATE_MCS_7;
       
   138 
       
   139         default:
       
   140             return DRV_RATE_INVALID;
       
   141     }
       
   142 }
       
   143 
       
   144 /************************************************************************
       
   145  *                        hostToNetworkRate                         *
       
   146  ************************************************************************
       
   147 DESCRIPTION: Translates a host rate (1, 2, 3, ....) to network rate (0x02, 0x82, 0x84, etc...) 
       
   148                                                                                                    
       
   149 INPUT:      rate        -   Host rate
       
   150 
       
   151 OUTPUT:     
       
   152 
       
   153 
       
   154 RETURN:     Network rate if the input rate is valid, otherwise returns 0.
       
   155 
       
   156 ************************************************************************/
       
   157 ENetRate rate_DrvToNet (ERate rate)
       
   158 {
       
   159     switch (rate)
       
   160     {
       
   161         case DRV_RATE_AUTO:
       
   162             return NET_BASIC_MASK;
       
   163 
       
   164         case DRV_RATE_1M:
       
   165             return NET_RATE_1M;
       
   166 
       
   167         case DRV_RATE_2M:
       
   168             return NET_RATE_2M;
       
   169 
       
   170         case DRV_RATE_5_5M:
       
   171             return NET_RATE_5_5M;
       
   172 
       
   173         case DRV_RATE_11M:
       
   174             return NET_RATE_11M;
       
   175 
       
   176         case DRV_RATE_22M:
       
   177             return NET_RATE_22M;
       
   178 
       
   179         case DRV_RATE_6M:
       
   180             return NET_RATE_6M;
       
   181 
       
   182         case DRV_RATE_9M:
       
   183             return NET_RATE_9M;
       
   184 
       
   185         case DRV_RATE_12M:
       
   186             return NET_RATE_12M;
       
   187 
       
   188         case DRV_RATE_18M:
       
   189             return NET_RATE_18M;
       
   190 
       
   191         case DRV_RATE_24M:
       
   192             return NET_RATE_24M;
       
   193 
       
   194         case DRV_RATE_36M:
       
   195             return NET_RATE_36M;
       
   196 
       
   197         case DRV_RATE_48M:
       
   198             return NET_RATE_48M;
       
   199 
       
   200         case DRV_RATE_54M:
       
   201             return NET_RATE_54M;
       
   202 
       
   203         case DRV_RATE_MCS_0:
       
   204             return NET_RATE_MCS0;
       
   205 
       
   206         case DRV_RATE_MCS_1:
       
   207             return NET_RATE_MCS1;
       
   208     
       
   209         case DRV_RATE_MCS_2:
       
   210             return NET_RATE_MCS2;
       
   211     
       
   212         case DRV_RATE_MCS_3:
       
   213             return NET_RATE_MCS3;
       
   214     
       
   215         case DRV_RATE_MCS_4:
       
   216             return NET_RATE_MCS4;
       
   217     
       
   218         case DRV_RATE_MCS_5:
       
   219             return NET_RATE_MCS5;
       
   220     
       
   221         case DRV_RATE_MCS_6:
       
   222             return NET_RATE_MCS6;
       
   223     
       
   224         case DRV_RATE_MCS_7:
       
   225             return NET_RATE_MCS7;
       
   226 
       
   227         default:
       
   228             return NET_BASIC_MASK;
       
   229     }
       
   230 }
       
   231 
       
   232 /***************************************************************************
       
   233 *                   getMaxActiveRatefromBitmap                             *
       
   234 ****************************************************************************
       
   235 * DESCRIPTION:  
       
   236 *
       
   237 * INPUTS:       hCtrlData - the object
       
   238 *               
       
   239 * OUTPUT:       
       
   240 *
       
   241 * RETURNS:      
       
   242 ***************************************************************************/
       
   243 ERate rate_GetMaxFromDrvBitmap (TI_UINT32 uRateBitMap)
       
   244 {
       
   245     if (uRateBitMap & DRV_RATE_MASK_MCS_7_OFDM)
       
   246     {
       
   247         return DRV_RATE_MCS_7;
       
   248     }
       
   249 
       
   250     if (uRateBitMap & DRV_RATE_MASK_MCS_6_OFDM)
       
   251     {
       
   252         return DRV_RATE_MCS_6;
       
   253     }
       
   254 
       
   255     if (uRateBitMap & DRV_RATE_MASK_MCS_5_OFDM)
       
   256     {
       
   257         return DRV_RATE_MCS_5;
       
   258     }
       
   259 
       
   260     if (uRateBitMap & DRV_RATE_MASK_MCS_4_OFDM)
       
   261     {
       
   262         return DRV_RATE_MCS_4;
       
   263     }
       
   264 
       
   265     if (uRateBitMap & DRV_RATE_MASK_MCS_3_OFDM)
       
   266     {
       
   267         return DRV_RATE_MCS_3;
       
   268     }
       
   269 
       
   270     if (uRateBitMap & DRV_RATE_MASK_MCS_2_OFDM)
       
   271     {
       
   272         return DRV_RATE_MCS_2;
       
   273     }
       
   274 
       
   275     if (uRateBitMap & DRV_RATE_MASK_MCS_1_OFDM)
       
   276     {
       
   277         return DRV_RATE_MCS_1;
       
   278     }
       
   279 
       
   280     if (uRateBitMap & DRV_RATE_MASK_MCS_0_OFDM)
       
   281     {
       
   282         return DRV_RATE_MCS_0;
       
   283     }
       
   284 
       
   285     if (uRateBitMap & DRV_RATE_MASK_54_OFDM)
       
   286     {
       
   287         return DRV_RATE_54M;
       
   288     }
       
   289 
       
   290     if (uRateBitMap & DRV_RATE_MASK_48_OFDM)
       
   291     {
       
   292         return DRV_RATE_48M;
       
   293     }
       
   294 
       
   295     if (uRateBitMap & DRV_RATE_MASK_36_OFDM)
       
   296     {
       
   297         return DRV_RATE_36M;
       
   298     }
       
   299 
       
   300     if (uRateBitMap & DRV_RATE_MASK_24_OFDM)
       
   301     {
       
   302         return DRV_RATE_24M;
       
   303     }
       
   304 
       
   305     if (uRateBitMap & DRV_RATE_MASK_22_PBCC)
       
   306     {
       
   307         return DRV_RATE_22M;
       
   308     }
       
   309 
       
   310     if (uRateBitMap & DRV_RATE_MASK_18_OFDM)
       
   311     {
       
   312         return DRV_RATE_18M;
       
   313     }
       
   314 
       
   315     if (uRateBitMap & DRV_RATE_MASK_12_OFDM)
       
   316     {
       
   317         return DRV_RATE_12M;
       
   318     }
       
   319 
       
   320     if (uRateBitMap & DRV_RATE_MASK_11_CCK)
       
   321     {
       
   322         return DRV_RATE_11M;
       
   323     }
       
   324 
       
   325     if (uRateBitMap & DRV_RATE_MASK_9_OFDM)
       
   326     {
       
   327         return DRV_RATE_9M;
       
   328     }
       
   329 
       
   330     if (uRateBitMap & DRV_RATE_MASK_6_OFDM)
       
   331     {
       
   332         return DRV_RATE_6M;
       
   333     }
       
   334 
       
   335     if (uRateBitMap & DRV_RATE_MASK_5_5_CCK)
       
   336     {
       
   337         return DRV_RATE_5_5M;
       
   338     }
       
   339 
       
   340     if (uRateBitMap & DRV_RATE_MASK_2_BARKER)
       
   341     {
       
   342         return DRV_RATE_2M;
       
   343     }
       
   344 
       
   345     if (uRateBitMap & DRV_RATE_MASK_1_BARKER)
       
   346     {
       
   347         return DRV_RATE_1M;
       
   348     }
       
   349 
       
   350     return DRV_RATE_INVALID;
       
   351 }
       
   352 
       
   353 /************************************************************************
       
   354  *                        validateNetworkRate                           *
       
   355  ************************************************************************
       
   356 DESCRIPTION: Verify that the input nitwork rate is valid
       
   357                                                                                                    
       
   358 INPUT:      rate    -   input network rate
       
   359 
       
   360 OUTPUT:     
       
   361 
       
   362 
       
   363 RETURN:     TI_OK if valid, otherwise TI_NOK
       
   364 
       
   365 ************************************************************************/
       
   366 static TI_STATUS rate_ValidateNet (ENetRate eRate)
       
   367 {
       
   368     switch (eRate)
       
   369     {
       
   370         case NET_RATE_1M:
       
   371         case NET_RATE_1M_BASIC:
       
   372         case NET_RATE_2M:
       
   373         case NET_RATE_2M_BASIC:
       
   374         case NET_RATE_5_5M:
       
   375         case NET_RATE_5_5M_BASIC:
       
   376         case NET_RATE_11M:
       
   377         case NET_RATE_11M_BASIC:
       
   378         case NET_RATE_22M:
       
   379         case NET_RATE_22M_BASIC:
       
   380         case NET_RATE_6M:
       
   381         case NET_RATE_6M_BASIC:
       
   382         case NET_RATE_9M:
       
   383         case NET_RATE_9M_BASIC:
       
   384         case NET_RATE_12M:
       
   385         case NET_RATE_12M_BASIC:
       
   386         case NET_RATE_18M:
       
   387         case NET_RATE_18M_BASIC:
       
   388         case NET_RATE_24M:
       
   389         case NET_RATE_24M_BASIC:
       
   390         case NET_RATE_36M:
       
   391         case NET_RATE_36M_BASIC:
       
   392         case NET_RATE_48M:
       
   393         case NET_RATE_48M_BASIC:
       
   394         case NET_RATE_54M:
       
   395         case NET_RATE_54M_BASIC:
       
   396             return TI_OK;
       
   397 
       
   398         default:
       
   399             return TI_NOK;
       
   400     }
       
   401 }
       
   402 
       
   403 /************************************************************************
       
   404  *                        getMaxBasicRate                           *
       
   405  ************************************************************************
       
   406 DESCRIPTION: Goes over an array of network rates and returns the max basic rate
       
   407                                                                                                    
       
   408 INPUT:      pRates      -   Rate array
       
   409 
       
   410 OUTPUT:     
       
   411 
       
   412 
       
   413 RETURN:     Max basic rate (in network units)
       
   414 
       
   415 ************************************************************************/
       
   416 ENetRate rate_GetMaxBasicFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate)
       
   417 {
       
   418     TI_UINT32   i;
       
   419     
       
   420     for (i = 0; i < len; i++)
       
   421     {
       
   422         if (NET_BASIC_RATE (pRatesString[i]) && rate_ValidateNet ((ENetRate)pRatesString[i]) == TI_OK)
       
   423         {
       
   424             eMaxRate = (ENetRate)(TI_MAX (pRatesString[i], eMaxRate));
       
   425         }
       
   426     }
       
   427 
       
   428     return eMaxRate;
       
   429 }
       
   430 
       
   431 /************************************************************************
       
   432  *                        getMaxActiveRate                          *
       
   433  ************************************************************************
       
   434 DESCRIPTION: Goes over an array of network rates and returns the max active rate
       
   435                                                                                                    
       
   436 INPUT:      pRates      -   Rate array
       
   437 
       
   438 OUTPUT:     
       
   439 
       
   440 
       
   441 RETURN:     Max active rate (in network units)
       
   442 
       
   443 ************************************************************************/
       
   444 ENetRate rate_GetMaxActiveFromStr (TI_UINT8 *pRatesString, TI_UINT32 len, ENetRate eMaxRate)
       
   445 {
       
   446     TI_UINT32   i;
       
   447     
       
   448     for (i = 0; i < len; i++)
       
   449     {
       
   450         if (NET_ACTIVE_RATE (pRatesString[i]) && rate_ValidateNet ((ENetRate)pRatesString[i]) == TI_OK)
       
   451         {
       
   452             eMaxRate = (ENetRate)(TI_MAX (pRatesString[i], eMaxRate));
       
   453         }
       
   454     }
       
   455 
       
   456     return eMaxRate;
       
   457 }
       
   458 
       
   459 TI_UINT32 rate_DrvToNumber (ERate eRate)
       
   460 {
       
   461     switch (eRate)
       
   462     {
       
   463         case DRV_RATE_1M:
       
   464             return 1;
       
   465 
       
   466         case DRV_RATE_2M:
       
   467             return 2;
       
   468 
       
   469         case DRV_RATE_5_5M:
       
   470             return 5;
       
   471 
       
   472         case DRV_RATE_11M:
       
   473             return 11;
       
   474 
       
   475         case DRV_RATE_22M:
       
   476             return 22;
       
   477 
       
   478         case DRV_RATE_6M:
       
   479             return 6;
       
   480 
       
   481         case DRV_RATE_9M:
       
   482             return 9;
       
   483 
       
   484         case DRV_RATE_12M:
       
   485             return 12;
       
   486 
       
   487         case DRV_RATE_18M:
       
   488             return 18;
       
   489 
       
   490         case DRV_RATE_24M:
       
   491             return 24;
       
   492 
       
   493         case DRV_RATE_36M:
       
   494             return 36;
       
   495 
       
   496         case DRV_RATE_48M:
       
   497             return 48;
       
   498 
       
   499         case DRV_RATE_54M:
       
   500             return 54;
       
   501 
       
   502         case DRV_RATE_MCS_0:
       
   503             return 6;
       
   504     
       
   505         case DRV_RATE_MCS_1:
       
   506             return 13;
       
   507     
       
   508         case DRV_RATE_MCS_2:
       
   509             return 19;
       
   510     
       
   511         case DRV_RATE_MCS_3:
       
   512             return 26;
       
   513     
       
   514         case DRV_RATE_MCS_4:
       
   515             return 39;
       
   516     
       
   517         case DRV_RATE_MCS_5:
       
   518             return 52;
       
   519     
       
   520         case DRV_RATE_MCS_6:
       
   521             return 58;
       
   522     
       
   523         case DRV_RATE_MCS_7:
       
   524             return 65;
       
   525 
       
   526         default:
       
   527             return 0;
       
   528     }
       
   529 }
       
   530 
       
   531 /************************************************************************
       
   532  *                        bitMapToNetworkStringRates                    *
       
   533  ************************************************************************
       
   534 DESCRIPTION: Converts bit map to the rates string
       
   535                                                                                                    
       
   536 INPUT:      suppRatesBitMap     -   bit map of supported rates
       
   537             basicRatesBitMap    -   bit map of basic rates
       
   538 
       
   539 OUTPUT:     string - network format rates array,
       
   540             len - rates array length
       
   541             firstOFDMrateLoc - the index of first OFDM rate in the rates array.
       
   542 
       
   543 
       
   544 RETURN:     None
       
   545 
       
   546 ************************************************************************/
       
   547 TI_STATUS rate_DrvBitmapToNetStr (TI_UINT32   uSuppRatesBitMap,
       
   548                                   TI_UINT32   uBasicRatesBitMap,
       
   549                                   TI_UINT8    *string,
       
   550                                   TI_UINT32   *len,
       
   551                                   TI_UINT32   *pFirstOfdmRate)
       
   552 {
       
   553     TI_UINT32   i = 0;
       
   554     
       
   555     if (uSuppRatesBitMap & DRV_RATE_MASK_1_BARKER)
       
   556     {
       
   557         if (uBasicRatesBitMap & DRV_RATE_MASK_1_BARKER)
       
   558         {
       
   559             string[i++] = NET_RATE_1M_BASIC;
       
   560         }
       
   561         else
       
   562         {
       
   563             string[i++] = NET_RATE_1M;
       
   564         }
       
   565     }
       
   566 
       
   567     if (uSuppRatesBitMap & DRV_RATE_MASK_2_BARKER)
       
   568     {
       
   569         if (uBasicRatesBitMap & DRV_RATE_MASK_2_BARKER)
       
   570         {
       
   571             string[i++] = NET_RATE_2M_BASIC;
       
   572         }
       
   573         else
       
   574         {
       
   575             string[i++] = NET_RATE_2M;
       
   576         }
       
   577     }
       
   578 
       
   579     if (uSuppRatesBitMap & DRV_RATE_MASK_5_5_CCK)
       
   580     {
       
   581         if (uBasicRatesBitMap & DRV_RATE_MASK_5_5_CCK)
       
   582         {
       
   583             string[i++] = NET_RATE_5_5M_BASIC;
       
   584         }
       
   585         else
       
   586         {
       
   587             string[i++] = NET_RATE_5_5M;
       
   588         }
       
   589     }
       
   590 
       
   591     if (uSuppRatesBitMap & DRV_RATE_MASK_11_CCK)
       
   592     {
       
   593         if (uBasicRatesBitMap & DRV_RATE_MASK_11_CCK)
       
   594         {
       
   595             string[i++] = NET_RATE_11M_BASIC;
       
   596         }
       
   597         else
       
   598         {
       
   599             string[i++] = NET_RATE_11M;
       
   600         }
       
   601     }
       
   602 
       
   603     if (uSuppRatesBitMap & DRV_RATE_MASK_22_PBCC)
       
   604     {
       
   605         if (uBasicRatesBitMap & DRV_RATE_MASK_22_PBCC)
       
   606         {
       
   607             string[i++] = NET_RATE_22M_BASIC;
       
   608         }
       
   609         else
       
   610         {
       
   611             string[i++] = NET_RATE_22M;
       
   612         }
       
   613     }
       
   614 
       
   615     *pFirstOfdmRate = i;
       
   616     
       
   617     if (uSuppRatesBitMap & DRV_RATE_MASK_6_OFDM)
       
   618     {
       
   619         if (uBasicRatesBitMap & DRV_RATE_MASK_6_OFDM)
       
   620         {
       
   621             string[i++] = NET_RATE_6M_BASIC;
       
   622         }
       
   623         else
       
   624         {
       
   625             string[i++] = NET_RATE_6M;
       
   626         }
       
   627     }
       
   628 
       
   629     if (uSuppRatesBitMap & DRV_RATE_MASK_9_OFDM)
       
   630     {
       
   631         if (uBasicRatesBitMap & DRV_RATE_MASK_9_OFDM)
       
   632         {
       
   633             string[i++] = NET_RATE_9M_BASIC;
       
   634         }
       
   635         else
       
   636         {
       
   637             string[i++] = NET_RATE_9M;
       
   638         }
       
   639     }
       
   640 
       
   641     if (uSuppRatesBitMap & DRV_RATE_MASK_12_OFDM)
       
   642     {
       
   643         if (uBasicRatesBitMap & DRV_RATE_MASK_12_OFDM)
       
   644         {
       
   645             string[i++] = NET_RATE_12M_BASIC;
       
   646         }
       
   647         else
       
   648         {
       
   649             string[i++] = NET_RATE_12M;
       
   650         }
       
   651     }
       
   652 
       
   653     if (uSuppRatesBitMap & DRV_RATE_MASK_18_OFDM)
       
   654     {
       
   655         if (uBasicRatesBitMap & DRV_RATE_MASK_18_OFDM)
       
   656         {
       
   657             string[i++] = NET_RATE_18M_BASIC;
       
   658         }
       
   659         else
       
   660         {
       
   661             string[i++] = NET_RATE_18M;
       
   662         }
       
   663     }
       
   664 
       
   665     if (uSuppRatesBitMap & DRV_RATE_MASK_24_OFDM)
       
   666     {
       
   667         if (uBasicRatesBitMap & DRV_RATE_MASK_24_OFDM)
       
   668         {
       
   669             string[i++] = NET_RATE_24M_BASIC;
       
   670         }
       
   671         else
       
   672         {
       
   673             string[i++] = NET_RATE_24M;
       
   674         }
       
   675     }
       
   676 
       
   677     if (uSuppRatesBitMap & DRV_RATE_MASK_36_OFDM)
       
   678     {
       
   679         if (uBasicRatesBitMap & DRV_RATE_MASK_36_OFDM)
       
   680         {
       
   681             string[i++] = NET_RATE_36M_BASIC;
       
   682         }
       
   683         else
       
   684         {
       
   685             string[i++] = NET_RATE_36M;
       
   686         }
       
   687     }
       
   688 
       
   689     if (uSuppRatesBitMap & DRV_RATE_MASK_48_OFDM)
       
   690     {
       
   691         if (uBasicRatesBitMap & DRV_RATE_MASK_48_OFDM)
       
   692         {
       
   693             string[i++] = NET_RATE_48M_BASIC;
       
   694         }
       
   695         else
       
   696         {
       
   697             string[i++] = NET_RATE_48M;
       
   698         }
       
   699     }
       
   700 
       
   701     if (uSuppRatesBitMap & DRV_RATE_MASK_54_OFDM)
       
   702     {
       
   703         if (uBasicRatesBitMap & DRV_RATE_MASK_54_OFDM)
       
   704         {
       
   705             string[i++] = NET_RATE_54M_BASIC;
       
   706         }
       
   707         else
       
   708         {
       
   709             string[i++] = NET_RATE_54M;
       
   710         }
       
   711     }
       
   712 
       
   713     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_0_OFDM)
       
   714     {
       
   715         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_0_OFDM)
       
   716         {
       
   717             string[i++] = NET_RATE_MCS0_BASIC;
       
   718         }
       
   719         else
       
   720         {
       
   721             string[i++] = NET_RATE_MCS0;
       
   722         }
       
   723     }
       
   724 
       
   725     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_1_OFDM)
       
   726     {
       
   727         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_1_OFDM)
       
   728         {
       
   729             string[i++] = NET_RATE_MCS1_BASIC;
       
   730         }
       
   731         else
       
   732         {
       
   733             string[i++] = NET_RATE_MCS1;
       
   734         }
       
   735     }
       
   736 
       
   737     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_2_OFDM)
       
   738     {
       
   739         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_2_OFDM)
       
   740         {
       
   741             string[i++] = NET_RATE_MCS2_BASIC;
       
   742         }
       
   743         else
       
   744         {
       
   745             string[i++] = NET_RATE_MCS2;
       
   746         }
       
   747     }
       
   748 
       
   749     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_3_OFDM)
       
   750     {
       
   751         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_3_OFDM)
       
   752         {
       
   753             string[i++] = NET_RATE_MCS3_BASIC;
       
   754         }
       
   755         else
       
   756         {
       
   757             string[i++] = NET_RATE_MCS3;
       
   758         }
       
   759     }
       
   760 
       
   761     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_4_OFDM)
       
   762     {
       
   763         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_4_OFDM)
       
   764         {
       
   765             string[i++] = NET_RATE_MCS4_BASIC;
       
   766         }
       
   767         else
       
   768         {
       
   769             string[i++] = NET_RATE_MCS4;
       
   770         }
       
   771     }
       
   772 
       
   773     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_5_OFDM)
       
   774     {
       
   775         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_5_OFDM)
       
   776         {
       
   777             string[i++] = NET_RATE_MCS5_BASIC;
       
   778         }
       
   779         else
       
   780         {
       
   781             string[i++] = NET_RATE_MCS5;
       
   782         }
       
   783     }
       
   784 
       
   785     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_6_OFDM)
       
   786     {
       
   787         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_6_OFDM)
       
   788         {
       
   789             string[i++] = NET_RATE_MCS6_BASIC;
       
   790         }
       
   791         else
       
   792         {
       
   793             string[i++] = NET_RATE_MCS6;
       
   794         }
       
   795     }
       
   796 
       
   797     if (uSuppRatesBitMap & DRV_RATE_MASK_MCS_7_OFDM)
       
   798     {
       
   799         if (uBasicRatesBitMap & DRV_RATE_MASK_MCS_7_OFDM)
       
   800         {
       
   801             string[i++] = NET_RATE_MCS7_BASIC;
       
   802         }
       
   803         else
       
   804         {
       
   805             string[i++] = NET_RATE_MCS7;
       
   806         }
       
   807     }
       
   808 
       
   809 
       
   810     *len = i;
       
   811     
       
   812     return TI_OK;
       
   813 }
       
   814 
       
   815 /************************************************************************
       
   816  *                        networkStringToBitMapSuppRates                *
       
   817  ************************************************************************
       
   818 DESCRIPTION: Converts supported rates string to the bit map
       
   819                                                                                                    
       
   820 INPUT:      string      -   array of rates in the network format
       
   821             len - array length
       
   822 
       
   823 OUTPUT:     bitMap - bit map of rates.
       
   824 
       
   825 RETURN:     None
       
   826 
       
   827 ************************************************************************/
       
   828 TI_STATUS rate_NetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len)
       
   829 {
       
   830     TI_UINT32   i;
       
   831     
       
   832     *pBitMap = 0;
       
   833     
       
   834     for (i = 0; i < len; i++)
       
   835     {
       
   836         switch (string[i])
       
   837         {
       
   838             case NET_RATE_1M:
       
   839             case NET_RATE_1M_BASIC:
       
   840                 *pBitMap |= DRV_RATE_MASK_1_BARKER;
       
   841                 break;
       
   842 
       
   843             case NET_RATE_2M:
       
   844             case NET_RATE_2M_BASIC:
       
   845                 *pBitMap |= DRV_RATE_MASK_2_BARKER;
       
   846                 break;
       
   847 
       
   848             case NET_RATE_5_5M:
       
   849             case NET_RATE_5_5M_BASIC:
       
   850                 *pBitMap |= DRV_RATE_MASK_5_5_CCK;
       
   851                 break;
       
   852 
       
   853             case NET_RATE_11M:
       
   854             case NET_RATE_11M_BASIC:
       
   855                 *pBitMap |= DRV_RATE_MASK_11_CCK;
       
   856                 break;
       
   857 
       
   858             case NET_RATE_22M:
       
   859             case NET_RATE_22M_BASIC:
       
   860                 *pBitMap |= DRV_RATE_MASK_22_PBCC;
       
   861                 break;
       
   862 
       
   863             case NET_RATE_6M:
       
   864             case NET_RATE_6M_BASIC:
       
   865                 *pBitMap |= DRV_RATE_MASK_6_OFDM;
       
   866                 break;
       
   867 
       
   868             case NET_RATE_9M:
       
   869             case NET_RATE_9M_BASIC:
       
   870                 *pBitMap |= DRV_RATE_MASK_9_OFDM;
       
   871                 break;
       
   872 
       
   873             case NET_RATE_12M:
       
   874             case NET_RATE_12M_BASIC:
       
   875                 *pBitMap |= DRV_RATE_MASK_12_OFDM;
       
   876                 break;
       
   877 
       
   878             case NET_RATE_18M:
       
   879             case NET_RATE_18M_BASIC:
       
   880                 *pBitMap |= DRV_RATE_MASK_18_OFDM;
       
   881                 break;
       
   882 
       
   883             case NET_RATE_24M:
       
   884             case NET_RATE_24M_BASIC:
       
   885                 *pBitMap |= DRV_RATE_MASK_24_OFDM;
       
   886                 break;
       
   887 
       
   888             case NET_RATE_36M:
       
   889             case NET_RATE_36M_BASIC:
       
   890                 *pBitMap |= DRV_RATE_MASK_36_OFDM;
       
   891                 break;
       
   892 
       
   893             case NET_RATE_48M:
       
   894             case NET_RATE_48M_BASIC:
       
   895                 *pBitMap |= DRV_RATE_MASK_48_OFDM;
       
   896                 break;
       
   897 
       
   898             case NET_RATE_54M:
       
   899             case NET_RATE_54M_BASIC:
       
   900                 *pBitMap |= DRV_RATE_MASK_54_OFDM;
       
   901                 break;
       
   902 
       
   903             case NET_RATE_MCS0:
       
   904             case NET_RATE_MCS0_BASIC:
       
   905                 *pBitMap |= DRV_RATE_MASK_MCS_0_OFDM;
       
   906                 break;
       
   907     
       
   908             case NET_RATE_MCS1:
       
   909             case NET_RATE_MCS1_BASIC:
       
   910                 *pBitMap |= DRV_RATE_MASK_MCS_1_OFDM;
       
   911                 break;
       
   912     
       
   913             case NET_RATE_MCS2:
       
   914             case NET_RATE_MCS2_BASIC:
       
   915                 *pBitMap |= DRV_RATE_MASK_MCS_2_OFDM;
       
   916                 break;
       
   917     
       
   918             case NET_RATE_MCS3:
       
   919             case NET_RATE_MCS3_BASIC:
       
   920                 *pBitMap |= DRV_RATE_MASK_MCS_3_OFDM;
       
   921                 break;
       
   922     
       
   923             case NET_RATE_MCS4:
       
   924             case NET_RATE_MCS4_BASIC:
       
   925                 *pBitMap |= DRV_RATE_MASK_MCS_4_OFDM;
       
   926                 break;
       
   927     
       
   928             case NET_RATE_MCS5:
       
   929             case NET_RATE_MCS5_BASIC:
       
   930                 *pBitMap |= DRV_RATE_MASK_MCS_5_OFDM;
       
   931                 break;
       
   932     
       
   933             case NET_RATE_MCS6:
       
   934             case NET_RATE_MCS6_BASIC:
       
   935                 *pBitMap |= DRV_RATE_MASK_MCS_6_OFDM;
       
   936                 break;
       
   937     
       
   938             case NET_RATE_MCS7:
       
   939             case NET_RATE_MCS7_BASIC:
       
   940                 *pBitMap |= DRV_RATE_MASK_MCS_7_OFDM;
       
   941                 break;
       
   942 
       
   943             default:
       
   944                 break;
       
   945         }
       
   946     }
       
   947 
       
   948     return TI_OK;
       
   949 }
       
   950 
       
   951 /************************************************************************
       
   952  *                        networkStringToBitMapBasicRates               *
       
   953  ************************************************************************
       
   954 DESCRIPTION: Converts basic rates string to the bit map
       
   955                                                                                                    
       
   956 INPUT:      string      -   array of rates in the network format
       
   957             len - array length
       
   958 
       
   959 OUTPUT:     bitMap - bit map of rates.
       
   960 
       
   961 RETURN:     None
       
   962 
       
   963 ************************************************************************/
       
   964 TI_STATUS rate_NetBasicStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string, TI_UINT32 len)
       
   965 {
       
   966     TI_UINT32   i;
       
   967     
       
   968     *pBitMap = 0;
       
   969     
       
   970     for (i = 0; i < len; i++)
       
   971     {
       
   972         switch (string[i])
       
   973         {
       
   974             case NET_RATE_1M_BASIC:
       
   975                 *pBitMap |= DRV_RATE_MASK_1_BARKER;
       
   976                 break;
       
   977 
       
   978             case NET_RATE_2M_BASIC:
       
   979                 *pBitMap |= DRV_RATE_MASK_2_BARKER;
       
   980                 break;
       
   981 
       
   982             case NET_RATE_5_5M_BASIC:
       
   983                 *pBitMap |= DRV_RATE_MASK_5_5_CCK;
       
   984                 break;
       
   985 
       
   986             case NET_RATE_11M_BASIC:
       
   987                 *pBitMap |= DRV_RATE_MASK_11_CCK;
       
   988                 break;
       
   989 
       
   990             case NET_RATE_22M_BASIC:
       
   991                 *pBitMap |= DRV_RATE_MASK_22_PBCC;
       
   992                 break;
       
   993 
       
   994             case NET_RATE_6M_BASIC:
       
   995                 *pBitMap |= DRV_RATE_MASK_6_OFDM;
       
   996                 break;
       
   997 
       
   998             case NET_RATE_9M_BASIC:
       
   999                 *pBitMap |= DRV_RATE_MASK_9_OFDM;
       
  1000                 break;
       
  1001 
       
  1002             case NET_RATE_12M_BASIC:
       
  1003                 *pBitMap |= DRV_RATE_MASK_12_OFDM;
       
  1004                 break;
       
  1005 
       
  1006             case NET_RATE_18M_BASIC:
       
  1007                 *pBitMap |= DRV_RATE_MASK_18_OFDM;
       
  1008                 break;
       
  1009 
       
  1010             case NET_RATE_24M_BASIC:
       
  1011                 *pBitMap |= DRV_RATE_MASK_24_OFDM;
       
  1012                 break;
       
  1013 
       
  1014             case NET_RATE_36M_BASIC:
       
  1015                 *pBitMap |= DRV_RATE_MASK_36_OFDM;
       
  1016                 break;
       
  1017 
       
  1018             case NET_RATE_48M_BASIC:
       
  1019                 *pBitMap |= DRV_RATE_MASK_48_OFDM;
       
  1020                 break;
       
  1021 
       
  1022             case NET_RATE_54M_BASIC:
       
  1023                 *pBitMap |= DRV_RATE_MASK_54_OFDM;
       
  1024                 break;
       
  1025 
       
  1026             case NET_RATE_MCS0_BASIC:
       
  1027                 *pBitMap |= DRV_RATE_MASK_MCS_0_OFDM;
       
  1028                 break;
       
  1029     
       
  1030             case NET_RATE_MCS1_BASIC:
       
  1031                 *pBitMap |= DRV_RATE_MASK_MCS_1_OFDM;
       
  1032                 break;
       
  1033     
       
  1034             case NET_RATE_MCS2_BASIC:
       
  1035                 *pBitMap |= DRV_RATE_MASK_MCS_2_OFDM;
       
  1036                 break;
       
  1037     
       
  1038             case NET_RATE_MCS3_BASIC:
       
  1039                 *pBitMap |= DRV_RATE_MASK_MCS_3_OFDM;
       
  1040                 break;
       
  1041     
       
  1042             case NET_RATE_MCS4_BASIC:
       
  1043                 *pBitMap |= DRV_RATE_MASK_MCS_4_OFDM;
       
  1044                 break;
       
  1045     
       
  1046             case NET_RATE_MCS5_BASIC:
       
  1047                 *pBitMap |= DRV_RATE_MASK_MCS_5_OFDM;
       
  1048                 break;
       
  1049     
       
  1050             case NET_RATE_MCS6_BASIC:
       
  1051                 *pBitMap |= DRV_RATE_MASK_MCS_6_OFDM;
       
  1052                 break;
       
  1053     
       
  1054             case NET_RATE_MCS7_BASIC:
       
  1055                 *pBitMap |= DRV_RATE_MASK_MCS_7_OFDM;
       
  1056                 break;
       
  1057     
       
  1058             default:
       
  1059                 break;
       
  1060         }
       
  1061     }
       
  1062 
       
  1063     return TI_OK;
       
  1064 }
       
  1065 
       
  1066 
       
  1067 /************************************************************************
       
  1068  *                        rate_McsNetStrToDrvBitmap                     *
       
  1069  ************************************************************************
       
  1070 DESCRIPTION: Converts MCS IEs rates bit map to driver bit map. 
       
  1071              supported only MCS0 - MCS7 
       
  1072                                                                                                    
       
  1073 INPUT:      string - HT capabilities IE in the network format
       
  1074             len - IE array length
       
  1075 
       
  1076 OUTPUT:     bitMap - bit map of rates.
       
  1077 
       
  1078 RETURN:     None
       
  1079 
       
  1080 ************************************************************************/
       
  1081 TI_STATUS rate_McsNetStrToDrvBitmap (TI_UINT32 *pBitMap, TI_UINT8 *string)
       
  1082 {
       
  1083     *pBitMap = string[0];
       
  1084 
       
  1085     *pBitMap = *pBitMap << (DRV_RATE_MCS_0 - 1);
       
  1086 
       
  1087     return TI_OK;
       
  1088 }
       
  1089 
       
  1090 
       
  1091 TI_STATUS rate_DrvBitmapToHwBitmap (TI_UINT32 uDrvBitMap, TI_UINT32 *pHwBitmap)
       
  1092 {
       
  1093     TI_UINT32   uHwBitMap = 0;
       
  1094     
       
  1095     if (uDrvBitMap & DRV_RATE_MASK_1_BARKER)
       
  1096     {
       
  1097         uHwBitMap |= HW_BIT_RATE_1MBPS;
       
  1098     }
       
  1099 
       
  1100     if (uDrvBitMap & DRV_RATE_MASK_2_BARKER)
       
  1101     {
       
  1102         uHwBitMap |= HW_BIT_RATE_2MBPS;
       
  1103     }
       
  1104 
       
  1105     if (uDrvBitMap & DRV_RATE_MASK_5_5_CCK)
       
  1106     {
       
  1107         uHwBitMap |= HW_BIT_RATE_5_5MBPS;
       
  1108     }
       
  1109 
       
  1110     if (uDrvBitMap & DRV_RATE_MASK_11_CCK)
       
  1111     {
       
  1112         uHwBitMap |= HW_BIT_RATE_11MBPS;
       
  1113     }
       
  1114 
       
  1115     if (uDrvBitMap & DRV_RATE_MASK_22_PBCC)
       
  1116     {
       
  1117         uHwBitMap |= HW_BIT_RATE_22MBPS;
       
  1118     }
       
  1119 
       
  1120     if (uDrvBitMap & DRV_RATE_MASK_6_OFDM)
       
  1121     {
       
  1122         uHwBitMap |= HW_BIT_RATE_6MBPS;
       
  1123     }
       
  1124 
       
  1125     if (uDrvBitMap & DRV_RATE_MASK_9_OFDM)
       
  1126     {
       
  1127         uHwBitMap |= HW_BIT_RATE_9MBPS;
       
  1128     }
       
  1129 
       
  1130     if (uDrvBitMap & DRV_RATE_MASK_12_OFDM)
       
  1131     {
       
  1132         uHwBitMap |= HW_BIT_RATE_12MBPS;
       
  1133     }
       
  1134 
       
  1135     if (uDrvBitMap & DRV_RATE_MASK_18_OFDM)
       
  1136     {
       
  1137         uHwBitMap |= HW_BIT_RATE_18MBPS;
       
  1138     }
       
  1139 
       
  1140     if (uDrvBitMap & DRV_RATE_MASK_24_OFDM)
       
  1141     {
       
  1142         uHwBitMap |= HW_BIT_RATE_24MBPS;
       
  1143     }
       
  1144 
       
  1145     if (uDrvBitMap & DRV_RATE_MASK_36_OFDM)
       
  1146     {
       
  1147         uHwBitMap |= HW_BIT_RATE_36MBPS;
       
  1148     }
       
  1149 
       
  1150     if (uDrvBitMap & DRV_RATE_MASK_48_OFDM)
       
  1151     {
       
  1152         uHwBitMap |= HW_BIT_RATE_48MBPS;
       
  1153     }
       
  1154 
       
  1155     if (uDrvBitMap & DRV_RATE_MASK_54_OFDM)
       
  1156     {
       
  1157         uHwBitMap |= HW_BIT_RATE_54MBPS;
       
  1158     }
       
  1159 
       
  1160     if (uDrvBitMap & DRV_RATE_MASK_MCS_0_OFDM)
       
  1161     {
       
  1162         uHwBitMap |= HW_BIT_RATE_MCS_0;
       
  1163     }
       
  1164 
       
  1165     if (uDrvBitMap & DRV_RATE_MASK_MCS_1_OFDM)
       
  1166     {
       
  1167         uHwBitMap |= HW_BIT_RATE_MCS_1;
       
  1168     }
       
  1169 
       
  1170     if (uDrvBitMap & DRV_RATE_MASK_MCS_2_OFDM)
       
  1171     {
       
  1172         uHwBitMap |= HW_BIT_RATE_MCS_2;
       
  1173     }
       
  1174 
       
  1175     if (uDrvBitMap & DRV_RATE_MASK_MCS_3_OFDM)
       
  1176     {
       
  1177         uHwBitMap |= HW_BIT_RATE_MCS_3;
       
  1178     }
       
  1179 
       
  1180     if (uDrvBitMap & DRV_RATE_MASK_MCS_4_OFDM)
       
  1181     {
       
  1182         uHwBitMap |= HW_BIT_RATE_MCS_4;
       
  1183     }
       
  1184 
       
  1185     if (uDrvBitMap & DRV_RATE_MASK_MCS_5_OFDM)
       
  1186     {
       
  1187         uHwBitMap |= HW_BIT_RATE_MCS_5;
       
  1188     }
       
  1189 
       
  1190     if (uDrvBitMap & DRV_RATE_MASK_MCS_6_OFDM)
       
  1191     {
       
  1192         uHwBitMap |= HW_BIT_RATE_MCS_6;
       
  1193     }
       
  1194 
       
  1195     if (uDrvBitMap & DRV_RATE_MASK_MCS_7_OFDM)
       
  1196     {
       
  1197         uHwBitMap |= HW_BIT_RATE_MCS_7;
       
  1198     }
       
  1199 
       
  1200     *pHwBitmap = uHwBitMap;
       
  1201     
       
  1202     return TI_OK;
       
  1203 }
       
  1204 
       
  1205 TI_STATUS rate_PolicyToDrv (ETxRateClassId ePolicyRate, ERate *eAppRate)
       
  1206 {
       
  1207     TI_UINT8     Rate = 0;
       
  1208     TI_STATUS status = TI_OK;
       
  1209 
       
  1210     switch (ePolicyRate)
       
  1211     {
       
  1212         case txPolicy1    :   Rate =  DRV_RATE_1M   ;    break;
       
  1213         case txPolicy2    :   Rate =  DRV_RATE_2M   ;    break;
       
  1214         case txPolicy5_5  :   Rate =  DRV_RATE_5_5M ;    break;
       
  1215         case txPolicy11   :   Rate =  DRV_RATE_11M  ;    break;
       
  1216         case txPolicy22   :   Rate =  DRV_RATE_22M  ;    break;
       
  1217         case txPolicy6    :   Rate =  DRV_RATE_6M   ;    break;
       
  1218         case txPolicy9    :   Rate =  DRV_RATE_9M   ;    break;
       
  1219         case txPolicy12   :   Rate =  DRV_RATE_12M  ;    break;
       
  1220         case txPolicy18   :   Rate =  DRV_RATE_18M  ;    break;
       
  1221         case txPolicy24   :   Rate =  DRV_RATE_24M  ;    break;
       
  1222         case txPolicy36   :   Rate =  DRV_RATE_36M  ;    break;
       
  1223         case txPolicy48   :   Rate =  DRV_RATE_48M  ;    break;
       
  1224         case txPolicy54   :   Rate =  DRV_RATE_54M  ;    break;
       
  1225         case txPolicyMcs0 :   Rate =  DRV_RATE_MCS_0;    break;
       
  1226         case txPolicyMcs1 :   Rate =  DRV_RATE_MCS_1;    break;
       
  1227         case txPolicyMcs2 :   Rate =  DRV_RATE_MCS_2;    break;
       
  1228         case txPolicyMcs3 :   Rate =  DRV_RATE_MCS_3;    break;
       
  1229         case txPolicyMcs4 :   Rate =  DRV_RATE_MCS_4;    break;
       
  1230         case txPolicyMcs5 :   Rate =  DRV_RATE_MCS_5;    break;
       
  1231         case txPolicyMcs6 :   Rate =  DRV_RATE_MCS_6;    break;
       
  1232         case txPolicyMcs7 :   Rate =  DRV_RATE_MCS_7;    break;
       
  1233 
       
  1234         default:
       
  1235             status = TI_NOK;
       
  1236             break;
       
  1237     }
       
  1238 
       
  1239     if (status == TI_OK)
       
  1240         *eAppRate = (ERate)Rate;
       
  1241     else
       
  1242         *eAppRate = DRV_RATE_INVALID; 
       
  1243 
       
  1244     return status;
       
  1245 }
       
  1246 
       
  1247 
       
  1248 TI_UINT32 rate_BasicToDrvBitmap (EBasicRateSet eBasicRateSet, TI_BOOL bDot11a)
       
  1249 {
       
  1250     if (!bDot11a)
       
  1251     {
       
  1252         switch (eBasicRateSet)
       
  1253         {
       
  1254             case BASIC_RATE_SET_1_2:
       
  1255                 return DRV_RATE_MASK_1_BARKER | 
       
  1256                        DRV_RATE_MASK_2_BARKER;
       
  1257 
       
  1258             case BASIC_RATE_SET_1_2_5_5_11:
       
  1259                 return DRV_RATE_MASK_1_BARKER | 
       
  1260                        DRV_RATE_MASK_2_BARKER | 
       
  1261                        DRV_RATE_MASK_5_5_CCK | 
       
  1262                        DRV_RATE_MASK_11_CCK;
       
  1263 
       
  1264             case BASIC_RATE_SET_UP_TO_12:
       
  1265                 return DRV_RATE_MASK_1_BARKER |
       
  1266                        DRV_RATE_MASK_2_BARKER |
       
  1267                        DRV_RATE_MASK_5_5_CCK |
       
  1268                        DRV_RATE_MASK_11_CCK |
       
  1269                        DRV_RATE_MASK_6_OFDM |
       
  1270                        DRV_RATE_MASK_9_OFDM |
       
  1271                        DRV_RATE_MASK_12_OFDM;
       
  1272 
       
  1273             case BASIC_RATE_SET_UP_TO_18:
       
  1274                 return DRV_RATE_MASK_1_BARKER |
       
  1275                        DRV_RATE_MASK_2_BARKER |
       
  1276                        DRV_RATE_MASK_5_5_CCK |
       
  1277                        DRV_RATE_MASK_11_CCK |
       
  1278                        DRV_RATE_MASK_6_OFDM |
       
  1279                        DRV_RATE_MASK_9_OFDM |
       
  1280                        DRV_RATE_MASK_12_OFDM |
       
  1281                        DRV_RATE_MASK_18_OFDM;
       
  1282 
       
  1283             case BASIC_RATE_SET_UP_TO_24:
       
  1284                 return DRV_RATE_MASK_1_BARKER |
       
  1285                        DRV_RATE_MASK_2_BARKER |
       
  1286                        DRV_RATE_MASK_5_5_CCK |
       
  1287                        DRV_RATE_MASK_11_CCK |
       
  1288                        DRV_RATE_MASK_6_OFDM |
       
  1289                        DRV_RATE_MASK_9_OFDM |
       
  1290                        DRV_RATE_MASK_12_OFDM |
       
  1291                        DRV_RATE_MASK_18_OFDM |
       
  1292                        DRV_RATE_MASK_24_OFDM;
       
  1293 
       
  1294             case BASIC_RATE_SET_UP_TO_36:
       
  1295                 return DRV_RATE_MASK_1_BARKER |
       
  1296                        DRV_RATE_MASK_2_BARKER |
       
  1297                        DRV_RATE_MASK_5_5_CCK |
       
  1298                        DRV_RATE_MASK_11_CCK |
       
  1299                        DRV_RATE_MASK_6_OFDM |
       
  1300                        DRV_RATE_MASK_9_OFDM |
       
  1301                        DRV_RATE_MASK_12_OFDM |
       
  1302                        DRV_RATE_MASK_18_OFDM |
       
  1303                        DRV_RATE_MASK_24_OFDM |
       
  1304                        DRV_RATE_MASK_36_OFDM;
       
  1305 
       
  1306             case BASIC_RATE_SET_UP_TO_48:
       
  1307                 return DRV_RATE_MASK_1_BARKER |
       
  1308                        DRV_RATE_MASK_2_BARKER |
       
  1309                        DRV_RATE_MASK_5_5_CCK |
       
  1310                        DRV_RATE_MASK_11_CCK |
       
  1311                        DRV_RATE_MASK_6_OFDM |
       
  1312                        DRV_RATE_MASK_9_OFDM |
       
  1313                        DRV_RATE_MASK_12_OFDM |
       
  1314                        DRV_RATE_MASK_18_OFDM |
       
  1315                        DRV_RATE_MASK_24_OFDM |
       
  1316                        DRV_RATE_MASK_36_OFDM |
       
  1317                        DRV_RATE_MASK_48_OFDM;
       
  1318 
       
  1319             case BASIC_RATE_SET_UP_TO_54:
       
  1320                 return DRV_RATE_MASK_1_BARKER |
       
  1321                        DRV_RATE_MASK_2_BARKER |
       
  1322                        DRV_RATE_MASK_5_5_CCK |
       
  1323                        DRV_RATE_MASK_11_CCK |
       
  1324                        DRV_RATE_MASK_6_OFDM |
       
  1325                        DRV_RATE_MASK_9_OFDM |
       
  1326                        DRV_RATE_MASK_12_OFDM |
       
  1327                        DRV_RATE_MASK_18_OFDM |
       
  1328                        DRV_RATE_MASK_24_OFDM |
       
  1329                        DRV_RATE_MASK_36_OFDM |
       
  1330                        DRV_RATE_MASK_48_OFDM |
       
  1331                        DRV_RATE_MASK_54_OFDM;
       
  1332 
       
  1333             case BASIC_RATE_SET_6_12_24:
       
  1334                 return DRV_RATE_MASK_6_OFDM | 
       
  1335                        DRV_RATE_MASK_12_OFDM | 
       
  1336                        DRV_RATE_MASK_24_OFDM;
       
  1337 
       
  1338             case BASIC_RATE_SET_1_2_5_5_6_11_12_24:
       
  1339                 return DRV_RATE_MASK_1_BARKER |
       
  1340                        DRV_RATE_MASK_2_BARKER |
       
  1341                        DRV_RATE_MASK_5_5_CCK |
       
  1342                        DRV_RATE_MASK_11_CCK |
       
  1343                        DRV_RATE_MASK_6_OFDM |
       
  1344                        DRV_RATE_MASK_12_OFDM |
       
  1345                        DRV_RATE_MASK_24_OFDM;
       
  1346 
       
  1347             case BASIC_RATE_SET_ALL_MCS_RATES:
       
  1348                 return DRV_RATE_MASK_MCS_0_OFDM |
       
  1349                        DRV_RATE_MASK_MCS_1_OFDM |
       
  1350                        DRV_RATE_MASK_MCS_2_OFDM |
       
  1351                        DRV_RATE_MASK_MCS_3_OFDM |
       
  1352                        DRV_RATE_MASK_MCS_4_OFDM |
       
  1353                        DRV_RATE_MASK_MCS_5_OFDM |
       
  1354                        DRV_RATE_MASK_MCS_6_OFDM |
       
  1355                        DRV_RATE_MASK_MCS_7_OFDM |
       
  1356                        DRV_RATE_MASK_1_BARKER   | 
       
  1357                        DRV_RATE_MASK_2_BARKER   |
       
  1358                        DRV_RATE_MASK_5_5_CCK    |  
       
  1359                        DRV_RATE_MASK_11_CCK;
       
  1360 
       
  1361 
       
  1362             default:
       
  1363                 return DRV_RATE_MASK_1_BARKER | 
       
  1364                        DRV_RATE_MASK_2_BARKER;
       
  1365         }
       
  1366     }
       
  1367     else
       
  1368     {
       
  1369         switch (eBasicRateSet)
       
  1370         {
       
  1371             case BASIC_RATE_SET_UP_TO_12:
       
  1372                 return DRV_RATE_MASK_6_OFDM | 
       
  1373                        DRV_RATE_MASK_9_OFDM | 
       
  1374                        DRV_RATE_MASK_12_OFDM;
       
  1375 
       
  1376             case BASIC_RATE_SET_UP_TO_18:
       
  1377                 return DRV_RATE_MASK_6_OFDM | 
       
  1378                        DRV_RATE_MASK_9_OFDM | 
       
  1379                        DRV_RATE_MASK_12_OFDM | 
       
  1380                        DRV_RATE_MASK_18_OFDM;
       
  1381 
       
  1382             case BASIC_RATE_SET_UP_TO_24:
       
  1383                 return DRV_RATE_MASK_6_OFDM |
       
  1384                        DRV_RATE_MASK_9_OFDM |
       
  1385                        DRV_RATE_MASK_12_OFDM |
       
  1386                        DRV_RATE_MASK_18_OFDM |
       
  1387                        DRV_RATE_MASK_24_OFDM;
       
  1388 
       
  1389             case BASIC_RATE_SET_UP_TO_36:
       
  1390                 return DRV_RATE_MASK_6_OFDM |
       
  1391                        DRV_RATE_MASK_9_OFDM |
       
  1392                        DRV_RATE_MASK_12_OFDM |
       
  1393                        DRV_RATE_MASK_18_OFDM |
       
  1394                        DRV_RATE_MASK_24_OFDM |
       
  1395                        DRV_RATE_MASK_36_OFDM;
       
  1396 
       
  1397             case BASIC_RATE_SET_UP_TO_48:
       
  1398                 return DRV_RATE_MASK_6_OFDM |
       
  1399                        DRV_RATE_MASK_9_OFDM |
       
  1400                        DRV_RATE_MASK_12_OFDM |
       
  1401                        DRV_RATE_MASK_18_OFDM |
       
  1402                        DRV_RATE_MASK_24_OFDM |
       
  1403                        DRV_RATE_MASK_36_OFDM |
       
  1404                        DRV_RATE_MASK_48_OFDM;
       
  1405 
       
  1406             case BASIC_RATE_SET_UP_TO_54:
       
  1407                 return DRV_RATE_MASK_6_OFDM |
       
  1408                        DRV_RATE_MASK_9_OFDM |
       
  1409                        DRV_RATE_MASK_12_OFDM |
       
  1410                        DRV_RATE_MASK_18_OFDM |
       
  1411                        DRV_RATE_MASK_24_OFDM |
       
  1412                        DRV_RATE_MASK_36_OFDM |
       
  1413                        DRV_RATE_MASK_48_OFDM |
       
  1414                        DRV_RATE_MASK_54_OFDM;
       
  1415 
       
  1416             case BASIC_RATE_SET_6_12_24:
       
  1417                 return DRV_RATE_MASK_6_OFDM | 
       
  1418                        DRV_RATE_MASK_12_OFDM | 
       
  1419                        DRV_RATE_MASK_24_OFDM;
       
  1420 
       
  1421             case BASIC_RATE_SET_ALL_MCS_RATES:
       
  1422                 return DRV_RATE_MASK_MCS_0_OFDM |
       
  1423                        DRV_RATE_MASK_MCS_1_OFDM |
       
  1424                        DRV_RATE_MASK_MCS_2_OFDM |
       
  1425                        DRV_RATE_MASK_MCS_3_OFDM |
       
  1426                        DRV_RATE_MASK_MCS_4_OFDM |
       
  1427                        DRV_RATE_MASK_MCS_5_OFDM |
       
  1428                        DRV_RATE_MASK_MCS_6_OFDM |
       
  1429                        DRV_RATE_MASK_MCS_7_OFDM |
       
  1430                        DRV_RATE_MASK_6_OFDM | 
       
  1431                        DRV_RATE_MASK_12_OFDM | 
       
  1432                        DRV_RATE_MASK_24_OFDM;
       
  1433 
       
  1434             default:
       
  1435                 return DRV_RATE_MASK_6_OFDM | 
       
  1436                        DRV_RATE_MASK_12_OFDM | 
       
  1437                        DRV_RATE_MASK_24_OFDM;
       
  1438         }
       
  1439     }
       
  1440 }
       
  1441 
       
  1442 TI_UINT32 rate_SupportedToDrvBitmap (ESupportedRateSet eSupportedRateSet, TI_BOOL bDot11a)
       
  1443 {
       
  1444     if (!bDot11a)
       
  1445     {
       
  1446         switch (eSupportedRateSet)
       
  1447         {
       
  1448             case SUPPORTED_RATE_SET_1_2:
       
  1449                 return DRV_RATE_MASK_1_BARKER | 
       
  1450                        DRV_RATE_MASK_2_BARKER;
       
  1451 
       
  1452             case SUPPORTED_RATE_SET_1_2_5_5_11:
       
  1453                 return DRV_RATE_MASK_1_BARKER | 
       
  1454                        DRV_RATE_MASK_2_BARKER | 
       
  1455                        DRV_RATE_MASK_5_5_CCK | 
       
  1456                        DRV_RATE_MASK_11_CCK;
       
  1457 
       
  1458             case SUPPORTED_RATE_SET_1_2_5_5_11_22:
       
  1459                 return DRV_RATE_MASK_1_BARKER |
       
  1460                        DRV_RATE_MASK_2_BARKER |
       
  1461                        DRV_RATE_MASK_5_5_CCK |
       
  1462                        DRV_RATE_MASK_11_CCK |
       
  1463                        DRV_RATE_MASK_22_PBCC;
       
  1464 
       
  1465             case SUPPORTED_RATE_SET_UP_TO_18:
       
  1466                 return DRV_RATE_MASK_1_BARKER |
       
  1467                        DRV_RATE_MASK_2_BARKER |
       
  1468                        DRV_RATE_MASK_5_5_CCK |
       
  1469                        DRV_RATE_MASK_11_CCK |
       
  1470                        DRV_RATE_MASK_6_OFDM |
       
  1471                        DRV_RATE_MASK_9_OFDM |
       
  1472                        DRV_RATE_MASK_12_OFDM |
       
  1473                        DRV_RATE_MASK_18_OFDM;
       
  1474 
       
  1475             case SUPPORTED_RATE_SET_UP_TO_24:
       
  1476                 return DRV_RATE_MASK_1_BARKER |
       
  1477                        DRV_RATE_MASK_2_BARKER |
       
  1478                        DRV_RATE_MASK_5_5_CCK |
       
  1479                        DRV_RATE_MASK_11_CCK |
       
  1480                        DRV_RATE_MASK_6_OFDM |
       
  1481                        DRV_RATE_MASK_9_OFDM |
       
  1482                        DRV_RATE_MASK_12_OFDM |
       
  1483                        DRV_RATE_MASK_18_OFDM |
       
  1484                        DRV_RATE_MASK_24_OFDM;
       
  1485 
       
  1486             case SUPPORTED_RATE_SET_UP_TO_36:
       
  1487                 return DRV_RATE_MASK_1_BARKER |
       
  1488                        DRV_RATE_MASK_2_BARKER |
       
  1489                        DRV_RATE_MASK_5_5_CCK |
       
  1490                        DRV_RATE_MASK_11_CCK |
       
  1491                        DRV_RATE_MASK_6_OFDM |
       
  1492                        DRV_RATE_MASK_9_OFDM |
       
  1493                        DRV_RATE_MASK_12_OFDM |
       
  1494                        DRV_RATE_MASK_18_OFDM |
       
  1495                        DRV_RATE_MASK_24_OFDM |
       
  1496                        DRV_RATE_MASK_36_OFDM;
       
  1497 
       
  1498             case SUPPORTED_RATE_SET_UP_TO_48:
       
  1499                 return DRV_RATE_MASK_1_BARKER |
       
  1500                        DRV_RATE_MASK_2_BARKER |
       
  1501                        DRV_RATE_MASK_5_5_CCK |
       
  1502                        DRV_RATE_MASK_11_CCK |
       
  1503                        DRV_RATE_MASK_6_OFDM |
       
  1504                        DRV_RATE_MASK_9_OFDM |
       
  1505                        DRV_RATE_MASK_12_OFDM |
       
  1506                        DRV_RATE_MASK_18_OFDM |
       
  1507                        DRV_RATE_MASK_24_OFDM |
       
  1508                        DRV_RATE_MASK_36_OFDM |
       
  1509                        DRV_RATE_MASK_48_OFDM;
       
  1510 
       
  1511             case SUPPORTED_RATE_SET_UP_TO_54:
       
  1512                 return DRV_RATE_MASK_1_BARKER |
       
  1513                        DRV_RATE_MASK_2_BARKER |
       
  1514                        DRV_RATE_MASK_5_5_CCK |
       
  1515                        DRV_RATE_MASK_11_CCK |
       
  1516                        DRV_RATE_MASK_6_OFDM |
       
  1517                        DRV_RATE_MASK_9_OFDM |
       
  1518                        DRV_RATE_MASK_12_OFDM |
       
  1519                        DRV_RATE_MASK_18_OFDM |
       
  1520                        DRV_RATE_MASK_24_OFDM |
       
  1521                        DRV_RATE_MASK_36_OFDM |
       
  1522                        DRV_RATE_MASK_48_OFDM |
       
  1523                        DRV_RATE_MASK_54_OFDM;
       
  1524 
       
  1525             case SUPPORTED_RATE_SET_ALL:
       
  1526                 return DRV_RATE_MASK_1_BARKER |
       
  1527                        DRV_RATE_MASK_2_BARKER |
       
  1528                        DRV_RATE_MASK_5_5_CCK |
       
  1529                        DRV_RATE_MASK_11_CCK |
       
  1530                        DRV_RATE_MASK_22_PBCC |
       
  1531                        DRV_RATE_MASK_6_OFDM |
       
  1532                        DRV_RATE_MASK_9_OFDM |
       
  1533                        DRV_RATE_MASK_12_OFDM |
       
  1534                        DRV_RATE_MASK_18_OFDM |
       
  1535                        DRV_RATE_MASK_24_OFDM |
       
  1536                        DRV_RATE_MASK_36_OFDM |
       
  1537                        DRV_RATE_MASK_48_OFDM |
       
  1538                        DRV_RATE_MASK_54_OFDM;
       
  1539 
       
  1540             case SUPPORTED_RATE_SET_ALL_OFDM:
       
  1541                 return DRV_RATE_MASK_6_OFDM |
       
  1542                        DRV_RATE_MASK_9_OFDM |
       
  1543                        DRV_RATE_MASK_12_OFDM |
       
  1544                        DRV_RATE_MASK_18_OFDM |
       
  1545                        DRV_RATE_MASK_24_OFDM |
       
  1546                        DRV_RATE_MASK_36_OFDM |
       
  1547                        DRV_RATE_MASK_48_OFDM |
       
  1548                        DRV_RATE_MASK_54_OFDM;
       
  1549                        
       
  1550             case SUPPORTED_RATE_SET_ALL_MCS_RATES:
       
  1551                 return DRV_RATE_MASK_MCS_0_OFDM |
       
  1552                        DRV_RATE_MASK_MCS_1_OFDM |
       
  1553                        DRV_RATE_MASK_MCS_2_OFDM |
       
  1554                        DRV_RATE_MASK_MCS_3_OFDM |
       
  1555                        DRV_RATE_MASK_MCS_4_OFDM |
       
  1556                        DRV_RATE_MASK_MCS_5_OFDM |
       
  1557                        DRV_RATE_MASK_MCS_6_OFDM |
       
  1558                        DRV_RATE_MASK_MCS_7_OFDM |
       
  1559                        DRV_RATE_MASK_1_BARKER |
       
  1560                        DRV_RATE_MASK_2_BARKER |
       
  1561                        DRV_RATE_MASK_5_5_CCK |
       
  1562                        DRV_RATE_MASK_11_CCK |
       
  1563                        DRV_RATE_MASK_22_PBCC |
       
  1564                        DRV_RATE_MASK_6_OFDM |
       
  1565                        DRV_RATE_MASK_9_OFDM |
       
  1566                        DRV_RATE_MASK_12_OFDM |
       
  1567                        DRV_RATE_MASK_18_OFDM |
       
  1568                        DRV_RATE_MASK_24_OFDM |
       
  1569                        DRV_RATE_MASK_36_OFDM |
       
  1570                        DRV_RATE_MASK_48_OFDM |
       
  1571                        DRV_RATE_MASK_54_OFDM;
       
  1572 
       
  1573             default:
       
  1574                 return DRV_RATE_MASK_1_BARKER |
       
  1575                        DRV_RATE_MASK_2_BARKER |
       
  1576                        DRV_RATE_MASK_5_5_CCK |
       
  1577                        DRV_RATE_MASK_11_CCK |
       
  1578                        DRV_RATE_MASK_22_PBCC |
       
  1579                        DRV_RATE_MASK_6_OFDM |
       
  1580                        DRV_RATE_MASK_9_OFDM |
       
  1581                        DRV_RATE_MASK_12_OFDM |
       
  1582                        DRV_RATE_MASK_18_OFDM |
       
  1583                        DRV_RATE_MASK_24_OFDM |
       
  1584                        DRV_RATE_MASK_36_OFDM |
       
  1585                        DRV_RATE_MASK_48_OFDM |
       
  1586                        DRV_RATE_MASK_54_OFDM;
       
  1587         }
       
  1588     }
       
  1589     else
       
  1590     {
       
  1591         switch (eSupportedRateSet)
       
  1592         {
       
  1593             case SUPPORTED_RATE_SET_UP_TO_18:
       
  1594                 return DRV_RATE_MASK_6_OFDM | 
       
  1595                        DRV_RATE_MASK_9_OFDM | 
       
  1596                        DRV_RATE_MASK_12_OFDM | 
       
  1597                        DRV_RATE_MASK_18_OFDM;
       
  1598 
       
  1599             case SUPPORTED_RATE_SET_UP_TO_24:
       
  1600                 return DRV_RATE_MASK_6_OFDM |
       
  1601                        DRV_RATE_MASK_9_OFDM |
       
  1602                        DRV_RATE_MASK_12_OFDM |
       
  1603                        DRV_RATE_MASK_18_OFDM |
       
  1604                        DRV_RATE_MASK_24_OFDM;
       
  1605 
       
  1606             case SUPPORTED_RATE_SET_UP_TO_36:
       
  1607                 return DRV_RATE_MASK_6_OFDM |
       
  1608                        DRV_RATE_MASK_9_OFDM |
       
  1609                        DRV_RATE_MASK_12_OFDM |
       
  1610                        DRV_RATE_MASK_18_OFDM |
       
  1611                        DRV_RATE_MASK_24_OFDM |
       
  1612                        DRV_RATE_MASK_36_OFDM;
       
  1613 
       
  1614             case SUPPORTED_RATE_SET_UP_TO_48:
       
  1615                 return DRV_RATE_MASK_6_OFDM |
       
  1616                        DRV_RATE_MASK_9_OFDM |
       
  1617                        DRV_RATE_MASK_12_OFDM |
       
  1618                        DRV_RATE_MASK_18_OFDM |
       
  1619                        DRV_RATE_MASK_24_OFDM |
       
  1620                        DRV_RATE_MASK_36_OFDM |
       
  1621                        DRV_RATE_MASK_48_OFDM;
       
  1622 
       
  1623             case SUPPORTED_RATE_SET_UP_TO_54:
       
  1624                 return DRV_RATE_MASK_6_OFDM |
       
  1625                        DRV_RATE_MASK_9_OFDM |
       
  1626                        DRV_RATE_MASK_12_OFDM |
       
  1627                        DRV_RATE_MASK_18_OFDM |
       
  1628                        DRV_RATE_MASK_24_OFDM |
       
  1629                        DRV_RATE_MASK_36_OFDM |
       
  1630                        DRV_RATE_MASK_48_OFDM |
       
  1631                        DRV_RATE_MASK_54_OFDM;
       
  1632                        
       
  1633             case SUPPORTED_RATE_SET_ALL:
       
  1634             case SUPPORTED_RATE_SET_ALL_OFDM:
       
  1635                 return DRV_RATE_MASK_6_OFDM |
       
  1636                        DRV_RATE_MASK_9_OFDM |
       
  1637                        DRV_RATE_MASK_12_OFDM |
       
  1638                        DRV_RATE_MASK_18_OFDM |
       
  1639                        DRV_RATE_MASK_24_OFDM |
       
  1640                        DRV_RATE_MASK_36_OFDM |
       
  1641                        DRV_RATE_MASK_48_OFDM |
       
  1642                        DRV_RATE_MASK_54_OFDM;
       
  1643                        
       
  1644             case SUPPORTED_RATE_SET_ALL_MCS_RATES:
       
  1645                 return DRV_RATE_MASK_MCS_0_OFDM |
       
  1646                        DRV_RATE_MASK_MCS_1_OFDM |
       
  1647                        DRV_RATE_MASK_MCS_2_OFDM |
       
  1648                        DRV_RATE_MASK_MCS_3_OFDM |
       
  1649                        DRV_RATE_MASK_MCS_4_OFDM |
       
  1650                        DRV_RATE_MASK_MCS_5_OFDM |
       
  1651                        DRV_RATE_MASK_MCS_6_OFDM |
       
  1652                        DRV_RATE_MASK_MCS_7_OFDM |
       
  1653                        DRV_RATE_MASK_6_OFDM |
       
  1654                        DRV_RATE_MASK_9_OFDM |
       
  1655                        DRV_RATE_MASK_12_OFDM |
       
  1656                        DRV_RATE_MASK_18_OFDM |
       
  1657                        DRV_RATE_MASK_24_OFDM |
       
  1658                        DRV_RATE_MASK_36_OFDM |
       
  1659                        DRV_RATE_MASK_48_OFDM |
       
  1660                        DRV_RATE_MASK_54_OFDM;
       
  1661 
       
  1662             default:
       
  1663                 return DRV_RATE_MASK_6_OFDM |
       
  1664                        DRV_RATE_MASK_9_OFDM |
       
  1665                        DRV_RATE_MASK_12_OFDM |
       
  1666                        DRV_RATE_MASK_18_OFDM |
       
  1667                        DRV_RATE_MASK_24_OFDM |
       
  1668                        DRV_RATE_MASK_36_OFDM |
       
  1669                        DRV_RATE_MASK_48_OFDM |
       
  1670                        DRV_RATE_MASK_54_OFDM;
       
  1671         }
       
  1672     }
       
  1673 }
       
  1674 
       
  1675 TI_STATUS rate_ValidateVsBand (TI_UINT32 *pSupportedMask, TI_UINT32 *pBasicMask, TI_BOOL bDot11a)
       
  1676 {
       
  1677     if (bDot11a)
       
  1678     {
       
  1679         *pSupportedMask &= ~
       
  1680             (
       
  1681                 DRV_RATE_MASK_1_BARKER |
       
  1682                 DRV_RATE_MASK_2_BARKER |
       
  1683                 DRV_RATE_MASK_5_5_CCK |
       
  1684                 DRV_RATE_MASK_11_CCK |
       
  1685                 DRV_RATE_MASK_22_PBCC
       
  1686             );
       
  1687     }
       
  1688 
       
  1689     *pBasicMask &= *pSupportedMask;
       
  1690 
       
  1691     if (*pBasicMask == 0)
       
  1692     {
       
  1693         if (bDot11a)
       
  1694         {
       
  1695             *pBasicMask = DRV_RATE_MASK_6_OFDM | DRV_RATE_MASK_12_OFDM | DRV_RATE_MASK_24_OFDM;
       
  1696         }
       
  1697         else
       
  1698         {
       
  1699             *pBasicMask = DRV_RATE_MASK_1_BARKER | DRV_RATE_MASK_2_BARKER;
       
  1700         }
       
  1701     }
       
  1702 
       
  1703     return TI_OK;
       
  1704 }
       
  1705 
       
  1706 /*-----------------------------------------------------------------------------
       
  1707 Routine Name:    RateNumberToHost
       
  1708 Routine Description:
       
  1709 Arguments:
       
  1710 Return Value:    None
       
  1711 -----------------------------------------------------------------------------*/
       
  1712 ERate rate_NumberToDrv (TI_UINT32 rate)
       
  1713 {
       
  1714     switch (rate)
       
  1715     {
       
  1716         case 0x1:
       
  1717             return DRV_RATE_1M;
       
  1718 
       
  1719         case 0x2:
       
  1720             return DRV_RATE_2M;
       
  1721 
       
  1722         case 0x5:
       
  1723             return DRV_RATE_5_5M;
       
  1724 
       
  1725         case 0xB:
       
  1726             return DRV_RATE_11M;
       
  1727 
       
  1728         case 0x16:
       
  1729             return DRV_RATE_22M;
       
  1730 
       
  1731         case 0x6:
       
  1732             return DRV_RATE_6M;
       
  1733 
       
  1734         case 0x9:
       
  1735             return DRV_RATE_9M;
       
  1736 
       
  1737         case 0xC:
       
  1738             return DRV_RATE_12M;
       
  1739 
       
  1740         case 0x12:
       
  1741             return DRV_RATE_18M;
       
  1742 
       
  1743         case 0x18:
       
  1744             return DRV_RATE_24M;
       
  1745 
       
  1746         case 0x24:
       
  1747             return DRV_RATE_36M;
       
  1748 
       
  1749         case 0x30:
       
  1750             return DRV_RATE_48M;
       
  1751 
       
  1752         case 0x36:
       
  1753             return DRV_RATE_54M;
       
  1754 
       
  1755         /* MCS rate */
       
  1756         case 0x7:
       
  1757             return DRV_RATE_MCS_0;
       
  1758 
       
  1759         case 0xD:
       
  1760             return DRV_RATE_MCS_1;
       
  1761 
       
  1762         case 0x13:
       
  1763             return DRV_RATE_MCS_2;
       
  1764 
       
  1765         case 0x1A:
       
  1766             return DRV_RATE_MCS_3;
       
  1767 
       
  1768         case 0x27:
       
  1769             return DRV_RATE_MCS_4;
       
  1770 
       
  1771         case 0x34:
       
  1772             return DRV_RATE_MCS_5;
       
  1773 
       
  1774         case 0x3A:
       
  1775             return DRV_RATE_MCS_6;
       
  1776 
       
  1777         case 0x41:
       
  1778             return DRV_RATE_MCS_7;
       
  1779 
       
  1780         default:
       
  1781             return DRV_RATE_6M;
       
  1782     }
       
  1783 }
       
  1784 
       
  1785 TI_UINT32 rate_GetDrvBitmapForDefaultBasicSet ()
       
  1786 {
       
  1787     return rate_BasicToDrvBitmap (BASIC_RATE_SET_1_2_5_5_11, TI_FALSE);
       
  1788 }
       
  1789 
       
  1790 TI_UINT32 rate_GetDrvBitmapForDefaultSupporteSet ()
       
  1791 {
       
  1792     return rate_SupportedToDrvBitmap (SUPPORTED_RATE_SET_1_2_5_5_11, TI_FALSE);
       
  1793 }
       
  1794